0
Анатолий, у меня где то был подобный, только там советник был, поищу и займусь сегодня вечером.
avatar

AM2

  • 27 апреля 2016, 16:52
0
ТЗ то короткое но быстро сделать точно не получится. Нужно сидеть репу чесать как все это реализовать.
avatar

AM2

  • 27 апреля 2016, 12:02
0
Чужой код смотрю но результат не гарантирую :) 
avatar

AM2

  • 27 апреля 2016, 11:28
0
Публикуя очередную статью в своем блоге я случайным образом заметил, что у меня появился тот самый пункт по созданию заявки в «Столе заказов», хотя в правилах такая возможность предоставляется участникам имеющие не ниже 3 уровня, меня это немного ввело в заблуждение, не знаю может ошиблись, может еще что-то произошло, возможно поменяли условия.


Заявки в стол можно отправлять от 1-го уровня, а оплата труда программиста идет по заявкам от 3-го уровня, так что заказ можно размещать почти сразу после регистрации на сайте, но не факт что сделают :) 
avatar

AM2

  • 27 апреля 2016, 06:51
0
Сделал чтобы советник торговал на опционах.




//+------------------------------------------------------------------+
//|                                                      TouchMA.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 double KLot       = 2;        // умножение лота
extern double MaxLot     = 5;        // максимальный лот
extern double Delta      = 0.0001;   // дельта
extern int StopLoss      = 0;        // лось
extern int TakeProfit    = 0;        // язь
extern int StartHour     = 0;        // час начала торговли
extern int StartMin      = 0;        // минута начала торговли
extern int EndHour       = 23;       // час окончания торговли
extern int EndMin        = 30;       // минута окончания торговли
extern int Slip          = 30;       // реквот
extern int Shift         = 0;        // на каком баре сигнал 
extern int Magic         = 123;      // магик

extern int MAPeriod      = 12;       // Период МА
extern int MAMethod      = 0;        // Метод МА
extern int MAPrice       = 0;        // Тип цены МА

extern string Expiration = "5";      // истечение ордера
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   if(!IsTradeAllowed())
      Alert("Для нормальной работы советника необходимо\n"+
            "Разрешить советнику торговать");

   if(!IsLibrariesAllowed())
      Alert("Для нормальной работы советника необходимо\n"+
            "Разрешить импорт из внешних библиотек");

   if(!IsExpertEnabled())
      Alert("Отжата кнопка \"Разрешить запуск советников\"");

   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 30.04.2009                                                     |
//|  Описание : Возвращает флаг разрешения торговли по времени.                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    hb - часы времени начала торговли                                       |
//|    mb - минуты времени начала торговли                                     |
//|    he - часы времени окончания торговли                                    |
//|    me - минуты времени окончания торговли                                  |
//+----------------------------------------------------------------------------+
bool isTradeTimeInt(int hb=0,int mb=0,int he=0,int me=0)
  {
   datetime db, de;           // Время начала и окончания работы
   int      hc;               // Часы текущего времени торгового сервера

   db=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+(string)hb+":"+(string)mb);
   de=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+(string)he+":"+(string)me);
   hc=TimeHour(TimeCurrent());

   if(db>=de)
     {
      if(hc>=he) de+=24*60*60; else db-=24*60*60;
     }

   if(TimeCurrent()>=db && TimeCurrent()<=de) return(True);
   else return(False);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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,Lot(),NormalizeDouble(price,Digits),Slip,sl,tp,Expiration,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 OpenPos()
  {
   double ma=iMA(NULL,0,MAPeriod,0,MAMethod,MAPrice,Shift);
   double ma1=iMA(NULL,0,MAPeriod,0,MAMethod,MAPrice,Shift+1);
   
   if((ma1-ma)<0 && MathAbs(ma1-ma)>Delta && Ask<ma)
     {
      PutOrder(0,Ask);
     }

   if((ma1-ma)>0 && MathAbs(ma1-ma)>Delta && Bid>ma)
     {
      PutOrder(1,Bid);
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lot()
  {
   double lot=Lots;

   if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
     {
      if(OrderProfit()<0)
        {
         lot=OrderLots()*KLot;
        }
     }
   if(lot>MaxLot)lot=Lots;
   return(lot);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double ma=iMA(NULL,0,MAPeriod,0,MAMethod,MAPrice,Shift);
   double ma1=iMA(NULL,0,MAPeriod,0,MAMethod,MAPrice,Shift+1);
     
   if(CountTrades()<1 && isTradeTimeInt(StartHour,StartMin,EndHour,EndMin))
     {
      OpenPos();
     }

   Comment("\n Delta: ",NormalizeDouble(ma1-ma,Digits),"\n Lot: ",Lot());
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 27 апреля 2016, 06:42
+2
Настройки подбираются самостоятельно и важно понимать что делаешь.
avatar

AM2

  • 26 апреля 2016, 11:26
0
Там есть различия в написании. Такие вещи сразу нужно говорить.
avatar

AM2

  • 25 апреля 2016, 17:34
0
Expert TouchMA EURUSD_OP,M5: loaded successfully

Вы его на опционах запустить пытаетесь?
avatar

AM2

  • 25 апреля 2016, 17:26
0
Запустил этот код, настройки на скрине смотрите:




//+------------------------------------------------------------------+
//|                                                      TouchMA.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 double KLot       = 2;        // умножение лота
extern double MaxLot     = 5;        // максимальный лот
extern double Delta      = 0.0035;   // дельта
extern int StopLoss      = 1000;     // лось
extern int TakeProfit    = 1600;     // язь
extern int StartHour     = 0;        // час начала торговли
extern int StartMin      = 30;       // минута начала торговли
extern int EndHour       = 23;       // час окончания торговли
extern int EndMin        = 30;       // минута окончания торговли
extern int Slip          = 30;       // реквот
extern int Shift         = 0;        // на каком баре сигнал 
extern int Magic         = 123;      // магик

extern int MAPeriod      = 12;       // Период МА
extern int MAMethod      = 0;        // Метод МА
extern int MAPrice       = 0;        // Тип цены МА
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   if(!IsTradeAllowed())
      Alert("Для нормальной работы советника необходимо\n"+
            "Разрешить советнику торговать");

   if(!IsLibrariesAllowed())
      Alert("Для нормальной работы советника необходимо\n"+
            "Разрешить импорт из внешних библиотек");

   if(!IsExpertEnabled())
      Alert("Отжата кнопка \"Разрешить запуск советников\"");

   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 30.04.2009                                                     |
//|  Описание : Возвращает флаг разрешения торговли по времени.                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    hb - часы времени начала торговли                                       |
//|    mb - минуты времени начала торговли                                     |
//|    he - часы времени окончания торговли                                    |
//|    me - минуты времени окончания торговли                                  |
//+----------------------------------------------------------------------------+
bool isTradeTimeInt(int hb=0,int mb=0,int he=0,int me=0)
  {
   datetime db, de;           // Время начала и окончания работы
   int      hc;               // Часы текущего времени торгового сервера

   db=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+(string)hb+":"+(string)mb);
   de=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+(string)he+":"+(string)me);
   hc=TimeHour(TimeCurrent());

   if(db>=de)
     {
      if(hc>=he) de+=24*60*60; else db-=24*60*60;
     }

   if(TimeCurrent()>=db && TimeCurrent()<=de) return(True);
   else return(False);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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,Lot(),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 OpenPos()
  {
   double ma=iMA(NULL,0,MAPeriod,0,MAMethod,MAPrice,Shift);
   double ma1=iMA(NULL,0,MAPeriod,0,MAMethod,MAPrice,Shift+1);
   
   if((ma1-ma)<0 && MathAbs(ma1-ma)>Delta && Ask<ma)
     {
      PutOrder(0,Ask);
     }

   if((ma1-ma)>0 && MathAbs(ma1-ma)>Delta && Bid>ma)
     {
      PutOrder(1,Bid);
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lot()
  {
   double lot=Lots;

   if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))
     {
      if(OrderProfit()<0)
        {
         lot=OrderLots()*KLot;
        }
     }
   if(lot>MaxLot)lot=Lots;
   return(lot);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double ma=iMA(NULL,0,MAPeriod,0,MAMethod,MAPrice,Shift);
   double ma1=iMA(NULL,0,MAPeriod,0,MAMethod,MAPrice,Shift+1);
     
   if(CountTrades()<1 && isTradeTimeInt(StartHour,StartMin,EndHour,EndMin))
     {
      OpenPos();
     }

   Comment("\n Delta: ",NormalizeDouble(ma1-ma,Digits),
   "\n МА: ",ma);
  }
//+------------------------------------------------------------------+

avatar

AM2

  • 25 апреля 2016, 17:08
0
Он ждет касания МА. В тестере еще гоняйте.
avatar

AM2

  • 25 апреля 2016, 16:39
+1
Только что закрылось по ТП и ждет дальше



на новой уже открыл

avatar

AM2

  • 25 апреля 2016, 14:43
0
Чтобы отладить этот момент побольше времени понадобится.
avatar

AM2

  • 25 апреля 2016, 12:31
0
Добавил вход на открытии свечи и реверс (Usrednitel3.mq4) www.opentraders.ru/downloads/1144/
avatar

AM2

  • 25 апреля 2016, 10:13
0
Этот код убирает только за собой: www.opentraders.ru/downloads/1155/
avatar

AM2

  • 25 апреля 2016, 09:32
0
удаляет не только свои линии, но и все на графике: трендовые линии, сетку, любой рисунок, все что можно на график положить


Особенность кода :) 
ObjectsDeleteAll();
avatar

AM2

  • 25 апреля 2016, 09:15
+2
Я залил еще другую версию, там 3000% наоптимизировал :D 

avatar

AM2

  • 24 апреля 2016, 21:55
0
У вас все заказы и доработки в следующем месяце.
avatar

AM2

  • 24 апреля 2016, 12:35
+1
Мой вариант. Есть 1,2,3,4,5,6,8,12,13. Если необходимо все остальное могу добавить.
www.opentraders.ru/downloads/1157/

avatar

AM2

  • 24 апреля 2016, 12:32