Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Знаете ли вы, что в MQL5 появилась обработка событий?
MetaQuotes Software Corp.
Модератор
181217
MetaQuotes Software Corp. 2011.04.07 08:23 

Cоветник Return:

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

Author: Andrew Kornishkin

Peter
252
Peter 2011.04.07 09:18  
То есть на реале он работать не будет?
Сергей
69
Сергей 2011.04.07 09:37  

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

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

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

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

Vladislav Eremeev
1659
Vladislav Eremeev 2011.04.07 11:10  
// Может д.б. так?
//+------------------------------------------------------------------+
//|                                                       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);
  }
//+------------------------------------------------------------------+

Andrew Kornishkin
7019
Andrew Kornishkin 2011.04.07 11:14  
Flax:

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

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

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

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

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

Для реала нужно дорабатывать и тестить на демо и затем на микро.
Dmitriy Potemkin
132
Dmitriy Potemkin 2011.04.07 14:11  

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

//+------------------------------------------------------------------+
//|                                                       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)); 
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+

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

Andrew Kornishkin
7019
Andrew Kornishkin 2011.04.07 16:00  
Tiburond:

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

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

Доработаем.

MQL4 Comments
16319
MQL4 Comments 2011.04.07 17:00  
А стратегию можно поподробнее описать ?
+ Он все время сначала вверх идет, а потом все сливает быстро както  ....
Andrew Kornishkin
7019
Andrew Kornishkin 2011.04.07 18:51  
Fav:
А стратегию можно поподробнее описать ?
+ Он все время сначала вверх идет, а потом все сливает быстро както ....
На создание советника меня вдохновила вот эта стратегия.
Только я постарался ее максимально упростить.
Alexandr Bryzgalov
27574
Alexandr Bryzgalov 2011.04.07 22:04  
Прогони на парах с йеной, за последние месяцы, удивишься ))
123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий