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

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

18

ObjectDelete(0, name);

}

}

}

//+–+

//| Получение названия паттерна |

//+–+

string GetPatternName(PATTERN_TYPE type)

{

switch(type)

{

case PATTERN_GARTLEY: return "Gartley";

case PATTERN_BUTTERFLY: return "Butterfly";

case PATTERN_CRAB: return "Crab";

case PATTERN_BAT: return "Bat";

case PATTERN_SHARK: return "Shark";

case PATTERN_CYPHER: return "Cypher";

default: return "Unknown";

}

}

//+–+

//| Открытие сделки по паттерну |

//+–+

void OpenPatternTrade(const PatternPoints &pattern)

{

// Получаем текущую цену

MqlTick lastTick;

if(!SymbolInfoTick(_Symbol, lastTick)) return;

// Определяем направление сделки

ENUM_ORDER_TYPE orderType;

double entryPrice;

double slPrice, tpPrice;

if(pattern.direction == 1) // Бычий паттерн – покупаем

{

orderType = ORDER_TYPE_BUY;

entryPrice = lastTick.ask;

// Стоп-лосс ниже точки D

slPrice = pattern.D – StopLoss_Points * _Point;

// Тейк-профит на уровне точки B или A (в зависимости от паттерна)

if(pattern.type == PATTERN_GARTLEY || pattern.type == PATTERN_BAT)

tpPrice = entryPrice + (pattern.B – pattern.D);

else

tpPrice = entryPrice + TakeProfit_Points * _Point;

}

else // Медвежий паттерн – продаем

{

orderType = ORDER_TYPE_SELL;

entryPrice = lastTick.bid;

// Стоп-лосс выше точки D

slPrice = pattern.D + StopLoss_Points * _Point;

// Тейк-профит на уровне точки B или A

if(pattern.type == PATTERN_GARTLEY || pattern.type == PATTERN_BAT)

tpPrice = entryPrice – (pattern.D – pattern.B);

else

tpPrice = entryPrice – TakeProfit_Points * _Point;

}

// Открываем сделку

MqlTradeRequest request = {};

MqlTradeResult result = {};

request.action = TRADE_ACTION_DEAL;

request.symbol = _Symbol;

request.volume = LotSize;

request.type = orderType;

request.price = entryPrice;

request.sl = slPrice;