Как написать "доливку" ?

 
Например  поступил сигнал Бай... советник открыл ордер, сигнал закончился.., но ордер еще открыт...  через какоето время поступает новый сигнал Бай...  И как сделать чтобы советник открыл еще 1 ордер на Бай ?
 
Shniperson >>:
Например поступил сигнал Бай... советник открыл ордер, сигнал закончился.., но ордер еще открыт... через какоето время поступает новый сигнал Бай... И как сделать чтобы советник открыл еще 1 ордер на Бай ?

Внимательно прочитать справку в MetaEditor на предмет ознакомления с функцией OrderSend()

 

В OrderSend()  ничего полезного не нашел...

в начале кода (пользуюсь шаблоном)  стоит

total=OrdersTotal();
if(total<1)//проверка количества ордеров
{.....

Полагаю это для того, чтобы не открывалось сразу несколько ордеров, в том числе и по 1му сигналу....   Пробовал написать что-то вроду функции доливки

где  

if(total=1)  && OrderProfit<-25&&(сигналы)  ....   Для того, чтобы он открыл еще 1 ордер, но уже по новому сигналу (в ту же сторону)... но чтото ошибок много....   (в коде я ни бум бум)  .. Может кто подскажет как это сделать?

 
Shniperson писал(а) >>
Например поступил сигнал Бай... советник открыл ордер, сигнал закончился.., но ордер еще открыт... через какоето время поступает новый сигнал Бай... И как сделать чтобы советник открыл еще 1 ордер на Бай ?

Попробуйте для второго ордера другой магик задать

Тогда условием открытия второго ордера (помимо самого сигнала) будет:

1.Наличие одной открытой позиции по первому сигналу (магик 1)

2. Отсутствие открытой позиции по второму сигналу (магик 2)

 
Зачем плодить магики?

Не проще ли задать внешним параметром количество допустимых доливок и в случае поступления нового сигнала проверять

разность между числом открытых позиций (по данному символу с данным магиком) и количеством допустимых доливок?

Если значение разности < 1, то открытие доливочной разрешаем.

 
Открываем ордер, если есть сигнал, если количество ордеров меньше максимального количества задаваемого внешней переменной и если последний открытый ордер в профите.
 
khorosh >>:
Открываем ордер, если есть сигнал, если количество ордеров меньше максимального количества задаваемого внешней переменной и если последний открытый ордер в профите.

тогда получится, что несколько ордеров откроется на одном сигнале, а нужно, чтобы открывался другой ордер на следующем сигнале. Поэтому на конкретном баре(сигнальном) открывать один ордер, делать проверку открытия и не возможности открытия других ордеров на этом баре. Конечно, число открытых ордеров нужно ограничить

 
m_a_sim >>:

тогда получится, что несколько ордеров откроется на одном сигнале, а нужно, чтобы открывался другой ордер на следующем сигнале. Поэтому на конкретном баре(сигнальном) открывать один ордер, делать проверку открытия и не возможности открытия других ордеров на этом баре. Конечно, число открытых ордеров нужно ограничить

А что в этом плохого, если бар пунктов 100. Первый ордер получил профит 50 пунктов открываем второй ордер. Если заданный профит последнего ордера не достигнут, то второй ордер на этом баре не откроется.

 

В коменты ордера записывать время бара на котором был сигнал,

потом извлекать и сравнивать с временем открытия ордера.

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