Скачать MetaTrader 5

Советники: Советник, основанный на ГЭП

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
У тебя Mac OS? Узнай, как установить на нее MetaTrader!
MetaQuotes Software Corp.
Модератор
181406
MetaQuotes Software Corp. 2011.04.12 12:28 

Советник, основанный на ГЭП :

Советник выставляет ордера в сторону, противоположную ГЭПу

Author: Vladimir Khlystov

fozi
2926
fozi 2011.04.12 21:10  
а не слишком лот крутой для такого депозита ?
Vladimir Khlystov
11297
Vladimir Khlystov 2011.04.13 19:05  
fozi:
а не слишком лот крутой для такого депозита ?

ну если из 13 сделок всего одна в минус, то можно лот ставить и больше.
Maksim Zerkalov
182
Maksim Zerkalov 2011.04.16 06:24  
Прикрутил ММ, отключил демо-режим
//+------------------------------------------------------------------+
//|Если ГЭП выше указанного значения, то открываем ордер     Gep.mq4 |
//|                               Copyright c 2011, Хлыстов Владимир |
//|                                                cmillion@narod.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright c 2011, http://cmillion.narod.ru"
#property link      "cmillion@narod.ru"
//--------------------------------------------------------------------
extern int    GepDelta     = 2,        //Если ГЭП выше этого значения, то открываем ордер противоположныйй ГЭПу
              SL           = 200,      //Стоплосс в пунктах
              TP           = 85;       //Тейкпрофит в пунктах
//extern double Lot          = 0.10;     //используется только при risk = 0
extern double Lots           =  0; // лот, если 0, то динамический
extern double RiskPercentage =  50; // % от депо на лот, если динамический
extern int    MaxOrders    = 60;       //Максимальное кол-во ордеров одного направления
//--------------------------------------------------------------------
int STOPLEVEL,magic=123321,tip,TimeBar;
string txt;
//--------------------------------------------------------------------
int init()
{
   STOPLEVEL = MarketInfo(Symbol(),MODE_STOPLEVEL);
   if (SL < STOPLEVEL) SL = STOPLEVEL;
   if (TP < STOPLEVEL) TP = STOPLEVEL;
/*   txt = StringConcatenate("Copyright c 2011 cmillion@narod.ru\nУстановленные параметры "+"\n"+
      "GepDelta         " , GepDelta,         "\n",
      "MaxOrders   " , MaxOrders,      "\n",
      "SL               ", SL,             "\n",
      "TP               " , TP,             "\n",
      "Lot               ", DoubleToStr(Lot,2));*/
}
//--------------------------------------------------------------------
int start()
{
double Lot = Lots;
 if (Lots==0)
  {
   double margin = MarketInfo(Symbol(), MODE_MARGINREQUIRED);
   double minLot = MarketInfo(Symbol(), MODE_MINLOT);
   double maxLot = MarketInfo(Symbol(), MODE_MAXLOT);
   double step =   MarketInfo(Symbol(), MODE_LOTSTEP);
   double account = AccountFreeMargin();
   
   double percentage = account*RiskPercentage/100;
   
   Lot = MathRound(percentage/margin/step)*step;
   
   if(Lot < minLot)
   {
      Lot = minLot;
   }
   
   if(Lot > maxLot)
   {
      Lot = maxLot;
   }
  } 
   int bay,sel;
   for (int i=0; i<OrdersTotal(); i++)
   {  if (OrderSelect(i, SELECT_BY_POS))
      {  
         if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=magic) continue;
         tip=OrderType();
         if (tip==0) bay++;
         if (tip==1) sel++;
      }   
   }
   Comment(txt,"\nБаланс ",DoubleToStr(AccountBalance(),2),"\nЭквити ",DoubleToStr(AccountEquity(),2),"\nBuy ",bay,"\nSel ",sel);
   double TrPr,StLo;
   double close = NormalizeDouble(Close[1],Digits);
   double open  = NormalizeDouble(Open[0],Digits);
   if (bay<MaxOrders && TimeBar!=Time[0] && (close - open)/Point>=GepDelta)
   {
      if (TP!=0) TrPr = NormalizeDouble(Ask + TP * Point,Digits);                 
      if (SL!=0) StLo = NormalizeDouble(Bid - SL * Point,Digits);                 
      if (!OrderSend(Symbol(),OP_BUY,Lot,NormalizeDouble(Ask,Digits),3,StLo,TrPr,"BreakdownLevelCandleMA",magic,0,Blue))
         Print("Error BUY ",GetLastError(),"   ",Symbol(),"   Lot ",Lot,"   SL ",StLo,"   TP ",TrPr);
      else TimeBar=Time[0];
   }
   if (sel<MaxOrders && TimeBar!=Time[0] && (open - close)/Point>=GepDelta)
   {
      if (TP!=0) TrPr = NormalizeDouble(Bid - TP * Point,Digits);                 
      if (SL!=0) StLo = NormalizeDouble(Ask + SL * Point,Digits);   
      if (!OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),3,StLo,TrPr,"BreakdownLevelCandleMA",magic,0,Red ))
         Print("Error SELL ",GetLastError(),"   ",Symbol(),"   Lot ",Lot,"   SL ",StLo,"   TP ",TrPr);
      else TimeBar=Time[0];
   }
   return(0);
}
//--------------------------------------------------------------------


Maksim Zerkalov
182
Maksim Zerkalov 2011.04.17 20:41  

Новое дополнение: у Брокеров с исполнением ордеров по Market Execution изначально предложенный советник не будет работать, так как нельзя выставлять стоплосс и тейкпрофит одновременно с выставлением ордера. В предложеном коде исправлено.

//+------------------------------------------------------------------+
//|Если ГЭП выше указанного значения, то открываем ордер     Gep.mq4 |
//|                               Copyright © 2011, Хлыстов Владимир |
//|                                                cmillion@narod.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, http://cmillion.narod.ru"
#property link      "cmillion@narod.ru"
//--------------------------------------------------------------------
extern int    GepDelta     = 2,        //Если ГЭП выше этого значения, то открываем ордер противоположныйй ГЭПу
              SL           = 200,      //Стоплосс в пунктах
              TP           = 85;       //Тейкпрофит в пунктах
//extern double Lot          = 0.10;     //используется только при risk = 0
extern double Lots           =  0; // лот, если 0, то динамический
extern double RiskPercentage =  50; // % от депо на лот, если динамический
extern int    MaxOrders    = 6;       //Максимальное кол-во ордеров одного направления
//--------------------------------------------------------------------
int STOPLEVEL,magic=123321,tip,TimeBar;
string txt;
//--------------------------------------------------------------------
int init()
{
   STOPLEVEL = MarketInfo(Symbol(),MODE_STOPLEVEL);
   if (SL < STOPLEVEL) SL = STOPLEVEL;
   if (TP < STOPLEVEL) TP = STOPLEVEL;
/*   txt = StringConcatenate("Copyright © 2011 cmillion@narod.ru\nУстановленные параметры "+"\n"+
      "GepDelta         " , GepDelta,         "\n",
      "MaxOrders   " , MaxOrders,      "\n",
      "SL               ", SL,             "\n",
      "TP               " , TP,             "\n",
      "Lot               ", DoubleToStr(Lot,2));*/
}
//--------------------------------------------------------------------
int start()
{
double Lot = Lots;
int Ticket = 0;
 if (Lots==0)
  {
   double margin = MarketInfo(Symbol(), MODE_MARGINREQUIRED);
   double minLot = MarketInfo(Symbol(), MODE_MINLOT);
   double maxLot = MarketInfo(Symbol(), MODE_MAXLOT);
   double step =   MarketInfo(Symbol(), MODE_LOTSTEP);
   double account = AccountFreeMargin();
   
   double percentage = account*RiskPercentage/100;
   
   Lot = MathRound(percentage/margin/step)*step;
   
   if(Lot < minLot)
   {
      Lot = minLot;
   }
   
   if(Lot > maxLot)
   {
      Lot = maxLot;
   }
  } 
   int bay,sel;
   for (int i=0; i<OrdersTotal(); i++)
   {  if (OrderSelect(i, SELECT_BY_POS))
      {  
         if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=magic) continue;
         tip=OrderType();
         if (tip==0) bay++;
         if (tip==1) sel++;
      }   
   }
   Comment(txt,"\nБаланс ",DoubleToStr(AccountBalance(),2),"\nЭквити ",DoubleToStr(AccountEquity(),2),"\nBuy ",bay,"\nSel ",sel);
   double TrPr,StLo;
   double close = NormalizeDouble(Close[1],Digits);
   double open  = NormalizeDouble(Open[0],Digits);
   if (bay<MaxOrders && TimeBar!=Time[0] && (close - open)/Point>=GepDelta)
   {
      if (TP!=0) TrPr = NormalizeDouble(Ask + TP * Point,Digits);                 
      if (SL!=0) StLo = NormalizeDouble(Bid - SL * Point,Digits);  
      Ticket=OrderSend(Symbol(),OP_BUY,Lot,NormalizeDouble(Ask,Digits),3,0,0,"BreakdownLevelCandleMA",magic,0,Blue);               
      if (Ticket==0)
         Print("Error BUY ",GetLastError(),"   ",Symbol(),"   Lot ",Lot,"   SL ",StLo,"   TP ",TrPr);
      else 
       {
        OrderModify(Ticket,OrderOpenPrice(),StLo,TrPr,0,Blue);
        TimeBar=Time[0];
       }
   }
   if (sel<MaxOrders && TimeBar!=Time[0] && (open - close)/Point>=GepDelta)
   {
      if (TP!=0) TrPr = NormalizeDouble(Bid - TP * Point,Digits);                 
      if (SL!=0) StLo = NormalizeDouble(Ask + SL * Point,Digits);   
      Ticket=OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid,Digits),3,0,0,"BreakdownLevelCandleMA",magic,0,Red);
      if (Ticket==0)
         Print("Error SELL ",GetLastError(),"   ",Symbol(),"   Lot ",Lot,"   SL ",StLo,"   TP ",TrPr);
      else 
       {
        OrderModify(Ticket,OrderOpenPrice(),StLo,TrPr,0,Blue);
        TimeBar=Time[0];
       }
   }
   return(0);
}
//--------------------------------------------------------------------
MQL4 Comments
16319
MQL4 Comments 2011.04.30 08:37  
zerkmax:
Прикрутил ММ, отключил демо-режим

круто Вы... прям в авторской ветке... взяли вот да и "вылечили" его код... между делом...
хех...

Vladimir Khlystov
11297
Vladimir Khlystov 2011.05.03 00:30  
Shai:
zerkmax:
Прикрутил ММ, отключил демо-режим

круто Вы... прям в авторской ветке... взяли вот да и "вылечили" его код... между делом...
хех...


Это называется не лечение а взлом, хотя я ограничил реал, только для перворазников, чтобы копья не поломали.

Я бы таких горе лекарей кастрировал на месте модераторов. Но почему то им до них нет дела. И допускают такое хамство прямо на своем столе.

После такого подумаешь выкладывать сюда что то серьезное или проще продать через сайт?

Поэтому полная версия есть только на моем сайте.

Maksim Zerkalov
182
Maksim Zerkalov 2011.05.10 07:05  
cmillion:
Shai:
zerkmax:
Прикрутил ММ, отключил демо-режим

круто Вы... прям в авторской ветке... взяли вот да и "вылечили" его код... между делом...
хех...


Это называется не лечение а взлом, хотя я ограничил реал, только для перворазников, чтобы копья не поломали.

Я бы таких горе лекарей кастрировал на месте модераторов. Но почему то им до них нет дела. И допускают такое хамство прямо на своем столе.

После такого подумаешь выкладывать сюда что то серьезное или проще продать через сайт?

Поэтому полная версия есть только на моем сайте.

это не взлом, так как код открыт, а исправление. Это хранилище бесплатного кода, соответственно все что тут выкладывается, может правиться и использоваться без ограничений.

Кроме того Ваш код дополнен ММ и исправлена работа с исполнением ордеров по Market Execution, а это извините доработка советника.

LucidLynx
20
LucidLynx 2011.07.20 23:02  

Таких графиков не получается! Реальный график таков:

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