droba
Droba

 
Уровень 9

  Торгую в компаниях:


Группа "Стол заказов MQL"

Рейтинг 2146



РЕКОМЕНДУЮ



Прошу подправить трал в коде.

Есть код советника открывает ордера на пробой High (BuyStop) и Low (SellStop).
Пытаюсь сделать трал:
Buy тралится по Low при условии, что Low выше цены открытия ордера;
Sell тралится по High при условии, что High ниже цены открытия ордера.
Компелируется без ошибок, но трал не работает.

Код сова:
//+------------------------------------------------------------------+
//| High_Low.mq4 |
//| Copyright 2019, MetaQuotes Software Corp. |
//| www.mql5.com |
//+------------------------------------------------------------------+
#property copyright «Copyright 2019, MetaQuotes Software Corp.»
#property link «www.mql5.com»
#property version «1.00»
#property strict

//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
input double lot= 0.1;
input int magic = 123;

int ticket[6];

//+------------------------------------------------------------------+
//| Удаление отложенных ордеров |
//+------------------------------------------------------------------+
void DelOrder(int type=-1)
{
bool del;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic)
{
if(OrderType()==type || type==-1)
del=OrderDelete(OrderTicket());
}
}
}
}
//+------------------------------------------------------------------+
//| Подсчет ордеров по типу |
//+------------------------------------------------------------------+
int CountOrders(int type=-1)
{
int count=0;
for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic)
{
if(OrderType()==type || type==-1)
count++;
}
}
}
return(count);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
int r=0;
CountOrders();
// FindFractals();
if(NormalizeDouble(iHigh(_Symbol, _Period, 1), Digits) < Ask /*&& CountOrders(OP_BUYSTOP) < 1*/ && CountOrders(OP_BUY) < 1) {
// DelOrder(OP_SELLSTOP);
r = OrderSend(Symbol(),
OP_BUY,
NormalizeDouble(lot, 2),
Ask,
30,
0, //SL
0, //TP
«BUY High_Low»,
magic,
0,
Blue); // BUY
if(ticket[OP_BUY] >= 0 && OrderSelect(ticket[OP_BUY], SELECT_BY_TICKET)
&& OrderStopLoss() == NormalizeDouble(iLow(_Symbol, _Period, 1), Digits)
&& Ask > NormalizeDouble(iLow(_Symbol, _Period, 1), Digits)
&& OrderOpenPrice() < NormalizeDouble(iLow(_Symbol, _Period, 1), Digits)) //trail buy
OrderModify(ticket[OP_BUY],
OrderOpenPrice(),
NormalizeDouble(iLow(_Symbol, _Period, 1), Digits),
OrderTakeProfit(),
OrderExpiration());
}
else if(NormalizeDouble(iLow(_Symbol, _Period, 1), Digits) > Bid /*&& CountOrders(OP_SELLSTOP) < 1*/ && CountOrders(OP_SELL) < 1) {
// DelOrder(OP_BUYSTOP);
r = OrderSend(Symbol(),
OP_SELL,
NormalizeDouble(lot, 2),
Bid,
30,
0, //SL
0, //TP
«SELL High_Low»,
magic,
0,
Red); // SELL
if(ticket[OP_SELL] >= 0 && OrderSelect(ticket[OP_SELL], SELECT_BY_TICKET)
&& OrderStopLoss() == NormalizeDouble(iHigh(_Symbol, _Period, 1), Digits)
&& Bid < NormalizeDouble(iHigh(_Symbol, _Period, 1), Digits)
&& OrderOpenPrice() > NormalizeDouble(iHigh(_Symbol, _Period, 1), Digits)) //trail sell
OrderModify(ticket[OP_SELL],
OrderOpenPrice(),
NormalizeDouble(iHigh(_Symbol, _Period, 1), Digits),
OrderTakeProfit(),
OrderExpiration());
}
}
//+------------------------------------------------------------------+
  • 0
  • Просмотров: 3153
  • 12 ноября 2020, 19:50
  • droba
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Советник золотой крест
Следующая запись в группе  
Советник по Индикатору Зон
12 ноября 2020
13 ноября 2020

Брокер для ваших роботов, 15 лет на рынке

Комментарии (7)

+
0
найдите поручителя и с нуля напишу.
avatar

  35  AM2 Сообщений: 16250 - Андрей

  • 12 ноября 2020, 20:23
+
0
Ребята ищу поручителя для пробойного советника.
avatar

  9  droba Автор Сообщений: 239 - Droba

  • 13 ноября 2020, 07:51
+
0
Выступаю поручителем. :) 
avatar

  18  GAWroch Сообщений: 84 - Вячеслав

  • 13 ноября 2020, 08:56
+
0
Хочу заметить при написании советника, в рынке может быть максимально только два разнонаправленных ордера (Buy и Sell)
avatar

  9  droba Автор Сообщений: 239 - Droba

  • 13 ноября 2020, 14:51
+
0
на 19-е
avatar

  35  AM2 Сообщений: 16250 - Андрей

  • 13 ноября 2020, 18:34
+
0
avatar

  35  AM2 Сообщений: 16250 - Андрей

  • 14 ноября 2020, 09:59
+
0
Андрей, спасибо, всё работает. КЛАСС!!!
avatar

  9  droba Автор Сообщений: 239 - Droba

  • 16 ноября 2020, 08:54

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий