Рекомендуемый ДЦ - Forex4you !

И так, продолжим изучать язык MQL4: сегодня мы разберемся как создавать советники форекс для MT4, на основе пользовательских индикаторов Metatrader 4. Для примера, попробуем создать советник форекс на основе индикаторов форекс по "Стратегии форекс «Линия баланса».

Создадим новый советник «expert2» и скопируем в него наши функции GetLot() и NewOrder().

Ордера в этой стратегии форекс закрываются по стоп-лоссу и поэтому функция CloseOrder() нам не нужна. Для начала необходимо изучить торговую стратегию. В ней сказано что торговля ведется только отложенными ордерами Buy Stop и Sell Stop.

Перепишем нашу функцию NewOrder() так, чтобы она умела открывать такие типы ордеров Forex — т.е. отложенные ордера Buy Stop и Sell Stop:

int NewOrder(int Cmd,double Lot,double PR=0,double TP=0,double SL=0)
{while(!IsTradeAllowed()) Sleep(100);
if(Cmd==OP_BUY)
{PR=Ask;
if(TP==0 && TakeProfit>0) TP=Ask+TakeProfit*Point;
if(SL==0 && StopLoss>0) SL=Ask-StopLoss*Point;}
if(Cmd==OP_SELL)
{PR=Bid;
if(TP==0 && TakeProfit>0) TP=Bid-TakeProfit*Point;
if(SL==0 && StopLoss>0) SL=Bid+StopLoss*Point;}
int tic=OrderSend(Symbol(),Cmd,Lot,PR,3,SL,TP,,0,0,CLR_NONE);
if(tic<0) Print(»Ошибка открытия ордера: ",GetLastError());
return(tic);}

Мы вынесли переменные для цены, тейк-профита, стоп-лосса в параметры функции и указали им значение по умолчанию «0». Теперь эту функцию можно вызывать как и раньше с 2 параметрами, а можно с указанием дополнительных параметров. Это нам пригодится для открытия отложенных ордеров форекс.

Кроме того в условии расчета тейк-профита и стоп-лосса мы проверяем эти параметры на соответствие «0». Это поможет избежать в дальнейшем ситуации когда мы передаем эти параметры, а функция их пересчитывает. (далее…)