Смотри, как бесплатно скачать роботов
Ищи нас в Telegram!
Ставь лайки и следи за новостями
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Оцени его работу в терминале MetaTrader 5
Waddah Attar Win - эксперт для MetaTrader 5
- Опубликовал:
- Vladimir Karputov
- Просмотров:
- 3160
- Рейтинг:
- Опубликован:
- 2017.01.10 08:21
- Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Автор идеи — Ahmad Waddah Attar, автор кода mq5 — barabashkakvn.
Советник работает с отложенными ордерами Buy Limit (BuyLimit) и Sell Limit (SellLimit). При этом, когда цена подходит очень близко к отложенному ордеру:
if((m_symbol.Ask()-LastBuyLimitPrice)<=5*m_symbol.Point()) // FirstLot очень близко
m_trade.BuyLimit(LastBuyLimitLot+IncLot,m_symbol.NormalizePrice(LastBuyLimitPrice-ExtStep));
if((LastSellLimitPrice-m_symbol.Bid())<=5*m_symbol.Point()) // FirstLot очень близко
m_trade.SellLimit(LastBuyLimitLot+IncLot,m_symbol.NormalizePrice(LastSellLimitPrice+ExtStep));
m_trade.BuyLimit(LastBuyLimitLot+IncLot,m_symbol.NormalizePrice(LastBuyLimitPrice-ExtStep));
if((LastSellLimitPrice-m_symbol.Bid())<=5*m_symbol.Point()) // FirstLot очень близко
m_trade.SellLimit(LastBuyLimitLot+IncLot,m_symbol.NormalizePrice(LastSellLimitPrice+ExtStep));
размещаем ещё один отложенный ордер.
Для получения последней цены размещённого отложенного ордера используем OnTradeTransaction():
//+------------------------------------------------------------------+
//| TradeTransaction function |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
const MqlTradeRequest &request,
const MqlTradeResult &result)
{
//--- получить тип сделки как значение перечисления
ENUM_TRADE_TRANSACTION_TYPE type=trans.type;
Print(EnumToString(type));
//--- если сделка — результат добавления сделки в истории
if(type==TRADE_TRANSACTION_ORDER_ADD)
{
long order_type =0;
double order_price =0.0;
double order_volume =0.0;
string order_symbol ="";
long order_magic =0;
if(OrderSelect(trans.order)) // выбрать отложенные ордеры
{
order_type=OrderGetInteger(ORDER_TYPE);
order_price=OrderGetDouble(ORDER_PRICE_OPEN);
order_volume=OrderGetDouble(ORDER_VOLUME_INITIAL);
order_symbol=OrderGetString(ORDER_SYMBOL);
order_magic=OrderGetInteger(ORDER_MAGIC);
}
else
return;
if(order_symbol==m_symbol.Name() && order_magic==m_magic)
{
if(order_type==ORDER_TYPE_BUY_LIMIT)
{
LastBuyLimitPrice=order_price;
LastBuyLimitLot=order_volume;
}
if(order_type==ORDER_TYPE_SELL_LIMIT)
{
LastSellLimitPrice=order_price;
LastSellLimitlLot=order_volume;
}
}
}
}
//| TradeTransaction function |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
const MqlTradeRequest &request,
const MqlTradeResult &result)
{
//--- получить тип сделки как значение перечисления
ENUM_TRADE_TRANSACTION_TYPE type=trans.type;
Print(EnumToString(type));
//--- если сделка — результат добавления сделки в истории
if(type==TRADE_TRANSACTION_ORDER_ADD)
{
long order_type =0;
double order_price =0.0;
double order_volume =0.0;
string order_symbol ="";
long order_magic =0;
if(OrderSelect(trans.order)) // выбрать отложенные ордеры
{
order_type=OrderGetInteger(ORDER_TYPE);
order_price=OrderGetDouble(ORDER_PRICE_OPEN);
order_volume=OrderGetDouble(ORDER_VOLUME_INITIAL);
order_symbol=OrderGetString(ORDER_SYMBOL);
order_magic=OrderGetInteger(ORDER_MAGIC);
}
else
return;
if(order_symbol==m_symbol.Name() && order_magic==m_magic)
{
if(order_type==ORDER_TYPE_BUY_LIMIT)
{
LastBuyLimitPrice=order_price;
LastBuyLimitLot=order_volume;
}
if(order_type==ORDER_TYPE_SELL_LIMIT)
{
LastSellLimitPrice=order_price;
LastSellLimitlLot=order_volume;
}
}
}
}
Тестирование на EURUSD,M15 с 2015.06.07 по 2016.12.31 — режим генерации тиков "Все тики", начальный депозит 10000:
e-TurboFx
Проводится анализ баров на наличие N баров одного типа, идущих подряд.
MA ReverseТорговля по Moving Average. Проверка на достаточность средств.
up3x1_premium_v2M
Две iMA на текущем периоде и одна на PERIOD_D1.
Bull vs MedvedСоветник принимает торговые решения на простых комбинациях свечек. Рассчитан на работу на периоде H4.