Группа "Стол заказов MQL"

Рейтинг 2151



РЕКОМЕНДУЮ



Доработка советника fap-turbo 52

FapTurbo-ver.52.mq4 (82 Kb)
Прошу доработать советник. В общем, надо добавить условие на выход из сделки при пересечении когда быстрая скользящая пересекает медленную. Вывести внешные настройки машек для оптимизации — период, метод, типы скользящих. Плюс добавить еще условие выход из сделки через заданное количество баров.
  • 0
  • Просмотров: 4354
  • 27 марта 2016, 20:40
  • Lexx79
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Доделать советник VR---SIGMA v.1
Следующая запись в группе  
поправить советник
27 марта 2016
28 марта 2016

Брокер для ваших роботов, 15 лет на рынке

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

+
0
Здесь более 2000 строк чужого кода, очень маловероятно что получится что то сделать.
avatar

  35  AM2 Сообщений: 16388 - Андрей

  • 27 марта 2016, 21:11
+
0
Жаль. А если написать второй советник, который при открытии ордера, подхватывал и вел сделки по заданным параметрам?
avatar

  7  Lexx79 Автор Сообщений: 40

  • 27 марта 2016, 22:33
+
0
Я посмотрел как он открывается. Покупка продажа если цена выше ниже машки плюс время с 22.00 до 24.00 примерно. Такие входы со временем и закрытием по барам могу сделать.
avatar

  35  AM2 Сообщений: 16388 - Андрей

  • 28 марта 2016, 11:30
+
0
Набросал ночник. Торгует с 21 до 24 затем кроет в конце торговли позу. Вот этот вариант еще могу править: www.opentraders.ru/downloads/1118/



//+------------------------------------------------------------------+
//|                                                     FapTurbo.mq4 |
//|                                              Copyright 2016, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

//--- Inputs
extern double Lots       = 0.1;      // лот
extern int StopLoss      = 1200;     // лось
extern int TakeProfit    = 50;       // язь
extern int Slip          = 30;       // реквот
extern int MAPeriod      = 5;        // период МА
extern int CloseOn       = 1;        // 1-закрытие в конце работы
extern int Magic         = 123;      // магик
extern string Start      = "21:00";  // старт
extern string End        = "23:50";  // конец торговли
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int r=0;
   color clr=Green;
   double sl=0,tp=0;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
      if(StopLoss>0) sl=NormalizeDouble(price+StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price-TakeProfit*Point,Digits);
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
      if(StopLoss>0) sl=NormalizeDouble(price-StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price+TakeProfit*Point,Digits);
     }

   r=OrderSend(NULL,type,Lots,NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades()
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()<2) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll()
  {
   bool cl;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY)
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slip,White);
              }
            if(OrderType()==OP_SELL)
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),Slip,White);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double ma=iMA(NULL,0,MAPeriod,0,0,0,1);

   if(CountTrades()<1 && TimeCurrent()>=StringToTime(Start) && TimeCurrent()<=StringToTime(End))
     {
      if(Ask<ma)
        {
         PutOrder(0,Ask);
        }

      if(Bid>ma)
        {
         PutOrder(1,Bid);
        }
     }
     
   if(CountTrades()>0 && CloseOn>0 && TimeCurrent()<StringToTime(Start)) CloseAll();
   
   Comment("\n Time: ", TimeCurrent());
  }
//+------------------------------------------------------------------+

avatar

  35  AM2 Сообщений: 16388 - Андрей

  • 28 марта 2016, 12:22
+
0
Спасибо, протестировал, только он продает, когда цена выше машки и покупает, когда цена ниже, а надо бы наоборот) плюс надо добавить запрет торговли в пятницу и выход из сделки через заданное количество баров.
avatar

  7  Lexx79 Автор Сообщений: 40

  • 28 марта 2016, 14:08
+
0
Добавил пятницу и бары:


//+------------------------------------------------------------------+
//|                                                     FapTurbo.mq4 |
//|                                              Copyright 2016, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

//--- Inputs
extern double Lots       = 0.1;      // лот
extern int StopLoss      = 1200;     // лось
extern int TakeProfit    = 50;       // язь
extern int Slip          = 30;       // реквот
extern int MAPeriod      = 5;        // период МА
extern int BarsClose     = 10;       // время жизни позиции в барах
extern int Magic         = 123;      // магик
extern string Start      = "21:00";  // старт
extern string End        = "23:50";  // конец торговли
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int r=0;
   color clr=Green;
   double sl=0,tp=0;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
      if(StopLoss>0) sl=NormalizeDouble(price+StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price-TakeProfit*Point,Digits);
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
      if(StopLoss>0) sl=NormalizeDouble(price-StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price+TakeProfit*Point,Digits);
     }

   r=OrderSend(NULL,type,Lots,NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades()
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()<2) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll()
  {
   bool cl;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY)
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slip,White);
              }
            if(OrderType()==OP_SELL)
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),Slip,White);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
datetime OrderOpen()
  {
   datetime ot=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()<2) ot=OrderOpenTime();
           }
        }
     }
   return(ot);
  }  
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double ma=iMA(NULL,0,MAPeriod,0,0,0,1);

   if(TimeCurrent()>=StringToTime(Start) && TimeCurrent()<=StringToTime(End))
     {
      if(CountTrades()<1 && DayOfWeek()!=5)
        {
         if(Ask>ma)
           {
            PutOrder(0,Ask);
           }

         if(Bid<ma)
           {
            PutOrder(1,Bid);
           }
        }
     }
   
   if(CountTrades()>0 && TimeCurrent()-OrderOpen()>BarsClose*PeriodSeconds()) CloseAll();

   Comment("\n Time: ",TimeCurrent());
  }
//+------------------------------------------------------------------+

avatar

  35  AM2 Сообщений: 16388 - Андрей

  • 28 марта 2016, 18:01
+
0
Спасибо, все работает. Хотя без фильтров конечно не то) Но и на том спасибо)
avatar

  7  Lexx79 Автор Сообщений: 40

  • 28 марта 2016, 21:44

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