Gatti

 
Уровень 5

  Торгую в компаниях:


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

Рейтинг 2146



РЕКОМЕНДУЮ



Советник MUV

Прошу написать такой советник. По скользящей средней тянется ордер BUYSTOP или SELLSTOP, у ордеров стоп и профит. При срабатывании стопа или профита снова выставляется отложенный ордер
  • +2
  • Просмотров: 2665
  • 13 января 2017, 09:08
  • Gatti
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Прошу написать советник на индикаторе Scalper_MA
Следующая запись в группе  
Индикатор
12 января 2017
13 января 2017

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

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

+
0
www.opentraders.ru/downloads/1251 полуавтомат, ток для нового придется заново руками кидать
avatar

  10  cardon Сообщений: 376

  • 13 января 2017, 11:38
+
0
Не пойдёт, нужен автомат
avatar

  5  Gatti Автор Сообщений: 53

  • 13 января 2017, 12:23
+
0
ты даже его не попробовал))):) 
ну дело хозяйское, жди ответа програмёра.
avatar

  10  cardon Сообщений: 376

  • 13 января 2017, 12:35
+
0
Попробовал ). Не понял, как работает, ничего не открывает,
почему магик: — 1?
Дистанс, левел, пойнт там по 4х или 5-знаку?
Понял так, что по 4х — тогда нужны десятые после запятой — для точности настройки.
Поставил всё по 1п. — открытый ордер закрыло в +, не понял — ТП или что, там.
Но линий отложек на графике — не видать.
Редактирован: 13 января 2017, 15:39
avatar

  11  preasto Сообщений: 445

  • 13 января 2017, 15:28
+
+2
он частично переписан с 4 знака, все под 5 знаков, а вот расстояние осталось под 4, тоесть ставишь 2 — будет 20 пипок под 5-ти знак

кинь на график машку с нужными параметрами, чтоб было видно его работу визуально и потом в советнике выстави эти же параметры и все, после 10 минут теста все станет понятно.
вот пример небольшой:

на скрине у советника выставлены теже параметры что и у машки на графике, что нам было видно.
2 — это 20 пипок от машки у лимитника, кинешь стоп ордер, будет тралить и его.
стоп и тейк автоматически выставятся при срабатывание ордера (настройки по 5 знаку)
уровень бу — при достижении 30 пипиок по 5 знаку переставит в 0.
ТФ curent — текущий тф.
все) 10 минут теста и все поймешь


и да закрыло ордер в бу у тебя, убери его или увеличь просто
Редактирован: 13 января 2017, 18:44
avatar

  10  cardon Сообщений: 376

  • 13 января 2017, 18:39
+
0
Пробовал ли период МА уменьшать, 9-14,
менять параметры: Экспоненциал, закрытие по Close и т.п.?
— Рыночные ордера самому открывать, или сов их открывает?
— Иль надо только отложки кидать, когда сов. какую-то зацепит в рыночное исполнение — остальные тралит?
Редактирован: 13 января 2017, 23:26
avatar

  11  preasto Сообщений: 445

  • 13 января 2017, 23:07
+
0
тралит хоть со значением 1, параметры экспоненциал, закрытие по Close — влияют на расстояние, ордера сам кидай руками, тралит все, какая сработает той выставит стоп и тейк.
поработай на м1 или м5 и поймешь работу. Потом иди на свой тф. Такое ощущение что ты сам у себя все это спрашивал) меняй на графике МА и в сове, такие же параметры ставь) и тести методы, все четко там. Помойму 1 ордера достаточно под машкой если на отбой и над нею если пробой, куда еще больше, это уже не по машке тс.
avatar

  10  cardon Сообщений: 376

  • 13 января 2017, 23:53
+
0
На среду будет заказ.
avatar

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

  • 13 января 2017, 20:17
+
0
avatar

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

  • 14 января 2017, 04:47
+
0
Хорошо, но алгоритм не поняли, прилагаю рисунок
avatar

  5  Gatti Автор Сообщений: 53

  • 15 января 2017, 19:48
+
0
Хорошо, но алгоритм не поняли

Составьте задание по образцу: am2.opentraders.ru/29048.html
Какое тз такой и результат.
Редактирован: 15 января 2017, 20:17
avatar

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

  • 15 января 2017, 20:11
+
0
В советнике для МТ4 используется индикатор Moving Averages;
• Советник торгует в реверс (LONG/SHORT)
• В советнике должен быть реализован StopLoss,
В советнике должен быть реализован Takeprofit
Вход в лонг:
Цена находится ниже средней, выставляется ордер бай-стоп на средюю, с тейком и профитом
Вход в шорт:
Цена находится выше средней, выставляется селл-стоп на среднюю с тейком и стопом
Модифицируются только ордера бай-стоп и селл- стоп и соответственно с ними тейк и стоп
Как только ордер вышел по стопу, то выставляется этот же отложенный ордер на среднюю, если по профиту то противоположный.Если цена уходит без нас, то отложка модифицируется на каждой свече по средней, пока не сработает ордер BUY или SELL
Наличие Magik приветствуется

avatar

  5  Gatti Автор Сообщений: 53

  • 15 января 2017, 20:43
+
0
ТЗ изменилось по сравнению с первоначальным. Этого делать нельзя.

Вот по тому что в начале:




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

//--- Inputs
extern double Lots      = 0.1; // лот
extern int StopLoss     = 500; // стоп лосс ордера
extern int TakeProfit   = 1500;// тейк профит ордера
extern int MAPeriod     = 12;  // период МА
extern int Delta        = 150; // расстояние от цены
extern int Slip         = 30;  // реквот
extern int Shift        = 1;   // на каком баре сигнал индикатора
extern int Magic        = 333; // магик
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int    r=0;
   color clr=clrNONE;
   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);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountOrders(int type)
  {
   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()==type) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void MATrailing()
  {
   bool mod;
   double sl=0,tp=0;

   double ma=iMA(NULL,0,MAPeriod,0,0,0,Shift);

   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderType()==4)
           {
            if(Bid<ma)
              {
               sl=NormalizeDouble(ma-StopLoss*Point,Digits);
               tp=NormalizeDouble(ma+StopLoss*Point,Digits);
               if(OrderStopLoss()!=sl && OrderTakeProfit()!=tp && OrderOpenPrice()!=ma)
                 {
                  mod=OrderModify(OrderTicket(),NormalizeDouble(ma,Digits),sl,tp,0,Yellow);
                  Print("MA: ",(string)ma+"SL: ",(string)sl+"TP: ",(string)tp);
                 }
               return;
              }
           }

         if(OrderType()==5)
           {
            if(Bid>ma)
              {
               sl=NormalizeDouble(ma+StopLoss*Point,Digits);
               tp=NormalizeDouble(ma-StopLoss*Point,Digits);
               if(OrderStopLoss()!=sl && OrderTakeProfit()!=tp && OrderOpenPrice()!=ma)
                 {
                  mod=OrderModify(OrderTicket(),NormalizeDouble(ma,Digits),sl,tp,0,Yellow);
                  Print("MA: ",(string)ma+"SL: ",(string)sl+"TP: ",(string)tp);
                 }
               return;
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(MAPeriod>0) MATrailing();
   double ma=iMA(NULL,0,MAPeriod,0,0,0,Shift);

   if(CountTrades()<1)
     {
      if(CountOrders(4)<1 && Bid<ma) PutOrder(4,ma);
      if(CountOrders(5)<1 && Bid>ma) PutOrder(5,ma);
     }
  }
//+------------------------------------------------------------------+

avatar

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

  • 15 января 2017, 21:33
+
0
Ничего не менялось, Вы просто поняли ТЗ, что нужно двумя ордерами работать, а я хотел только одним(
avatar

  5  Gatti Автор Сообщений: 53

  • 15 января 2017, 21:43
+
0
Теперь вроде бы точно, завтра на рынке проверю ещё
avatar

  5  Gatti Автор Сообщений: 53

  • 15 января 2017, 21:53
+
0
Магик не различает(
avatar

  5  Gatti Автор Сообщений: 53

  • 16 января 2017, 08:37
+
0
Сейчас посмотрите:


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

//--- Inputs
extern double Lots      = 0.1; // лот
extern int StopLoss     = 500; // стоп лосс ордера
extern int TakeProfit   = 1500;// тейк профит ордера
extern int MAPeriod     = 12;  // период МА
extern int Delta        = 150; // расстояние от цены
extern int Slip         = 30;  // реквот
extern int Shift        = 1;   // на каком баре сигнал индикатора
extern int Magic        = 333; // магик
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int    r=0;
   color clr=clrNONE;
   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);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountOrders(int type)
  {
   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()==type) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void MATrailing()
  {
   bool mod;
   double sl=0,tp=0;

   double ma=iMA(NULL,0,MAPeriod,0,0,0,Shift);

   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==4)
              {
               if(Bid<ma)
                 {
                  sl=NormalizeDouble(ma-StopLoss*Point,Digits);
                  tp=NormalizeDouble(ma+StopLoss*Point,Digits);
                  if(OrderStopLoss()!=sl && OrderTakeProfit()!=tp && OrderOpenPrice()!=ma)
                    {
                     mod=OrderModify(OrderTicket(),NormalizeDouble(ma,Digits),sl,tp,0,Yellow);
                     Print("MA: ",(string)ma+"SL: ",(string)sl+"TP: ",(string)tp);
                    }
                  return;
                 }
              }

            if(OrderType()==5)
              {
               if(Bid>ma)
                 {
                  sl=NormalizeDouble(ma+StopLoss*Point,Digits);
                  tp=NormalizeDouble(ma-StopLoss*Point,Digits);
                  if(OrderStopLoss()!=sl && OrderTakeProfit()!=tp && OrderOpenPrice()!=ma)
                    {
                     mod=OrderModify(OrderTicket(),NormalizeDouble(ma,Digits),sl,tp,0,Yellow);
                     Print("MA: ",(string)ma+"SL: ",(string)sl+"TP: ",(string)tp);
                    }
                  return;
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(MAPeriod>0) MATrailing();
   double ma=iMA(NULL,0,MAPeriod,0,0,0,Shift);

   if(CountTrades()<1)
     {
      if(CountOrders(4)<1 && Bid<ma) PutOrder(4,ma);
      if(CountOrders(5)<1 && Bid>ma) PutOrder(5,ma);
     }
  }
//+------------------------------------------------------------------+

avatar

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

  • 16 января 2017, 18:45
+
0
avatar

  5  Gatti Автор Сообщений: 53

  • 16 января 2017, 19:44
+
0
Значит к платному.
avatar

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

  • 16 января 2017, 19:48

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