Slava78

 
Уровень 12

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


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

Рейтинг 2146



РЕКОМЕНДУЮ




Лучшее от Slava78



Советник Комментариев 9
2020-03-17 14:42:32Рейтинг 0

Советник Комментариев 15
2020-05-28 14:02:26Рейтинг 0

Советник
2020-05-28 05:26:27Рейтинг 0

ТС "Новая Черепаха" Комментариев 3
2020-04-19 10:01:11Рейтинг 0

Советник Комментариев 11
2020-01-02 11:45:26Рейтинг 0

Советник-сеточник: Ренко-пирамида

Андрей, напиши пожалуйста советник.
Работает на круглых уровнях, по принципу Ренко.
В определенное время. выставляем два ордера, шаг 100: BUYSTOP, SELLSTOP
При срабатывании одного ордера, второй удаляется и выставляются два новых тем же лотом с шагом 100.
Далее нужно увеличение лота по принципу золотого сечения:0.01, 0.01, 0.02, 0.03, 0.05, 0.08 и т.д.
При срабатывании BUYSTOP, все SELL закрываются. И наоборот.
Настройки:
лот, шаг, время работы, проскальзывание, магик
  • 0
  • Просмотров: 1715
  • 17 ноября 2020, 07:30
  • Slava78
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

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

+
0
на 19-е
avatar

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

  • 17 ноября 2020, 19:42
+
0
сложная реализация при кажущейся простоте задания. пока набросок:


//+------------------------------------------------------------------+
//|                                                     ProBoy20.mq4 |
//|                                              Copyright 2020, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, 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 int Count         = 100;      // баров для посчета
extern int Slip          = 0;        // реквот
extern int Magic         = 123;      // магик

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;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
     }

   r=OrderSend(NULL,type,Lot(),NormalizeDouble(price,_Digits),Slip,0,0,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades(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()<2 && OrderType()==type) || type==-1)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll(int ot=-1)
  {
   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()==0 && (ot==0 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,_Digits),Slip,White);
              }
            if(OrderType()==1 && (ot==1 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,_Digits),Slip,White);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lot()
  {
   double lot=Lots;

   if(CountTrades()>0)
     {
      lot=NormalizeDouble(Lots*CountTrades(),2);
     }
   if(lot>MaxLot)
      lot=Lots;
   return(lot);
  }
//+------------------------------------------------------------------+
//| Подсчет ордеров по типу                                          |
//+------------------------------------------------------------------+
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 || (type==-1 && OrderType()>1))
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//| Удаление отложенных ордеров                                      |
//+------------------------------------------------------------------+
void DelOrder()
  {
   bool del=1;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()>1)
               del=OrderDelete(OrderTicket());
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(CountOrders()==1)
     {
      DelOrder();
     }

   if(CountTrades(0)>0)
     {
      CloseAll(1);
     }
   if(CountTrades(1)>0)
     {
      CloseAll(0);
     }

   if(t!=Time[0])
     {
      PutOrder(4,High[1]);
      PutOrder(5,Low[1]);
      t=Time[0];
     }

   Comment("\n Trades: ",CountTrades(),
           "\n Orders: ",CountOrders());
  }
//+------------------------------------------------------------------+

avatar

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

  • 18 ноября 2020, 22:18
+
0
Жаль конечно, но это не то
avatar

  12  Slava78 Автор Сообщений: 598

  • 19 ноября 2020, 06:04
+
0
Если очень сложно, то не ломайте голову. Есть маленькая просьба вместо этого:
Добавьте в советник BuySell47 умножение лота. Т.к. цена может долгое время двигаться в канале, каждый следующий стоп ордер должен умножаться в 2 раза
avatar

  12  Slava78 Автор Сообщений: 598

  • 19 ноября 2020, 06:15
+
0
в выходные могу глянуть еще, только вопросы еще есть по заданию
avatar

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

  • 19 ноября 2020, 17:42
+
0
Спасибо, подожду
avatar

  12  Slava78 Автор Сообщений: 598

  • 19 ноября 2020, 18:24
+
0
сделал по другому:


//+------------------------------------------------------------------+
//|                                                     ProBoy20.mq4 |
//|                                              Copyright 2020, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, 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 Profit     = 20;       // язь в рублях
extern int Delta         = 100;      // шаг
extern int Slip          = 0;        // реквот
extern int Magic         = 123;      // магик

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;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
     }

   r=OrderSend(NULL,type,Lot(),NormalizeDouble(price,_Digits),Slip,0,0,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades(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()<2 && OrderType()==type) || (OrderType()<2 && type==-1))
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll(int ot=-1)
  {
   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()==0 && (ot==0 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,_Digits),Slip,White);
              }
            if(OrderType()==1 && (ot==1 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,_Digits),Slip,White);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lot()
  {
   double lot=Lots;

   if(CountTrades()>0)
     {
      lot=NormalizeDouble(Lots*CountTrades(),2);
     }
   if(lot>MaxLot)
      lot=Lots;
   return(lot);
  }
//+------------------------------------------------------------------+
//| Подсчет ордеров по типу                                          |
//+------------------------------------------------------------------+
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()>1) || (OrderType()>1  && type==-1))
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//| Удаление отложенных ордеров                                      |
//+------------------------------------------------------------------+
void DelOrder()
  {
   bool del=1;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()>1)
               del=OrderDelete(OrderTicket());
           }
        }
     }
  }
  //+------------------------------------------------------------------+
//| Профит всех ордеров по типу ордера                               |
//+------------------------------------------------------------------+
double AllProfit(int ot=-1)
  {
   double pr=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 && (ot==0 || ot==-1))
              {
               pr+=OrderProfit()+OrderCommission()+OrderSwap();
              }

            if(OrderType()==1 && (ot==1 || ot==-1))
              {
               pr+=OrderProfit()+OrderCommission()+OrderSwap();
              }
           }
        }
     }
   return(pr);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(CountOrders()==1)
     {
      DelOrder();
     }

   if(CountTrades(1)>0)
     {
      CloseAll(0);
     }
     
   if(CountTrades(0)>0)
     {
      CloseAll(1);
     }

   if(CountOrders()<1)
     {
      PutOrder(4,Bid+Delta*_Point);
      PutOrder(5,Bid-Delta*_Point);
     }

   if(AllProfit()>Profit && Profit>0)
      CloseAll();

   Comment("\n Trades: ",CountTrades(),
           "\n Orders: ",CountOrders());
  }
//+------------------------------------------------------------------+



но вот этот момент пока не представляю как объяснить машине:

При срабатывании BUYSTOP, все SELL закрываются. И наоборот


как объяснить машине что сработал бай стоп или селл стоп?

у меня пока стоит появление бая или села. но с этим чехарда.
avatar

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

  • 19 ноября 2020, 21:45
+
0
Он имел ввиду наверное, что при открытии бая все селы закрываются.То есть настал момент открытия бай-ордера и все селы закрылись.
avatar

  20  alex30774 Сообщений: 748

  • 19 ноября 2020, 21:56
+
+1
столько времени и сил потрачено а советник как всегда сливной *spokuha* 



www.opentraders.ru/downloads/2858/
avatar

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

  • 19 ноября 2020, 22:32
+
0
Истину глаголешь!
Вообще во всей этой японской тематике с дурными паттернами, каги, ренко и трёхлинейным прорывом смысла нуль целых и фик десятых.
avatar

  24  ShamanHand Сообщений: 1092 - Наношу добро, причиняю пользу.

  • 20 ноября 2020, 00:46
+
0
Большое спасибо. Значит пирамида в моем изложении не работает. Хотя у некоторых, говорят получается
avatar

  12  Slava78 Автор Сообщений: 598

  • 20 ноября 2020, 07:40
+
0
Вот такой вариант дает прибыль. Шаг 300
avatar

  12  Slava78 Автор Сообщений: 598

  • 20 ноября 2020, 07:49

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