Инвестиции форекс

Гридеры.
Аватар AM2
AM2
Сообщений: 194
Уровень 5

Гридер — советник, торгующий сеткой отложенных ордеров.

Идея позаимствована с сайта mql4.com.

Стратегия торговли проста как мир. Ставится ордер на покупку, либо на продажу и лочится стоп-ордером на расстоянии Delta1.

Далее набрасывается сетка из лимитных, либо стоповых ордеров на расстоянии delta один от другого. При достижении ценой профита — Profit, всё закрывается и продолжаем заново. Работаем на минутках.

Основная идея:

Если уровень ADX ниже 40, то считаем, что флет и выставляются лимитные ордеры, если выше, то стоповые;
Если DI+ выше чем DI-, то покупаем, если наоборот, то продаем.
Все линии по индикатору — ADX.

Дополнительные настройки — это klot — коэффициент на который умножается каждый следующий отложенный ордер, и pluslot — количество лотов, которое прибавляется при каждом следующем отложенном ордере.


Рис.1. Результат работы эксперта.

Код советника:


//+------------------------------------------------------------------+
//|                                           Proffessor_v1_2011.mq4 |
//|                      Copyright © 2011, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
extern double lot          = 0.1;  //лот
extern int    MAX_Lines    = 5;    //максимальное колличество отложенных ордеров каждого направления  
extern double klot         = 1;    //коэффициент умножения лотов при удалении от цены  
extern double pluslot      = 0.1;  //коэффициент доливки лота при удалении от цены
extern int    plusDelta    = -5;   //коэффициент увеличения расстояния между отложенными ордерами
                                   //если значение отрицательное, то расстояние уменьшается на данное кол-во пунктов
extern double Delta1       = 70;   //первая дельта от цены для стопового ордера
extern int    Delta        = 60;   //расстояние между отложенными ордерами  
extern double ProfitClose  = 0.8;  //закрывать все ордера при получении профита(в долларах)  
extern double f            = 40;   //параметр границы флета по ADX
extern double bar          = 2;    //сдвиг по барам ADX
extern double timeframe    = 1;    //таймфрейм для индикатора ADX 0-текущий,1-1минута, 2-5минут, 3-15минут, 4-30минут, 5-1час
                                   //6-4часа, 7-день, 8-неделя, 9-месяц
extern int    magic        = 123;  //магик
extern int    StartHour    = 0;    //час начала работы советника
extern int    EndHour      = 24;   //час окончания работы советника
extern int    pop          = 3;    //количество попыток закрыть ордер
int init() {
      Comment("ProfessorSoft_v3_2011");
      return (0);
  
}

int deinit() {
      Comment("");
      return (0);
}

//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
bool ticket;
double Lots;
int x,q;
bool trade=false;
trade=true;
double iflet,ibuy,isell;
int _timeframe;
if(timeframe==1)_timeframe=1;
else if(timeframe==0)_timeframe=0;
else if(timeframe==2)_timeframe=5;
else if(timeframe==3)_timeframe=15;
else if(timeframe==4)_timeframe=30;
else if(timeframe==5)_timeframe=60;
else if(timeframe==6)_timeframe=240;
else if(timeframe==7)_timeframe=1440;
else if(timeframe==8)_timeframe=10080;
else _timeframe=43200;

   if(OrdersTotal()==0 && trade==true && time()==true)
   {
   ticket=-1;
    iflet=iADX( Symbol(), _timeframe, 14, PRICE_CLOSE,MODE_MAIN, bar); 
    ibuy=iADX( Symbol(), _timeframe, 14, PRICE_CLOSE,MODE_PLUSDI, bar); 
    isell=iADX(  Symbol(), _timeframe, 14, PRICE_CLOSE,MODE_MINUSDI, bar); 
      
      if(iflet<f && ibuy>isell)//условие для покупки и определение флета
      {
               Lots=lot;
               ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"",magic,0,Blue);
                if(ticket==-1)return(0);
               OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-Delta1*Point,3,0,0,"",magic,0,Red);
       
                for(x=1;x<=MAX_Lines;x++)
               {
                Lots=NormalizeDouble(Lots*klot,2)+pluslot;
                  OrderSend(Symbol(),OP_BUYLIMIT,Lots,Ask-(Delta1+x*NormalizeDouble(Delta+plusDelta*x/2,0))*Point,3,0,0,"",magic,0,Blue);
                  OrderSend(Symbol(),OP_SELLLIMIT,Lots,Bid+x*NormalizeDouble(Delta+plusDelta*x/2,0)*Point,3,0,0,"",magic,0,Red);     
               }
      
      
      }
      else if(iflet<f && ibuy<isell)//условие для продажи и определение флета
      {
                  Lots=lot;
                  ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"",magic,0,Red); 
                   if(ticket==-1)return(0);
                  OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+Delta1*Point,3,0,0,"",magic,0,Blue);
                    for(x=1;x<=MAX_Lines;x++)
                  {
                     Lots=NormalizeDouble(Lots*klot,2)+pluslot;
                     OrderSend(Symbol(),OP_BUYLIMIT,Lots,Ask-x*NormalizeDouble(Delta+plusDelta*x/2,0)*Point,3,0,0,"",magic,0,Blue);
                     OrderSend(Symbol(),OP_SELLLIMIT,Lots,Bid+(Delta1+x*NormalizeDouble(Delta+plusDelta*x/2,0))*Point,3,0,0,"",magic,0,Red);     
                  }
      }
       else if(iflet>f && ibuy>isell)//условие для покупки и определение тренда
      {
                   Lots=lot;
                   ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,"",magic,0,Blue);
                    if(ticket==-1)return(0);
                   OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-Delta1*Point,3,0,0,"",magic,0,Red);
       
                    for(x=1;x<=MAX_Lines;x++)
                   {
                    Lots=NormalizeDouble(Lots*klot,2)+pluslot;
                      OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-(Delta1+x*NormalizeDouble(Delta+plusDelta*x/2,0))*Point,3,0,0,"",magic,0,Blue);
                      OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+x*NormalizeDouble(Delta+plusDelta*x/2,0)*Point,3,0,0,"",magic,0,Red);     
                   }
      }
       else if(iflet>f && ibuy<isell)//условие для продажи и определение тренда
      {
                  Lots=lot;
                  ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0,"",magic,0,Red); 
                   if(ticket==-1)return(0);
                  OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+Delta1*Point,3,0,0,"",magic,0,Blue);
                    for(x=1;x<=MAX_Lines;x++)
                  {
                     Lots=NormalizeDouble(Lots*klot,2)+pluslot;
                     OrderSend(Symbol(),OP_SELLSTOP,Lots,Bid-x*NormalizeDouble(Delta+plusDelta*x/2,0)*Point,3,0,0,"",magic,0,Blue);
                     OrderSend(Symbol(),OP_BUYSTOP,Lots,Ask+(Delta1+x*NormalizeDouble(Delta+plusDelta*x/2,0))*Point,3,0,0,"",magic,0,Red);     
                  }
      }
      else return(0);
     
   }
  
  
      
      if(OrdersTotal()>0)
    {
     Comment("          Balance  ",AccountBalance(),"\n          Equity  ",AccountEquity(),"\n          Profit  ",OrdersProfit());
      if(OrdersProfit()>=ProfitClose)
      {
         for (int i=OrdersTotal()-1;i>=0;i--)
         {
            bool closed;
            OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
           
            if(OrderType()==OP_BUY) 
            {
                  for(q=0;q<pop;q++)
                  {
                  closed=false;
                  closed=OrderClose(OrderTicket(),OrderLots(),Bid,3,Blue);
                  if(closed==true)q=pop;
                  }
            }
           
            if(OrderType()==OP_SELL) 
            {
                  for(q=0;q<pop;q++)
                  {
                  closed=false;
                  closed=OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);
                  if(closed==true)q=pop;
                  }
            }
            Sleep(1000);
            if(OrderType()>1 ) OrderDelete(OrderTicket());
         }
      }
    }
   
   
//----
   return(0);
  }
//+------------------------------------------------------------------+

   bool time()
 {
   if (StartHour<EndHour) 
      {if (Hour()>=StartHour && Hour()<EndHour) return(true); else return(false);}
   if (StartHour>EndHour) 
      {if (Hour()>=EndHour && Hour()<StartHour) return(false); else return(true);}
 }
 
double OrdersProfit()
{
   
  double rezultSymb=0;
  string SMB=Symbol();
  int i;
  for (i=OrdersTotal()-1;i>=0;i--)
   {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true)
     {
      if(OrderSymbol()!= SMB) continue;
      if(OrderType()==OP_BUY || OrderType()==OP_SELL)
       {
        rezultSymb+=OrderProfit();
       } 
     }
   }
  return(rezultSymb);
}


Чем вам не грааль?
  • +2
  • Просмотров: 2650
  • 6 ноября 2011, 23:04
  • AM2
Присоеднитесь к группе "Торговые системы", чтобы
оперативно получать уведомления о появлении новых материалов -

ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться

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

+
0
Смеетесь?)
avatar

[ 1 ] OnGoingЗарегистрирован: 16 мая 2011 | Сообщений: 3

  • 6 ноября 2011, 23:21
+
0
Почти *улыбается*
avatar

[ 5 ] AM2Зарегистрирован: 23 июня 2010 | Сообщений: 194 - AM2

  • 6 ноября 2011, 23:28
+
0
Так и понял) Две недели от силы держится и рисует кочергу до полного слива даже с 10К. Плюс на псевдотиках в тестере такие вещи обычно тестировать не показательно, уверен, знаете.
avatar

[ 1 ] OnGoingЗарегистрирован: 16 мая 2011 | Сообщений: 3

  • 6 ноября 2011, 23:35
+
0
У людей на ПАММах подобные штуки стоят.
avatar

[ 5 ] AM2Зарегистрирован: 23 июня 2010 | Сообщений: 194 - AM2

  • 6 ноября 2011, 23:33
+
0
Ну-ну) Так ставьте. Мартышка вас в миг озолотит)
avatar

[ 1 ] OnGoingЗарегистрирован: 16 мая 2011 | Сообщений: 3

  • 6 ноября 2011, 23:36
+
0
На ПАММЕ только стоповые.
avatar

[ 5 ] AM2Зарегистрирован: 23 июня 2010 | Сообщений: 194 - AM2

  • 6 ноября 2011, 23:49
+
0
На ПАММЕ только стоповые.
Хотя вот пример наглядный.
avatar

[ 5 ] AM2Зарегистрирован: 23 июня 2010 | Сообщений: 194 - AM2

  • 6 ноября 2011, 23:57
+
0
Если грааль, то сразу на ТЕСТ с реал депо
avatar

[ 5 ] amyrgan145Зарегистрирован: 22 февраля 2011 | Сообщений: 394 - Амыр

  • 7 ноября 2011, 09:22
+
0
На 200 рубликов можно и поставить *улыбается*
avatar

[ 5 ] AM2Зарегистрирован: 23 июня 2010 | Сообщений: 194 - AM2

  • 7 ноября 2011, 11:34
+
0
Ну так что решил та, запускать та будешь на реале? *улыбается*
avatar

[ 5 ] amyrgan145Зарегистрирован: 22 февраля 2011 | Сообщений: 394 - Амыр

  • 9 ноября 2011, 19:11
+
0
Нужно еще изучить как следует эту систему. Возможно доработать.
Манипринтер мой не совсем корректно торгует. Не смотрел код?
avatar

[ 5 ] AM2Зарегистрирован: 23 июня 2010 | Сообщений: 194 - AM2

  • 9 ноября 2011, 21:47
+
0
только что гридера компельнул и запустил от балды, вроде работает, тестится *улыбается*Гридер ЖЖЕТ!но в конечном счете он слил…
На мани принтере вот такая ошибка порой вылазит:

Что это может быть?
avatar

[ 5 ] amyrgan145Зарегистрирован: 22 февраля 2011 | Сообщений: 394 - Амыр

  • 10 ноября 2011, 08:12
+
0
Индюки просит илановские. У меня они отключены, но из кода не убрал.
avatar

[ 5 ] AM2Зарегистрирован: 23 июня 2010 | Сообщений: 194 - AM2

  • 10 ноября 2011, 17:25
+
0
Тогда надо бы убрать их, чтобы не запрашивал… а то так забивается журнал и тестится с проблемами…
avatar

[ 5 ] amyrgan145Зарегистрирован: 22 февраля 2011 | Сообщений: 394 - Амыр

  • 10 ноября 2011, 17:33
+
0
Индюки еще для постановки лока нужны.
avatar

[ 5 ] AM2Зарегистрирован: 23 июня 2010 | Сообщений: 194 - AM2

  • 10 ноября 2011, 17:45
+
0
Гридинг это, конечно, интересно, но его часто постигает судьба усреднения. Несколько лет назад наблюдал за тестом, окончился провалом. Однако, гридинг гридингу рознь. Возможно, данная реализация может оказаться более успешной… Надеюсь на это *улыбается*
avatar

[ 4 ] BetMasterЗарегистрирован: 10 января 2010 | Сообщений: 188

  • 7 ноября 2011, 11:43
+
0
Подробнее о гридерах:
Гридеры на сайте mql4

avatar

[ 5 ] AM2Зарегистрирован: 23 июня 2010 | Сообщений: 194 - AM2

  • 13 ноября 2011, 10:22

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