0
Вполне)Можно мажоры и золото
avatar

ilyask

  • 12 марта 2020, 18:43
0
К сожалению не очень, просадка великовата(
avatar

ilyask

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

Собственно все, остальное я сам попробую доделать))
avatar

ilyask

  • 15 января 2020, 10:29
+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>
avatar

ilyask

  • 13 января 2020, 04:27
0
Хорошо, жду)
avatar

ilyask

  • 9 января 2020, 13:16
0
Андрей, не всегда открывает ордера)
avatar

ilyask

  • 21 декабря 2018, 10:00
0
1)3 ордера с общим sl*
2)Stochastic не должен быть перкуплен (медленная находиться выше 80 уровня)-недочеты)
avatar

ilyask

  • 18 декабря 2018, 03:58
0
Да, я уже увидел, спасибо)
avatar

ilyask

  • 23 марта 2017, 15:53
0
Если у вас будет время сделайте стоп лосс постоянным.Благодарю заранее
avatar

ilyask

  • 14 января 2017, 16:57
0
вот та самая ситуация
, и как видно из скрина ордер закрылся по верхней линии, а не по средней. Причем это случается часто…
avatar

ilyask

  • 14 января 2017, 15:13
0
Если не трудно можете изменить немножко код-вместо динамичного sl сделать постоянный, указанный в настройках.Советник временами открывает группу ордеров подрят.и тут же их закрывает
avatar

ilyask

  • 14 января 2017, 15:12
0
Спасибо :) 
avatar

ilyask

  • 14 января 2017, 12:46
0
Хорошо)
avatar

ilyask

  • 14 января 2017, 05:35
0
Попробуйте написать, я в MQL толком не разбираюсь:) , Код, который вы приктрепили, если вставить в советник, то он начнет открывать сделки по принципу, или же нужно коректировать исходный код советника?
avatar

ilyask

  • 31 марта 2016, 07:00
0
Попробовал сделать, как было сказано в данном топике mql.opentraders.ru/1663.html, но ничего не вышло.
<img src='http://opentraders.ru/templates/skin/g6h/images/smilies/002.gif' alt=' :) '>&nbsp; 
avatar

ilyask

  • 30 марта 2016, 17:04