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

Рейтинг 2087



РЕКОМЕНДУЮ




Лучшее от ilyask



Трендовый советник Комментариев 8
2020-01-06 13:33:18Рейтинг 0

Трендовый советник

Всех с новым годом!)
Прошу написать советник.
Логика;
ПОКУПКА
1)бЫСТРАЯ МА ПЕРЕСЕКАЕТ МЕДЛЕННУЮ ВВЕРХ
2)ПРИ ПРОБОЕ БЛИЖАЙШЕГО LOW ФРАКТАЛА ОТРЫВАЕТСЯ ПОКУПКА
ПРОДАЖА
СООТВЕТСВЕННО НАОБОРОТ
Сопровождение;
Если цена проходит после первого ордера определённое количество пунктов(вынести в настройки), при переписывании минимума(при Sell) марсимума(при buy) предыдущей свечи, открыввется усредняющий ордер, таким объемом, что в 13 пунктов перекрывает убыток по первому ордеру + 2 пункта прибыль.
Если цена движется дальше, то отркывается 3 ордер, по такому же принципу.(соответсвенно убыток 2ух ордеров) <
Будет возможность, сделайте, чтобы он мог работать в 2 направлениях одновременно.
Заранее спасибо):) 
  • +1
  • Просмотров: 3936
  • 6 января 2020, 13:33
  • ilyask
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

+
0
на 17-е
avatar

  34  AM2 Сообщений: 15878 - Андрей

  • 6 января 2020, 14:12
+
0
Хорошо, жду)
avatar

  5  ilyask Автор Сообщений: 22

  • 9 января 2020, 13:16
+
+1
Как человек нетерпеливый и любознательный, не смог дождаться версию Андрея и решил поломать себе мозги.
И так лично ни разу не сталкивавшийся с программированием, решил таки прошерстить материал по этому поводу.И вот несколько бессоных ночей спустя(4),3 донорских робота(аля понять логику), и море перелапаченной информации, удалось родить сие творение.
Андрей хочу попросить вас глянуть, почему он зачастую выдает ошибку модификации ордера (либо 130 либо 1),
А также добавьте фильтр(никак не смог сам разобраться), если на дневке образовалось бычье поглощение, с этого момента рассматриваем только покупки, если медвежье, то только продажи.
Прошу не ругать за коряво написанный код<img src='http://opentraders.ru/templates/skin/g6h/images/smilies/003.gif' alt=' :D '>&nbsp; 
<code>//+------------------------------------------------------------------+
//|                                                            3.mq4 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict


input double   Lots=0.01;     
input int      Tp =1000;    
input int      Magik=1001012;  
extern int MA_Fast_Period = 50;
extern int MA_Fast_Method = 1;
extern int MA_Fast_Price = 5;
extern int MA_Slow_Period = 150;
extern int MA_Slow_Method = 1;
extern int MA_Slow_Price = 5;
extern int Sl = 500;
extern int Slippage = 3;
extern int Step  = 600;
double price; 

double pr1=0;
double pr2=0;


//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
if ( Digits == 5)
{
Slippage *= 10;
}
return (INIT_SUCCEEDED);
}

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+

 
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
  

  
 double MA_f_1 = iMA( Symbol(),1440, MA_Fast_Period, 0, MA_Fast_Method, MA_Fast_Price, 1);
 double MA_s_2 = iMA( Symbol(),1440, MA_Slow_Period, 0, MA_Slow_Method, MA_Slow_Price, 1);
 static double Upf,Lowf;
   double Tupf=0,Tlowf=0;
   int i,k;
   for(i=1; i<5000; i++)
     {
      Tupf=iFractals(Symbol(),0,MODE_UPPER,i);
      if(Tupf>0)
         break;
     }
   for(k=1; k<5000; k++)
     {
      Tlowf=iFractals(Symbol(),0,MODE_LOWER,k);
      if(Tlowf>0)
         break;
     }
     
   if(countBuy()== 0 && Ask<Tlowf && Tupf!=Upf && MA_f_1 > MA_s_2)
   {
    if (OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,Ask-Sl*10*Point,Bid+Tp*10*Point,"",Magik,0,clrDarkBlue) < 1)
    Print ("Не удалось открыть покупку");
    }
    if(countSell()== 0 && Bid>Tupf && Tlowf!=Lowf && MA_f_1 < MA_s_2)
  {
      if (OrderSend(Symbol(),OP_SELL,Lots,Ask,Slippage,Bid+Sl*10*Point,Ask-Tp*10*Point,"",Magik,0,clrRed)< 1)
      Print("Can   not open sell");
    }
    if(countBuy()>=1)
 {   price = FindLastBuyPrice();
   if ((price-Ask)>= Step*Point&& Ask>iHigh(NULL,1440,1))
  
{
 if (OrderSend(Symbol(),OP_BUY,findorderBuy2lot(),Ask,Slippage,Ask-Sl*10*Point,0,"",Magik,0,clrDarkBlue) < 1)
    Print ("Не удалось открыть дополнительный ордер на покупку");
    ModifiOrders1();
}

}
if(countSell()>=1 )
{ 
  price = FindLastSellPrice();
     if((Bid-price)>= Step*Point&& Bid<iLow(NULL,1440,1))
{
 if (OrderSend(Symbol(),OP_SELL,findorderSell2ot(),Ask,Slippage,Bid+Sl*10*Point,0,"",Magik,0,clrRed) < 1)
    Print ("Не удалось открыть дополнительный ордер на Продажу");
 ModifiOrders2();
}

}

  }
  //+-----------------------------------------------------------------+
  double FindLastBuyPrice()
  {
  int oldticket, ticket = 0;
  double oldopenprice = 0;
  
  for (int cnt = OrdersTotal()-1;cnt>=0; cnt --)
  {
  if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
  {
  if(OrderSymbol()==Symbol() && OrderMagicNumber() ==  Magik && OrderType() ==OP_BUY)
 {
 
 oldticket = OrderTicket();
 if (oldticket > ticket)
 {
 ticket = oldticket;
 oldopenprice = OrderOpenPrice();
         }
      }
    }
  }
  return(oldopenprice);
 }
   //+-------------------------------------------------------------
   double FindLastSellPrice()
  {
  int oldticket, ticket = 0;
  double oldopenprice = 0;
  
  for (int cnt = OrdersTotal()-1;cnt>=0; cnt --)
  {
  if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
  {
  if(OrderSymbol()==Symbol() && OrderMagicNumber() ==  Magik && OrderType() ==OP_SELL)
 {
 
 oldticket = OrderTicket();
 if (oldticket > ticket)
 {
 ticket = oldticket;
 oldopenprice = OrderOpenPrice();
         }
      }
    }
  }
  return(oldopenprice);
 }
//+-Подсчет ордеров-----------------------------------------------------------------+
int countBuy()
  {
  int count = 0;
  for (int trade = OrdersTotal()-1; trade >=0; trade--)
  {
   if (OrderSelect(trade,SELECT_BY_POS,MODE_TRADES) == true)
  { 
  if (OrderSymbol() == Symbol() && OrderMagicNumber()== Magik && OrderType() == OP_BUY)           
   count++;
  }
}
return(count);
  }
  //+------------------------------------------------------------------+
   int countSell()
  {
  int count = 0;
  for (int trade = OrdersTotal()-1; trade >=0; trade--)
  {
   if (OrderSelect(trade,SELECT_BY_POS,MODE_TRADES) == true)
  { 
  if (OrderSymbol() == Symbol() && OrderMagicNumber()== Magik && OrderType() == OP_SELL)           
   count++;
  }
}
return(count);
  }
//+----------------убыток по ордеру-------------------------------------------------+  
double OP()
{
double pr=0;
 for (int cnt = OrdersTotal()-1;cnt>=0; cnt --)
  {
  if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
  {
  if(OrderSymbol()==Symbol() && OrderMagicNumber() ==  Magik) 
  {
  if(OrderType() ==OP_BUY)
  {
  pr+=OrderProfit();
  }
  }}}
  return(pr);
  }
  
  double OP1()
{
double pr=0;
 for (int cnt = OrdersTotal()-1;cnt>=0; cnt --)
  {
  if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
  {
  if(OrderSymbol()==Symbol() && OrderMagicNumber() ==  Magik ) 
  {
  if(OrderType() ==OP_SELL)
  {
  pr+=OrderProfit();
  }
  }}}
  return(pr);
  }

//+----------------лот для 2 ордера покупки-------------------------------------------------+  
double findorderBuy2lot()
{
double LoT1=0;
for (int cnt = OrdersTotal()-1;cnt>=0; cnt --)
  {
  if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
  {
  if(OrderSymbol()==Symbol() && OrderMagicNumber() ==  Magik && OrderType() ==OP_BUY)
  {
  LoT1=OP()/-100/2;
  }}}
  return (LoT1);
  }
  //+----------------лот для 2 ордера покупки-------------------------------------------------+  
  double findorderSell2ot()
{
double LoT2=0;
for (int cnt = OrdersTotal()-1;cnt>=0; cnt --)
  {
  if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
  {
  if(OrderSymbol()==Symbol() && OrderMagicNumber() ==  Magik && OrderType() ==OP_SELL)
  {
  LoT2=OP1()/-100/2;
  }}}
  return (LoT2);
  }
 //+---------------Модификацияbuy-------------------------------------------------+    
void ModifiOrders1()

{double ModPrice;
for (int cnt = OrdersTotal()-1;cnt>=0; cnt --)
  {
  if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
  {
  if(OrderSymbol()==Symbol() && OrderMagicNumber() ==  Magik && OrderType() ==OP_BUY)
  {
  ModPrice=FindLastBuyPrice()+20*10*Point;
  for(int i=OrdersTotal()-1; i>=0;i--)
  {
  if(OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
  {
  if(OrderSymbol()==Symbol()&& OrderMagicNumber() == Magik&&OrderType() == OP_BUY)
  {
  if(OrderModify(OrderTicket(),OrderOpenPrice(),0,ModPrice,NULL,clrDarkBlue))
  Print("Ордера модифицированны");
  else Print(ModPrice);

  
  
  }
  }}}}
  }}
//+---------------МодификацияSell-------------------------------------------------+  
void ModifiOrders2()

{
double ModPrice;
for (int cnt = OrdersTotal()-1;cnt>=0; cnt --)
  {
  if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
  {
  if(OrderSymbol()==Symbol() && OrderMagicNumber() ==  Magik && OrderType() ==OP_SELL)
  {
  ModPrice=FindLastSellPrice()-20*10*Point;
  for(int i=OrdersTotal()-1; i>=0;i--)
  {
  if(OrderSelect(i, SELECT_BY_POS,MODE_TRADES))
  {
  if(OrderSymbol()==Symbol()&& OrderMagicNumber() == Magik&&OrderType() == OP_SELL)
  {
  if(OrderModify(OrderTicket(),OrderOpenPrice(),0,ModPrice,NULL,clrDarkBlue))
  Print("Ордера модифицированны");
  else Print(ModPrice);
  }}}}}}}</code>

Редактирован: 13 января 2020, 04:28
avatar

  5  ilyask Автор Сообщений: 22

  • 13 января 2020, 04:27
+
0
отличное творение *good* .
avatar

  16  cerber04 Сообщений: 409

  • 15 января 2020, 05:04
+
0
К сожалению не очень, просадка великовата(
avatar

  5  ilyask Автор Сообщений: 22

  • 15 января 2020, 11:58
+
0
чужой код не смотрю. входы выходы покажите на скринах более подробно.
avatar

  34  AM2 Сообщений: 15878 - Андрей

  • 14 января 2020, 20:27
+
0
1)на дневке сформировалось бычье поглощение после этого только покупаем
2)На Н4 быстрая МА выше медленной
3)На Н1 при пробое лоу фрактала покупаем,(В моем коде мне не удалось избавиться от повторного открытия ордера, нужно чтобы на один сигнал первая сделка открывалась только один раз)
4)Если первая сделка в течении 4 часов не закрылась и болтается в убытке, то тейк переводится к уровню 10 пунктов(если в рынке по типу позиций больше одного ордера, то пропускается данное условие)
Продажа наоборот
ВЫход по тейку или стопу

Собственно все, остальное я сам попробую доделать))
Редактирован: 15 января 2020, 11:57
avatar

  5  ilyask Автор Сообщений: 22

  • 15 января 2020, 10:29
+
+1
прописал все 3 условия на вход: www.opentraders.ru/downloads/2543/

avatar

  34  AM2 Сообщений: 15878 - Андрей

  • 15 января 2020, 23:55

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