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

Рейтинг 2088



РЕКОМЕНДУЮ



Здравствуйте Oxy. На вашем сайте вы делали эксперта по индикатору Dserg-LinRegressionBreakout_v1.1 могли бы вы его не много до делать.

Ссылка на топик заказа: zakaz.opentraders.ru/24485.html. Оксана сделайте пожалуйста чтобы стоп лосс и тейк профит по умолчанию выставлялись по индикатору Dserg-LinRegressionBreakout_v1.1. Стоп лосс на уровне крестика, а тейк профит на уровне горизонтальной стрелки. То есть в параметрах советника если поставить стоп лосс = 0 и тейк профит = 0 то советник выставляет стоп на противоположной стороне канала по крестику, а тейк профит по горизонтальной стрелке. А если вести цифры допустим стоп = 40 пунктов, а тейк = 80 пунктов тогда советник выставляет по значениям. Спасибо с уважением!
  • +1
  • Просмотров: 3085
  • 27 августа 2016, 11:32
  • ID1972
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
скрипт разметки графика из тхт
26 августа 2016
27 августа 2016

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

+
0
Здесь к Оксане однозначно :) 
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 27 августа 2016, 12:32
+
0
У-у-у какой давний заказ :D 
Вы малость опоздали с просьбой. Аж три недели я замещала Андрея в «столе заказов». Сейчас он вернулся с отпуска и здесь рулит. Думаю, если в сентябре (а до сентября осталось всего нечего), вы полностью опишите тех задание. Именно заново, а не поправить что-то. То Андрей, скорее всего, вам не откажет.
avatar

  27  Oxy Сообщений: 3418 - ..ιllιlι.lι.ιllι.ιlι..

  • 27 августа 2016, 19:20
+
0
Гляну после выходных.
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 28 августа 2016, 08:12
+
0
В архиве 2 советника, какой править?
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 28 августа 2016, 08:19
+
0
Если не сложно сделайте в обоих.
avatar

  6  ID1972 Автор Сообщений: 101

  • 28 августа 2016, 08:41
+
0
Посмотрел. Править не возьмусь. С нуля по ТЗ рассмотрю.
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 29 августа 2016, 07:52
+
0
Тех.задание: MT-4 пять знаков.
1)индикатор Dserg-LinRegressionBreakout_v1.1 отображается на графики.
2)по умолчанию если в параметрах советника стоп лос =0, тейк профит =0, то стоп лос выставляется в советнике на противоположной стороне канала по крестику, тейк по горизонтальной стрелке. Если в параметры советника добавит цифры например стоп лос= 40 пунктов а тейк= 80 пунктов то выставляется по значениям.
3)В сделку входим true/false. При true сделка открывается при появлении стрелки т.е.(свеча закрылась ниже или выше канала появляется стрелка) и мы входим в позицию по рынку. При false выставляется отложенный ордер Buy Stop или Sel Stop на N-расстояние от свечи которая закрылась ниже канала. Если ордер не сработал он удаляется через определённое время.
4) Перевод в без убыток, трелинг стоп, меджик.
Часто бывают ложные пробои для этого нужно сделать.
При входе в сделку по рынку или отложенным ордером сразу выставлялся на противоположной стороне канала отложенный ордер со своим стопом на противоположной стороне канала, с своим тейком, без убытком и тралом и временем жизни если он не активировался то он удаляется через определённое время. Пример: у нас сработал sell stop или мы вошли по стрелки (пр рынку)в продажи как только это произошло на противоположной стороне канала на уровне крестика, где стоит стоп лос активированной сделки на продажу выставляется Buy Stop cо своим стопом на противоположной стороне канала с своим тейком, без убытком и тралом и временем жизни ордера, если ордер не сработал через определённое время он удаляется.
Спасибо с уважением.
avatar

  6  ID1972 Автор Сообщений: 101

  • 29 августа 2016, 08:51
+
0
Этот вариант мудрежный, упрощенный сделал.
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 29 августа 2016, 09:16
+
0
Сделал с нуля стопы по значкам. ТЗ взял из топика по ссылке:




//+------------------------------------------------------------------+
//|                                                     DSergExp.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      = 0;        // лось
extern int TakeProfit    = 0;        // язь
extern int BULevel       = 0;        // уровень БУ
extern int BUPoint       = 30;       // пункты БУ
extern int TrailingStop  = 0;        // трал
extern int Expiration    = 14;       // истечениe ордера в часах
extern int Slip          = 30;       // реквот
extern int Shift         = 1;        // на каком баре сигнал индикатора
extern int Delta         = 50;       // расстояние от цены
extern int Magic         = 123;      // магик

extern string IndName    = "DSerg";
extern int    Nlin       = 25;        // Мин. длина канала линейной регрессии
extern int    r0         = 150;       // Макс. высота канала в пунктах
extern double t0         = 2.618;     // Цель при пробое отн. ширины канала
extern bool   useClose   = true;      // Использовать для расчёта Close,\n если false - High/Low
extern int    Nbars      = 5000;      // Количество баров для расчёта

datetime t=0;
//+------------------------------------------------------------------+
//| 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;
   double strelka=iCustom(NULL,0,IndName,"",Nlin,"",r0,"",t0,"",useClose,"",Nbars,7,Shift);
   double kresrik=iCustom(NULL,0,IndName,"",Nlin,"",r0,"",t0,"",useClose,"",Nbars,2,Shift);

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

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

   r=OrderSend(NULL,type,Lots,NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,TimeCurrent()+Expiration*3600,clr);
   Print("Price: ",price," SL: ",sl," TP: ",tp);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountOrders()
  {
   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()>=0) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OpenOrd()
  {
   double up=iCustom(NULL,0,IndName,"",Nlin,"",r0,"",t0,"",useClose,"",Nbars,5,Shift);
   double dn=iCustom(NULL,0,IndName,"",Nlin,"",r0,"",t0,"",useClose,"",Nbars,6,Shift);

   if(up>0)
     {
      PutOrder(4,Ask+Delta*Point);
     }

   if(dn>0)
     {
      PutOrder(5,Bid-Delta*Point);
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Trailing()
  {
   bool mod;
   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)
              {
               if(Bid-OrderOpenPrice()>TrailingStop*Point)
                 {
                  if(OrderStopLoss()<Bid-TrailingStop*Point)
                    {
                     mod=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*Point,OrderTakeProfit(),0,Yellow);
                     return;
                    }
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if((OrderOpenPrice()-Ask)>TrailingStop*Point)
                 {
                  if((OrderStopLoss()>(Ask+TrailingStop*Point)) || (OrderStopLoss()==0))
                    {
                     mod=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TrailingStop*Point,OrderTakeProfit(),0,Yellow);
                     return;
                    }
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void BU()
  {
   bool m;
   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)
              {
               if(OrderOpenPrice()<=(Bid-(BULevel+BUPoint)*Point) && OrderOpenPrice()>OrderStopLoss())
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+BUPoint*Point,OrderTakeProfit(),0,Yellow);
                  return;
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if(OrderOpenPrice()>=(Ask+(BULevel+BUPoint)*Point) && (OrderOpenPrice()<OrderStopLoss() || OrderStopLoss()==0))
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-BUPoint*Point,OrderTakeProfit(),0,Yellow);
                  return;
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double up=iCustom(NULL,0,IndName,"",Nlin,"",r0,"",t0,"",useClose,"",Nbars,5,Shift);
   double dn=iCustom(NULL,0,IndName,"",Nlin,"",r0,"",t0,"",useClose,"",Nbars,6,Shift);
   double strelka=iCustom(NULL,0,IndName,"",Nlin,"",r0,"",t0,"",useClose,"",Nbars,7,Shift);
   double kresrik=iCustom(NULL,0,IndName,"",Nlin,"",r0,"",t0,"",useClose,"",Nbars,2,Shift);

   if(CountOrders()<1 && t!=Time[0])
     {
      OpenOrd();
      t=Time[0];
     }

   if(BULevel>0) BU();
   if(TrailingStop>0) Trailing();

   Comment("\n up: ",up,
           "\n dn: ",dn,
           "\n strelka: ",strelka,
           "\n kresrik: ",kresrik);
  }
//+------------------------------------------------------------------+



Прошу сделать советник на основе индикатора Dserg-LinRegressionBreakout_v1.1, открытие ордера при сигнале «стрелка», возможность
выставлять в настройках:

— количество пунктов через которые выставляется ордер;
— СЛ;
— ТП;
— трал ордера;
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 29 августа 2016, 09:08
+
0
ОК, где ссылка на скачивания?
avatar

  6  ID1972 Автор Сообщений: 101

  • 29 августа 2016, 09:37
+
0
Пробовал по ТЗ сделать, я запыхался, так что только упрощенка: www.opentraders.ru/downloads/1301/



avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 29 августа 2016, 10:17
+
0
Андрей, в советнике в параметрах: без убыток с выставлением в пунктах есть, а вот в трале пункты я не увидел.
avatar

  6  ID1972 Автор Сообщений: 101

  • 29 августа 2016, 10:28
+
0
Я ставил простой трал, тралит на указанном расстоянии от цены.
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 29 августа 2016, 11:17
+
0
OK
avatar

  6  ID1972 Автор Сообщений: 101

  • 29 августа 2016, 11:21
+
0
В тестере советник работает. Ставлю на реал не работает, стрелка появляется а ордер не выставляется. Кнопки все нажаты как надо другие советники работают. Кидаю на демо тоже не работает.
avatar

  6  ID1972 Автор Сообщений: 101

  • 30 августа 2016, 08:49
+
0
Работает, только ждет новую свечку для открытия:


Редактирован: 30 августа 2016, 09:25
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 30 августа 2016, 09:15
+
0
Добавил выбор стоповый или маркет ордер ставить после сигнала:


//+------------------------------------------------------------------+
//|                                                     DSergExp.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      = 0;        // лось
extern int TakeProfit    = 0;        // язь
extern int BULevel       = 0;        // уровень БУ
extern int BUPoint       = 30;       // пункты БУ
extern int TrailingStop  = 0;        // трал
extern int Expiration    = 14;       // истечениe ордера в часах
extern int StopMarket    = 0;        // 0-Stop 1-Market
extern int Slip          = 30;       // реквот
extern int Shift         = 1;        // на каком баре сигнал индикатора
extern int Delta         = 50;       // расстояние от цены
extern int Magic         = 123;      // магик

extern string IndName    = "DSerg";
extern int    Nlin       = 25;        // Мин. длина канала линейной регрессии
extern int    r0         = 150;       // Макс. высота канала в пунктах
extern double t0         = 2.618;     // Цель при пробое отн. ширины канала
extern bool   useClose   = true;      // Использовать для расчёта Close,\n если false - High/Low
extern int    Nbars      = 5000;      // Количество баров для расчёта

datetime t=0;
//+------------------------------------------------------------------+
//| 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;
   double strelka=iCustom(NULL,0,IndName,"",Nlin,"",r0,"",t0,"",useClose,"",Nbars,7,Shift);
   double krestik=iCustom(NULL,0,IndName,"",Nlin,"",r0,"",t0,"",useClose,"",Nbars,2,Shift);

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

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

   r=OrderSend(NULL,type,Lots,NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,TimeCurrent()+Expiration*3600,clr);
   Print("Price: ",price," SL: ",sl," TP: ",tp);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountOrders()
  {
   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()>=0) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OpenOrd()
  {
   double up=iCustom(NULL,0,IndName,"",Nlin,"",r0,"",t0,"",useClose,"",Nbars,5,Shift);
   double dn=iCustom(NULL,0,IndName,"",Nlin,"",r0,"",t0,"",useClose,"",Nbars,6,Shift);

   if(up>0)
     {
      if(StopMarket==0) PutOrder(4,Ask+Delta*Point);
      if(StopMarket==1) PutOrder(0,Ask);
     }

   if(dn>0)
     {
      if(StopMarket==0) PutOrder(5,Bid-Delta*Point);
      if(StopMarket==1) PutOrder(1,Bid);
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Trailing()
  {
   bool mod;
   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)
              {
               if(Bid-OrderOpenPrice()>TrailingStop*Point)
                 {
                  if(OrderStopLoss()<Bid-TrailingStop*Point)
                    {
                     mod=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*Point,OrderTakeProfit(),0,Yellow);
                     return;
                    }
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if((OrderOpenPrice()-Ask)>TrailingStop*Point)
                 {
                  if((OrderStopLoss()>(Ask+TrailingStop*Point)) || (OrderStopLoss()==0))
                    {
                     mod=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TrailingStop*Point,OrderTakeProfit(),0,Yellow);
                     return;
                    }
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void BU()
  {
   bool m;
   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)
              {
               if(OrderOpenPrice()<=(Bid-(BULevel+BUPoint)*Point) && OrderOpenPrice()>OrderStopLoss())
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+BUPoint*Point,OrderTakeProfit(),0,Yellow);
                  return;
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if(OrderOpenPrice()>=(Ask+(BULevel+BUPoint)*Point) && (OrderOpenPrice()<OrderStopLoss() || OrderStopLoss()==0))
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-BUPoint*Point,OrderTakeProfit(),0,Yellow);
                  return;
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double up=iCustom(NULL,0,IndName,"",Nlin,"",r0,"",t0,"",useClose,"",Nbars,5,Shift);
   double dn=iCustom(NULL,0,IndName,"",Nlin,"",r0,"",t0,"",useClose,"",Nbars,6,Shift);
   double strelka=iCustom(NULL,0,IndName,"",Nlin,"",r0,"",t0,"",useClose,"",Nbars,7,Shift);
   double krestik=iCustom(NULL,0,IndName,"",Nlin,"",r0,"",t0,"",useClose,"",Nbars,2,Shift);

   if(CountOrders()<1 && t!=Time[0])
     {
      OpenOrd();
      t=Time[0];
     }

   if(BULevel>0) BU();
   if(TrailingStop>0) Trailing();

   Comment("\n up: ",up,
           "\n dn: ",dn,
           "\n strelka: ",strelka,
           "\n krestik: ",krestik);
  }
//+------------------------------------------------------------------+


avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 30 августа 2016, 09:35
+
0
А где ссылка на скачивания? Спасибо!
avatar

  6  ID1972 Автор Сообщений: 101

  • 30 августа 2016, 09:38
+
+1
Добавил выставление ордера на противоположную границу.
www.opentraders.ru/downloads/1301/



avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 30 августа 2016, 10:54
+
0
Андрей могли бы вы сделать, когда выставляется ордер на противоположную границу канала, чтобы в советнике в параметрах было бы по умолчанию если стоп лосс2=0, то он выставлялся автоматически на противоположной границе канала.Также если тейк профит2=0 то у него такое же расстояние как и у активированного ордера. И также был у него свой без убыток и трал. Спасибо, с уважением.
avatar

  6  ID1972 Автор Сообщений: 101

  • 30 августа 2016, 18:15
+
0
Для информации forum.mql4.com/ru/30164/page3#279355
avatar

  10  Winner Сообщений: 55

  • 31 августа 2016, 12:18

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