Нарисовать стрелочку в произвольном месте

Подробнее
9 года 5 мес. назад #193 от 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
Добрый день.

Вариантов решения можно придумать много.

Например, можно создать статический массив (StaticArraySet). При получении информации о новой сделке устанавливать в элементе с индексом BarCount-1 флаг. Способ очень простой, только возникнут проблемы при переключении с одного таймфрейма на другой, не более 1 сделки на свече и так далее.

Универсальный способ - вести лог сделок где-то в файле. Можно в пользовательской таблице амишарпа, которая скидывается на диск при каждом изменении. Тогда можно на каждой итерации сканировать эту таблицу и для каждой сделки, находящейся в ней, получать дату/время, преобразовывать их в TimeDate формат( функция _DT()) и через Lookup находить свечу, на которой сделка проистекла. Остальное - очевидно.

Второй подход прекрасно работает в реальном времени, тормозов нет.

Вложения:
Последнее редактирование: 9 года 5 мес. назад пользователем admin.
Спасибо сказали: AlexLan, magni2de

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 5 мес. назад #195 от magni2de
Спасибо, не знал про StaticArray. Мне как раз и нужно было что-то подобное. Но решение с внешним файлом конечно же универсальнее, только кодировать надо будет больше.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Подробнее
9 года 5 мес. назад #220 от magni2de

admin пишет: Например, можно создать статический массив (StaticArraySet).

Не нашел такой команды по работе с массивами. Может надо пользоваться StaticVarSet? Только не понятно как тогда работать с элементами массива. В примерах есть:
// 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
Да, все именно так. StaticVarSet работает как с числами, так и с массивами

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Модераторы: admin