реклама
Бургер менюБургер меню

Алексей Боровков – 10 роботов для автоматической торговли на Форекс (страница 4)

18

// Закрываем BUY позицию если быстрая MA пересекла медленную сверху вниз

if(positionType == POSITION_TYPE_BUY && fastMA[0] < slowMA[0])

{

ClosePosition(i);

}

// Закрываем SELL позицию если быстрая MA пересекла медленную снизу вверх

else if(positionType == POSITION_TYPE_SELL && fastMA[0] > slowMA[0])

{

ClosePosition(i);

}

}

}

}

//+–+

//| Закрытие позиции |

//+–+

void ClosePosition(int positionIndex)

{

// Получаем информацию о позиции

ulong ticket = PositionGetTicket(positionIndex);

if(ticket <= 0) return;

// Подготовка торгового запроса

MqlTradeRequest request;

MqlTradeResult result;

ZeroMemory(request);

ZeroMemory(result);

request.action = TRADE_ACTION_DEAL;

request.position = ticket;

request.symbol = _Symbol;

request.volume = PositionGetDouble(POSITION_VOLUME);

request.magic = MagicNumber;

request.comment = "Close by signal";

// Установка цены закрытия

if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY)

{

request.price = SymbolInfoDouble(_Symbol, SYMBOL_BID);

request.type = ORDER_TYPE_SELL;

}

else

{

request.price = SymbolInfoDouble(_Symbol, SYMBOL_ASK);

request.type = ORDER_TYPE_BUY;

}

request.deviation = 10;

request.type_filling = ORDER_FILLING_FOK;

// Отправка запроса на закрытие

if(OrderSend(request, result))

{

if(result.retcode == TRADE_RETCODE_DONE)

{

Print("Позиция закрыта успешно. Тикет: ", result.order);

}

else

{

Print("Ошибка закрытия позиции. Код: ", result.retcode);

}

}

}

//+–+

//| Управление трейлинг-стопом |

//+–+

void ManageTrailingStop()

{

if(!UseTrailingStop) return;

for(int i = PositionsTotal() – 1; i >= 0; i–)