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

Рейтинг 2147



РЕКОМЕНДУЮ



Советник пирамидинг+усреднения.

Вот тут полное описание
zakaz.opentraders.ru/36421.html#comment128277
  • 0
  • Просмотров: 4831
  • 24 февраля 2017, 17:58
  • Names
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

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

+
0
А сколько за такой на платном запросили, раз так долго ждете? :D 
Могу сделать только максимально упрощенный вариант.
avatar

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

  • 25 февраля 2017, 05:57
+
0
Я на мол предлагал более 200 баксов, но чет прогеры там не кудышные не кто браться не хочет.Либо денег надо больше, либо пишут типа слишком сложно все это реализовать., но там задание в разы было сложней по гибкости.
Там есть основной советник залил на хостер, возможно ли к нему просто добавить пирамиду стоп ордерам( чтобы можно было задавать коэф. соотношение лотности пирамиды к усреднению)?
avatar

  3  Names Автор Сообщений: 57

  • 25 февраля 2017, 18:05
+
0

Вот пример как примерно должно работать.
avatar

  3  Names Автор Сообщений: 57

  • 25 февраля 2017, 18:08
+
0
Набросаю завтра.
avatar

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

  • 25 февраля 2017, 22:12
+
0
Вот пример, только приходиться отдельно ручками присматривать отдельно по пирамидингу и по усреднению.Белым квадратом выделил, где у нас не сработали стоповые ордера по усреднению, т.к не было отката на величину дельта.
avatar

  3  Names Автор Сообщений: 57

  • 26 февраля 2017, 00:35
+
0
юзаю в ручном режиме, то есть отдельно усреднение и пирамидинг+ 3 сову закрывашку,).Метод не самый эффективный(.
avatar

  3  Names Автор Сообщений: 57

  • 26 февраля 2017, 00:49
+
0
Начнем с открытия. Сейчас советник открывает бай сел плюс соответствующая сетка если цена выше ниже МА 600. Есть шаг, отступ от цены, увеличение лота и др.




//+------------------------------------------------------------------+
//|                                                     Piramida.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
input double  Lot         = 0.01;     // объем первого ордера
input double  MaxLot      = 100;      // максимальный лот 
input double  KLot        = 2;        // умножение лота ордеров 
input double  KStep       = 2;        // увеличение шага

input int StopLoss        = 0;        // стоплосс
input int TakeProfit      = 0;        // тейкпрофит

input int Step            = 100;      // шаг ордеров
input int Delta           = 100;      // отступ от цены

input int Expiration      = 55;       // истечение ордера в часах
input int Count           = 5;        // количество ордеров

input int Slip            = 3;        // проскальзывание
input int MAPeriod        = 600;      // период МА
input int Magic           = 123;      // магик

bool b=true,s=true;
//+------------------------------------------------------------------+
//| 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=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(type),NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,TimeCurrent()+Expiration*3600,clr);
  }
//+------------------------------------------------------------------+
//| Подсчет ордеров по типу                                          |
//+------------------------------------------------------------------+
int CountOrders(int type=-1)
  {
   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 || (OrderType()>=0 && type==-1)) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//| Лот                                                              |
//+------------------------------------------------------------------+
double Lots(int type)
  {
   double lots=Lot;
   double MaximumLot=MarketInfo(NULL,MODE_MAXLOT);
   double MinimumLot=MarketInfo(NULL,MODE_MINLOT);

   if(Lot==0) lots=AccountEquity()/(Count*2*10000);
   lots=NormalizeDouble(lots*MathPow(KLot,CountOrders(type)),2);
   if(lots>MaximumLot) lots=MaximumLot;
   if(lots<MinimumLot) lots=MinimumLot;
   return(lots);
  }
//+------------------------------------------------------------------+
//| Шаг для гридера                                                  |
//+------------------------------------------------------------------+
double Steps(int ot)
  {
   double step=Step;
   step=NormalizeDouble(Step*MathPow(KStep,CountOrders(ot)),2);
   return(step);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double ma=iMA(NULL,0,MAPeriod,0,0,0,0);

   if(Bid>ma && b)
     {
      PutOrder(0,Ask);//buy
      PutOrder(1,Bid);//sell
      
      for(int i=0; i<Count;i++)
        {
           {
            PutOrder(4,Bid+Delta*Point+Steps(4)*Point*i);//buystop
            b=false;
            s=true;
           }
        }

      if(Bid<ma && s)
        {
         PutOrder(0,Ask);//buy
         PutOrder(1,Bid);//sell
         
         for(int i=0; i<Count;i++)
           {
            PutOrder(5,Bid-Delta*Point-Steps(5)*Point*i);//sellstop
            s=false;
            b=true;
           }
        }
     }
  }
//+------------------------------------------------------------------+


avatar

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

  • 26 февраля 2017, 06:31
+
0
Добавил отключаемое выставление тейка на МА для открытых поз. И еще могу добавить какое то простое условие для закрытия удаления ордеров.

www.opentraders.ru/downloads/1493/
avatar

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

  • 26 февраля 2017, 12:01
+
0
Возможно сделать, чтобы пирамида работала в тандеме вместе с этим советником. то есть к нему добавить пирамиду.А закрывалась пирамида вместе с основной серией по усреднениею как в текущем советнике?
файлообменник.рф/ivodewq526ap.html
сам советник.
avatar

  3  Names Автор Сообщений: 57

  • 26 февраля 2017, 12:40
+
0
Желательно добавить, чтобы ордера выставлялись не от балды, а с точкой входа к примеру бы выступал зигзаг с периодом 600 для тф м1.
avatar

  3  Names Автор Сообщений: 57

  • 26 февраля 2017, 12:44
+
+1
В образце советника не от балды. Там превышение цены над МА. Сейчас так и сделано:



//+------------------------------------------------------------------+
//|                                                     Piramida.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
input double  Lot         = 0.01;     // объем первого ордера
input double  MaxLot      = 100;      // максимальный лот 
input double  KLot        = 2;        // умножение лота ордеров 
input double  KStep       = 2;        // увеличение шага

input int StopLoss        = 0;        // стоплосс
input int TakeProfit      = 0;        // тейкпрофит

input int Step            = 100;      // шаг ордеров
input int Delta           = 100;      // отступ от цены
input int DeltaMA         = 400;      // отступ от MA

input int Expiration      = 55;       // истечение ордера в часах
input int Count           = 5;        // количество ордеров

input int Slip            = 3;        // проскальзывание
input int MAPeriod        = 600;      // период МА

input int MATakeProfit    = 0;        // 1-тейк по МА
input int Magic           = 123;      // магик

bool b=true,s=true;
//+------------------------------------------------------------------+
//| 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=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(type),NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,TimeCurrent()+Expiration*3600,clr);
  }
//+------------------------------------------------------------------+
//| Подсчет ордеров по типу                                          |
//+------------------------------------------------------------------+
int CountOrders(int type=-1)
  {
   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 || (OrderType()>=0 && type==-1)) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//| Лот                                                              |
//+------------------------------------------------------------------+
double Lots(int type)
  {
   double lots=Lot;
   double MaximumLot=MarketInfo(NULL,MODE_MAXLOT);
   double MinimumLot=MarketInfo(NULL,MODE_MINLOT);

   if(Lot==0) lots=AccountEquity()/(Count*2*10000);
   lots=NormalizeDouble(lots*MathPow(KLot,CountOrders(type)),2);
   if(lots>MaximumLot) lots=MaximumLot;
   if(lots<MinimumLot) lots=MinimumLot;
   return(lots);
  }
//+------------------------------------------------------------------+
//| Шаг для гридера                                                  |
//+------------------------------------------------------------------+
double Steps(int ot)
  {
   double step=Step;
   step=NormalizeDouble(Step*MathPow(KStep,CountOrders(ot)),2);
   return(step);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void MATake(double ma)
  {
   bool m;
   double tp=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)
              {
               tp=NormalizeDouble(ma,Digits);
               if(OrderTakeProfit()==0 && OrderTakeProfit()!=tp && OrderOpenPrice()<ma)
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),0,tp,0,Yellow);
              }

            if(OrderType()==1)
              {
               tp=NormalizeDouble(ma,Digits);
               if(OrderTakeProfit()==0 && OrderTakeProfit()!=tp && OrderOpenPrice()>ma)
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),0,tp,0,Yellow);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double ma=iMA(NULL,0,MAPeriod,0,0,0,0);

   if(MATakeProfit>0) MATake(ma);

   if(ma-Bid>DeltaMA*Point && b)
     {
      PutOrder(0,Ask);//buy
      PutOrder(1,Bid);//sell

      for(int i=0;i<Count;i++)
        {
           {
            PutOrder(4,Bid+Delta*Point+Steps(4)*Point*i);//buystop
            b=false;
            s=true;
           }
        }
     }

   if(Bid-ma>DeltaMA*Point && s)
     {
      PutOrder(0,Ask);//buy
      PutOrder(1,Bid);//sell

      for(int i=0;i<Count;i++)
        {
         PutOrder(5,Bid-Delta*Point-Steps(5)*Point*i);//sellstop
         s=false;
         b=true;
        }
     }
  }
//+------------------------------------------------------------------+
avatar

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

  • 26 февраля 2017, 19:31
+
0
Закрытие ордеров происходит как, можно привязать к 600 ма как в оригинальной сове?
avatar

  3  Names Автор Сообщений: 57

  • 26 февраля 2017, 21:08
+
0
Результата с фиксированным ТП жесть.
avatar

  3  Names Автор Сообщений: 57

  • 26 февраля 2017, 21:13
+
0
if(nn == 1) {
         mm = NormalizeDouble(iMA(Symbol(), PERIOD_M1, 600, 0, MODE_LWMA, PRICE_CLOSE, 1), Digits);
         if(avrprice > mm) {
            mm = NormalizeDouble(iMA(Symbol(), PERIOD_M5, 600, 0, MODE_LWMA, PRICE_CLOSE, 1), Digits);
         }
         if(avrprice > mm) {
            mm = NormalizeDouble(iMA(Symbol(), PERIOD_M15, 600, 0, MODE_LWMA, PRICE_CLOSE, 1), Digits);
         }
      }
      if(nn == -1) {
         mm = NormalizeDouble(iMA(Symbol(), PERIOD_M1, 600, 0, MODE_LWMA, PRICE_CLOSE, 1) + MarketInfo(Symbol(), MODE_SPREAD) * Point, Digits);
         if(avrprice < mm) {
            mm = NormalizeDouble(iMA(Symbol(), PERIOD_M5, 600, 0, MODE_LWMA, PRICE_CLOSE, 1) + MarketInfo(Symbol(), MODE_SPREAD) * Point, Digits);
         }
         if(avrprice < mm) {
            mm = NormalizeDouble(iMA(Symbol(), PERIOD_M15, 600, 0, MODE_LWMA, PRICE_CLOSE, 1) + MarketInfo(Symbol(), MODE_SPREAD) * Point, Digits);
         }
      }
      for(i = 0; i < OrdersTotal(); i++) {
         if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
            if((OrderSymbol() == Symbol())&&(OrderMagicNumber() == Magic)&&((OrderType() == OP_BUY)||(OrderType() == OP_SELL))) {
               ModifyOrder(-1, 0, mm, 0);
avatar

  3  Names Автор Сообщений: 57

  • 26 февраля 2017, 21:25
+
0
Есть отключаемый тп по ма:

input int MATakeProfit = 0; // 1-тейк по МА
avatar

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

  • 27 февраля 2017, 18:30
+
0
У меня он просто выставляет на 600ма, не переводит 600ма по ТФ м1-м5 и м15.
avatar

  3  Names Автор Сообщений: 57

  • 28 февраля 2017, 02:20
+
0
почему советник на 600 ма закрывает сеть не одновременно по усреднению и пирамидингу-это баг?
avatar

  3  Names Автор Сообщений: 57

  • 1 марта 2017, 07:02
+
+1
По какому алгоритму сов выставляет стоповые ордера, так запрограммировали или это очередной баг, фиксить баги будем?
avatar

  3  Names Автор Сообщений: 57

  • 3 марта 2017, 00:32
+
0
Здравствуйте, извиняюсь если мне нельзя тут вклиниваться в разговор, но я так ждал и искал подобный советник, что не удержался- у меня уровень мал, чтобы заказать советник — так я сам пытаюсь сваять из кусочков чужих:) , а по поводуПо какому алгоритму сов выставляет стоповые ордера , то if(Bid-ma>DeltaMA*Point && s) если цена выше ниже МА на дельту — то ордер.
avatar

  4  ruzaden Сообщений: 7

  • 3 марта 2017, 13:49
+
+1
Сов баговый, выставляет ордера не по зз, а от уровней, что приводит на флете наматывание лотов, на ма не закрывает ордера, стоп сетку строит неадекватно.Видимо не хотят допиливать уже молчок 3 день.
avatar

  3  Names Автор Сообщений: 57

  • 3 марта 2017, 21:24
+
0
Я так и не понял, мне ждать сову или нет, которая бы умела выставлять ордера адекватно?
avatar

  3  Names Автор Сообщений: 57

  • 21 марта 2017, 02:42
+
0
Если выполнение затягивается, значит обращайтесь к платному. Здесь делаю только то что можно быстро сделать.
Редактирован: 21 марта 2017, 04:23
avatar

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

  • 21 марта 2017, 04:20
+
0
тогда еще подожду
avatar

  3  Names Автор Сообщений: 57

  • 21 марта 2017, 22:05
+
0
тогда еще подожду
Чего? Вам отказали.
avatar

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

  • 22 марта 2017, 02:46
+
0
Буду по червенцу с зарплаты откладывать.
avatar

  3  Names Автор Сообщений: 57

  • 22 марта 2017, 03:17
+
0
А за бабло не откажут?
avatar

  3  Names Автор Сообщений: 57

  • 23 марта 2017, 10:56
+
0
Мне еще долго ждать, как ни как паска уже прошла?
Может кто-то в состоянии и в адеквате собрать сов который бы вставлял разнонаправленные ордера?
avatar

  3  Names Автор Сообщений: 57

  • 20 апреля 2017, 11:55
+
+1
Здравствуйте, боюсь Вам ждать о-о-о-чень долго придется:) . Без обид, анекдот знаете?
Доктор, меня никто не любит! Может ты мне скажешь, почему, мерзкий тупой старикашка! :) 
Попробуйте советник Ilan pyramid там и мартин и одновременно пирамида, а здесь составьте новое тех задание с подробным описанием Ваших запросов. Да, и слово ПОЖАЛУЙСТА не забудьте:) 
avatar

  4  ruzaden Сообщений: 7

  • 22 апреля 2017, 14:01
+
0
жесть конечно ни бесплатно, ни платно не хотят ничего делать.
avatar

  3  Names Автор Сообщений: 57

  • 24 апреля 2017, 17:52

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