Советники: Cоветник Return

 

Cоветник Return:

Ночная торговля. Еврофунт Н1.

Author: Andrew Kornishkin

 
То есть на реале он работать не будет?
 

Просто вынос мозга )))

Но нашел совершенно лишние строчки кода:

if (OrderType()==OP_BUY) buy=true;
if (OrderType()==OP_BUYSTOP) sell=true;

Не пойму только пока что - где тут собака порылась? )))

 
// Может д.б. так?
//+------------------------------------------------------------------+
//|                                                       Return.mq4 |
//|                                            Copyright © 2011, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, AM2"
#property link      "http://www.forexsystems.biz"
 
#define MAGIC  20110406
 
extern int StopLoss    = 300;
extern int TakeProfit  = 50;
extern int StartHour   = 21;
extern int Distance    = 50;
extern int Expiration  = 4;
extern double Lot      = 1;
                                                                                                                                
//+------------------------------------------------------------------+
int start()
  {
   int b=0,s=0,res;
   bool buy=false,sell=false; 
   double BuyPrice=Close[1]-Distance*Point;
   double SellPrice=Close[1]+Distance*Point;
   datetime expiration = TimeCurrent()+3600*Expiration;   
   for (int i=0; i<OrdersTotal(); i++)
   {  if (OrderSelect(i, SELECT_BY_POS)==true)
      {  
         if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=MAGIC) continue;
         if (OrderType()==OP_BUY) buy=true;
         if (OrderType()==OP_SELL) sell=true;
         if (OrderType()==OP_BUYLIMIT) b++;
         if (OrderType()==OP_SELLLIMIT) s++;        
      }   
   }
   if (Hour()==StartHour&&b<1&&!buy)
   {               
      res=OrderSend(Symbol(),OP_BUYLIMIT,Lot,BuyPrice,3,BuyPrice-StopLoss*Point,BuyPrice+TakeProfit*Point,"",MAGIC,expiration,Blue);
   }
   
   if (Hour()==StartHour&&s<1&&!sell)
   {               
      res=OrderSend(Symbol(),OP_SELLLIMIT,Lot,SellPrice,3,SellPrice+StopLoss*Point,SellPrice-TakeProfit*Point,"",MAGIC,expiration,Red );
   }   
//----   
   return(0);
  }
//+------------------------------------------------------------------+

 
Flax:

Просто вынос мозга )))

Но нашел совершенно лишние строчки кода:

if (OrderType()==OP_BUY) buy=true;
if (OrderType()==OP_BUYSTOP) sell=true;

Не пойму только пока что - где тут собака порылась? )))

Спасибо, поправил.
if (OrderType()==OP_SELL) sell=true;
 
peter888:
То есть на реале он работать не будет?

Для реала нужно дорабатывать и тестить на демо и затем на микро.
 

немного поправил и добавил

//+------------------------------------------------------------------+
//|                                                       Return.mq4 |
//|                                            Copyright © 2011, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, AM2"
#property link      "http://www.forexsystems.biz"
 
#define MAGIC  20110406
 
extern int StopLoss    = 300;
extern int TakeProfit  = 50;
extern int StartHour   = 21;
extern int Distance    = 50;
extern int Expiration  = 4;
extern bool MM=true;
extern double Lots = 0.01;
extern double TSP=5;
bool buy,sell;
//+------------------------------------------------------------------+
int start()
  {
   int b=0,s=0,res;
   double BuyPrice=fND(Ask-Distance*Point);
   double SellPrice=fND(Bid+Distance*Point);
   datetime expiration = TimeCurrent()+3600*Expiration;   
   for (int i=0; i<OrdersTotal(); i++)
     {
      if (OrderSelect(i, SELECT_BY_POS))
        {  
         if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=MAGIC) continue;
         if (OrderType()==OP_BUY || OrderType()==OP_BUYLIMIT) b++;
         if (OrderType()==OP_SELL || OrderType()==OP_SELLLIMIT) s++;
        }   
     }
   if (Hour()!=StartHour) {buy=false; sell=false;}
   if (Hour()==StartHour && !buy && b<1 && DayOfWeek() != 5)
     {               
      res=OrderSend(Symbol(),OP_BUYLIMIT,fLots(),BuyPrice,3,fND(BuyPrice-StopLoss*Point),fND(BuyPrice+TakeProfit*Point),"",MAGIC,expiration,Blue);
      if (res>0) buy=true;
     }
   if (Hour()==StartHour && !sell && s<1 && DayOfWeek() != 5)
     {               
      res=OrderSend(Symbol(),OP_SELLLIMIT,fLots(),SellPrice,3,fND(SellPrice+StopLoss*Point),fND(SellPrice-TakeProfit*Point),"",MAGIC,expiration,Red );
      if (res>0) sell=true;
     }   
//----   
   return(0);
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
double fLots()
  {
   double lot=Lots;
   double  lot_min =MarketInfo( Symbol(), MODE_MINLOT  ); 
   double  lot_max =MarketInfo( Symbol(), MODE_MAXLOT  ); 
   if (MM)
     {
      double  lot_step =MarketInfo( Symbol(), MODE_LOTSTEP ); 
      double  lotcost =MarketInfo( Symbol(), MODE_TICKVALUE );       
      double  dollarsPerPip=0.0;
      lot = AccountFreeMargin()*TSP/100.0;
      dollarsPerPip=lot/StopLoss;
      lot=fND(dollarsPerPip/lotcost, 2);      
      lot=fND(lot/lot_step, 0) * lot_step;
     }
   if (lot<lot_min) lot=lot_min;
   if (lot>lot_max) lot=lot_max;
   return(lot);
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
double fND(double d, int n=-1) 
  {  
   if (n<0) return(NormalizeDouble(d, Digits)); 
   return(NormalizeDouble(d, n)); 
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+

вот что получилось

 
Tiburond:

немного поправил и добавил

Еще обработку ошибок добавить и вперед искать ДЦ где такое возможно :-)
Также в некоторых ДЦ нельзя сразу тейк и лось выставить. Приходится модификацией.

Доработаем.

 
А стратегию можно поподробнее описать ?
+ Он все время сначала вверх идет, а потом все сливает быстро както  ....
 
Fav:
А стратегию можно поподробнее описать ?
+ Он все время сначала вверх идет, а потом все сливает быстро както ....
На создание советника меня вдохновила вот эта стратегия.
Только я постарался ее максимально упростить.
 
Прогони на парах с йеной, за последние месяцы, удивишься ))
Причина обращения: