Slava78

 
Уровень 12

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


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

Рейтинг 2154



РЕКОМЕНДУЮ




Лучшее от 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
  • Просмотров: 1794
  • 17 ноября 2020, 07:30
  • Slava78
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

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

0
на 19-е
avatar

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

  • 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 Сообщений: 16506 - Андрей

  • 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 Сообщений: 16506 - Андрей

  • 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 Сообщений: 16506 - Андрей

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

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

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



www.opentraders.ru/downloads/2858/
avatar

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

  • 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

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