Свой трейлинг для каждого ордера

 
Доброго времени суток! Други помогите пожалуйста, код трейлинг-стопа. К примеру по сигналу советник открывает ордер на бай, при этом советник находит мин. лоу за последние 3 бара, т.е. в советнике это номера баров 1,2,3. Разность между ценой открытия и мин. лоу и есть величина трейлинг-стопа. При этом получается для каждой сделки свой трейлинг, предполагается множество открытие сделок. Есть те кто сталкивался с такой задачей или хочет заморочится. Зарание Спасибо.
 
 
CMEPTHiK >>:
Доброго времени суток! Други помогите пожалуйста, код трейлинг-стопа. К примеру по сигналу советник открывает ордер на бай, при этом советник находит мин. лоу за последние 3 бара, т.е. в советнике это номера баров 1,2,3. Разность между ценой открытия и мин. лоу и есть величина трейлинг-стопа. При этом получается для каждой сделки свой трейлинг, предполагается множество открытие сделок. Есть те кто сталкивался с такой задачей или хочет заморочится. Зарание Спасибо.


1. Идите по всем ордерам вашего эксперта

2. Берите цену открытия, 

3. Анализируйте последние 3 бара от бара  открытия (время открытия ордера вам известно)

4. Двигайте стоплос на новое место по найденной величине.

Этот алгоритм будет немного медленным, так как вам на каждом тике надо обарбатывать 3 бара.

-------------------------------

Воторй вариант:

1. При открытии ордера создаёте глобальную переменную с именем - номер тикет+некоторый ID  вашей системы. В эту переменную кидаете найденное расстояние по 3 барам.

2. Затем в блоке движения ордеров просто читаете это значение (тикет ордера вам известен) и двигаете стоплос на нужную величину.

Этот вариант возможен сбой, если терминал завершает работу аварийно.

-------------------------------

ну и третий варинат с массивами наверно лучший из предложенных- 

всё тоже самое как и в первом варианте - но расстояния вы вычисляете только один раз в момент инициализации советника.

Идентификацию ордера и его расстояния делайте по номеру тикета. Вам прийдётся постоянно пробегать по всему массиву и искать в нём тикет нужного одрера. Если ордер не найден, то надо вычислить расстояние и занести его в массив.

--------------------------

Итого три варианта - каждый по своему удобен

Первый - по своей тупости и простоте, но медленный 

Второй - для быстрой идентификации и поиска, но возхможен сбой при аварийной выгрузке терминала

Третий - для скорости, но в нём сложность при поиске нужного тикета в массиве. 

 
я так понимаю двуймерный массив к примеру: Mas[1,100]?
 

Mas[10][100]; //для 10 ордеров имеющих 100 показателей

читай справку!

для онлайна ещё нужно сохранять данные массива и соответственно читать!

Причина обращения: