Нарисовать стрелочку в произвольном месте
Меньше
Подробнее
- Сообщений: 5
- Спасибо получено: 1
9 года 5 мес. назад #193
от magni2de
magni2de создал тему: Нарисовать стрелочку в произвольном месте
Хочу кроме стандартных сигналов на покупку и продажу и стрелочек по ним, которые рассчитываются в ами при каждом изменении ситуации, рисовать еще и свои стрелки с реальными ценами, по которым совершилась сделка в квике. Цены получаю из квика, с этим проблем нет, но вот тут засада, если я сохраняю их в какой-то массив, то в следующий раз этот массив опять обнуляется и ничего не рисуется.
Как обмануть амиброкер?
//Стандартно рассчитанные стрелочки
PlotShapes( IIf( Buy, shapeSmallUpTriangle, shapeNone ), 5, 0, BuyPrice, 0 );
PlotShapes( IIf( Sell, shapeHollowDownTriangle, shapeNone ), 4, 0, SellPrice, 0 );
//Здесь хотелось бы иметь мои стрелочки
PlotShapes( IIf( quik_Buy, shapeUpArrow, shapeNone ), 5, 0, quik_BuyPrice, 0 );
PlotShapes( IIf( quik_Sell, shapeDownArrow, shapeNone ), 4, 0, quik_SellPrice, 0 );
Как обмануть амиброкер?
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
9 года 5 мес. назад - 9 года 5 мес. назад #194
от admin
admin ответил в теме Нарисовать стрелочку в произвольном месте
Добрый день.
Вариантов решения можно придумать много.
Например, можно создать статический массив (StaticArraySet). При получении информации о новой сделке устанавливать в элементе с индексом BarCount-1 флаг. Способ очень простой, только возникнут проблемы при переключении с одного таймфрейма на другой, не более 1 сделки на свече и так далее.
Универсальный способ - вести лог сделок где-то в файле. Можно в пользовательской таблице амишарпа, которая скидывается на диск при каждом изменении. Тогда можно на каждой итерации сканировать эту таблицу и для каждой сделки, находящейся в ней, получать дату/время, преобразовывать их в TimeDate формат( функция _DT()) и через Lookup находить свечу, на которой сделка проистекла. Остальное - очевидно.
Второй подход прекрасно работает в реальном времени, тормозов нет.
Вариантов решения можно придумать много.
Например, можно создать статический массив (StaticArraySet). При получении информации о новой сделке устанавливать в элементе с индексом BarCount-1 флаг. Способ очень простой, только возникнут проблемы при переключении с одного таймфрейма на другой, не более 1 сделки на свече и так далее.
Универсальный способ - вести лог сделок где-то в файле. Можно в пользовательской таблице амишарпа, которая скидывается на диск при каждом изменении. Тогда можно на каждой итерации сканировать эту таблицу и для каждой сделки, находящейся в ней, получать дату/время, преобразовывать их в TimeDate формат( функция _DT()) и через Lookup находить свечу, на которой сделка проистекла. Остальное - очевидно.
Второй подход прекрасно работает в реальном времени, тормозов нет.
Последнее редактирование: 9 года 5 мес. назад пользователем admin.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Меньше
Подробнее
- Сообщений: 5
- Спасибо получено: 1
9 года 5 мес. назад #195
от magni2de
magni2de ответил в теме Нарисовать стрелочку в произвольном месте
Спасибо, не знал про StaticArray. Мне как раз и нужно было что-то подобное. Но решение с внешним файлом конечно же универсальнее, только кодировать надо будет больше.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Меньше
Подробнее
- Сообщений: 5
- Спасибо получено: 1
9 года 5 мес. назад #220
от magni2de
То есть получается, что если я хочу записать число в десятый элемент массива, то я должен сделать так?
magni2de ответил в теме Нарисовать стрелочку в произвольном месте
Не нашел такой команды по работе с массивами. Может надо пользоваться StaticVarSet? Только не понятно как тогда работать с элементами массива. В примерах есть:admin пишет: Например, можно создать статический массив (StaticArraySet).
// start of the formula:
temp = StaticVarGet("mystaticarray" );
// now perform all necessary calculations using temp variable
temp = Nz(temp) + C/2;
...
// at the end of the formula store to static
StaticVarSet("mystaticarray", temp );
То есть получается, что если я хочу записать число в десятый элемент массива, то я должен сделать так?
//Считываем массив во временный массив
temp = StaticVarGet("mystaticarray" );
//Записываем в десятый элемент нужное мне число
temp[9] = 1000;
//Сохраняем назад
StaticVarSet("mystaticarray", temp );
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
9 года 5 мес. назад #221
от admin
admin ответил в теме Нарисовать стрелочку в произвольном месте
Да, все именно так. StaticVarSet работает как с числами, так и с массивами
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
Модераторы: admin