Slava78

 
Уровень 12

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


Лучшее от 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

Советник с отложками

  • +7
  • Просмотров: 2311
  • 22 мая 2020, 06:35
  • Slava78
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

  Предыдущая запись в моем блоге
Советник EA_ENV
Следующая запись в моем блоге  
Советник
21 мая 2020
25 мая 2020

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

+
0
Спасибо!!!
Огонь!!! не терпится проверить, но нужно уехать
avatar

  5  nixepace Сообщений: 41 - ОН

  • 22 мая 2020, 16:16
+
0
Slava78, можете подсказать стартовые параметры для Е/доллар и М5.
avatar

  17  Boris54 Сообщений: 757 - ПенSионер

  • 22 мая 2020, 16:19
+
0
Граальных не подскажу. Я вообще не в этой теме
avatar

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

  • 22 мая 2020, 18:20
+
0
Slava78 тогда уж до кучи на любителя добавь <img src='http://opentraders.ru/templates/skin/g6h/images/smilies/017.gif' alt=' ;) '>&nbsp; 
<code>//--- Inputs
extern double Lots       = 0.1;      // лот
extern double KLot       = 1;        // умножение лота
extern double MaxLot     = 5;        // максимальный лот
extern int StopLoss      = 0;        // стоп лосс
extern int TakeProfit    = 0;        // тейк профит
extern double Profit     = 100;      // общая прибыль
extern double Loss       = 100;      // общий убыток
extern int BULevel       = 0;        // уровень БУ
extern int BUPoint       = 0;        // пункты БУ
extern int TrailingStop  = 0;        // трал
extern bool Usredn       = 1;        // 1-использовать усреднение 0-не использовать
extern int Step          = 50;       // шаг усреднения
extern int Count         = 5;        // число ордеров
extern bool Buy          = 1;        //1-выстовить бай 0-не выставлять
extern bool Buystop      = 1;        //1-выстовить байстоп 0-не выставлять
extern bool Buylimit     = 1;        //1-выстовить байлимит 0-не выставлять
extern int Count_bs      = 5;        // число ордеров
extern bool Sell         = 1;        //1-выстовить селл 0-не выставлять
extern bool Sellstop     = 1;        //1-выстовить селлстоп 0-не выставлять
extern bool Selllimit    = 1;        //1-выстовить селлимит 0-не выставлять
extern int Count_ss      = 5;        // число ордеров
extern int Expiration    = 5;        // истечение
extern int Step_stop     = 50;       // дистанция для стопордера
extern int StartHour     = 0;        // час начала торговли
extern int StartMin      = 30;       // минута начала торговли
extern int EndHour       = 23;       // час окончания торговли
extern int EndMin        = 30;       // минута окончания торговли
extern int CloseSig      = 0;        // 1-закрытие по сигналу 0-нет
extern int TaimOut       = 1;        // тайм аут ордера
extern int Slip          = 30;       // реквот
extern int Magic         = 123;      // магик

extern int MAPeriod      = 240;      // период МА
extern int EPeriod       = 240;
extern int Method        = 0;
extern int Price1        = 0;
extern int Shift         = 0;
extern double Dev        = 0.3;

datetime TimeBar;</code>


<code>//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   
   double ma=iMA(NULL,0,MAPeriod,0,0,0,Shift);
   double EUP=iEnvelopes(Symbol(),0,EPeriod,Method,Shift,Price1,Dev,1,1);
   double EDN=iEnvelopes(Symbol(),0,EPeriod,Method,Shift,Price1,Dev,2,1);
   
   if(BULevel>0) BU();
   if(TrailingStop>0) Trailing();
   if(AllProfit()>Profit && Profit>0) CloseAll();
   if(AllProfit()<-Loss && Loss>0) CloseAll();

//---  стоповые в обратную сторону первой позиции  
   if(CountTrades()<1 && TimeSession(StartHour,StartMin,EndHour,EndMin,TimeCurrent()) && TimeBar<Time[0])
     {
      if(Ask<EDN) 
        {
          if(Buy)PutOrder(0,Ask); TimeBar=Time[0]+Period()*TaimOut*60;
          if(Buylimit)PutOrder(2,Ask-Step_stop*_Point);
          if(Sellstop) PutOrder(5,Bid-Step_stop*_Point);
        }
      
      if(Bid>EUP)
        {
          if(Sell)PutOrder(1,Bid); TimeBar=Time[0]+Period()*TaimOut*60;
          if(Selllimit)PutOrder(3,Bid+Step_stop*_Point);
          if(Buystop) PutOrder(4,Ask+Step_stop*_Point);
        }    
     }
//--- 
 if(Usredn)
  {
   if(CountTrades()>0 && CountTrades()<Count)
     {
      if(FindOrderType()==0 && (FindLastBuyPrice()-Ask)/_Point>=Step) PutOrder(0,Ask);  
      if(FindOrderType()==1 && (Bid-FindLastSellPrice())/_Point>=Step) PutOrder(1,Bid); 
     }
  }
   if(CloseSig>0)
     {
      if(Bid>ma) CloseAll(0);
      if(Ask<ma)  CloseAll(1);
     }

   Comment("\n Lot: ",Lot(),
           "\n Trades: ",CountTrades(),
           "\n Profit: ",AllProfit());
  }
//+------------------------------------------------------------------+</code>

Редактирован: 22 мая 2020, 16:53
avatar

  16  ssg Сообщений: 817

  • 22 мая 2020, 16:44
+
0
*good*  Пусть учатся
Количество ордеров опять забыл добавить в OnTick? _bs _ss
Редактирован: 22 мая 2020, 18:23
avatar

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

  • 22 мая 2020, 18:18
+
0
я в ужасе, он не в ту сторону открывает

( 
avatar

  5  nixepace Сообщений: 41 - ОН

  • 24 мая 2020, 23:44
+
0
Они будут нужны если сразу выставлять несколько ордеров.
Сейчас советник ставит только один сразу с открытием позиции.
А дальше усреднение, если оно разрешено.
Это я раньше в коде прописывал несколько ордеров сразу, а потом подумал может просителю это и не нужно, и эту часть кода убрал оставив по одному ордеру.:) 
avatar

  16  ssg Сообщений: 817

  • 22 мая 2020, 18:32
+
0
Хочешь сам допиши для стоповых ордеров по аналогии с лимитными

//--- Inputs
extern double Lots       = 0.1;      // лот
extern double KLot       = 1;        // умножение лота
extern double MaxLot     = 5;        // максимальный лот
extern int StopLoss      = 0;        // стоп лосс
extern int TakeProfit    = 0;        // тейк профит
extern double Profit     = 100;      // общая прибыль
extern double Loss       = 100;      // общий убыток
extern int BULevel       = 0;        // уровень БУ
extern int BUPoint       = 0;        // пункты БУ
extern int TrailingStop  = 0;        // трал
extern bool Usredn       = 1;        // 1-использовать усреднение 0-не использовать
extern int Step          = 50;       // шаг усреднения
extern int Count         = 5;        // число ордеров
extern bool Buy          = 1;        //1-выстовить бай 0-не выставлять
extern bool Buystop      = 1;        //1-выстовить байстоп 0-не выставлять
extern int Step_stop     = 50;       // дистанция для стопордера
extern int Count_bs      = 5;        // число ордеров байстоп
extern bool Buylimit     = 1;        //1-выстовить байлимит 0-не выставлять
extern int Step_limit    = 50;       // дистанция для лимитордера
extern int Count_bl      = 5;        // число ордеров байлимт
extern bool Sell         = 1;        //1-выстовить селл 0-не выставлять
extern bool Sellstop     = 1;        //1-выстовить селлстоп 0-не выставлять
extern int Count_ss      = 5;        // число ордеров селлстоп
extern bool Selllimit    = 1;        //1-выстовить селлимит 0-не выставлять
extern int Count_sl      = 5;        // число ордеров селллимит
extern int Expiration    = 5;        // истечение
extern int StartHour     = 0;        // час начала торговли
extern int StartMin      = 30;       // минута начала торговли
extern int EndHour       = 23;       // час окончания торговли
extern int EndMin        = 30;       // минута окончания торговли
extern int CloseSig      = 0;        // 1-закрытие по сигналу 0-нет
extern int TaimOut       = 1;        // тайм аут ордера
extern int Slip          = 30;       // реквот
extern int Magic         = 123;      // магик

extern int MAPeriod      = 240;      // период МА
extern int EPeriod       = 240;
extern int Method        = 0;
extern int Price1        = 0;
extern int Shift         = 0;
extern double Dev        = 0.3;

datetime TimeBar;


//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   int i;
   double price=0;
   
   double ma=iMA(NULL,0,MAPeriod,0,0,0,Shift);
   double EUP=iEnvelopes(Symbol(),0,EPeriod,Method,Shift,Price1,Dev,1,1);
   double EDN=iEnvelopes(Symbol(),0,EPeriod,Method,Shift,Price1,Dev,2,1);
   
   if(BULevel>0) BU();
   if(TrailingStop>0) Trailing();
   if(AllProfit()>Profit && Profit>0) CloseAll();
   if(AllProfit()<-Loss && Loss>0) CloseAll();

//---  стоповые в обратную сторону первой позиции  
   if(CountTrades()<1 && TimeSession(StartHour,StartMin,EndHour,EndMin,TimeCurrent()) && TimeBar<Time[0])
     {
      if(Ask<EDN) 
        {
         if(Buy)PutOrder(0,Ask); TimeBar=Time[0]+Period()*TaimOut*60;
         if(Buylimit)
          {
           for (i=0; i<Count_bl; i++)
             {
               price=NormalizeDouble(Ask-Step_limit*(i+1)*Point,Digits); 
               PutOrder(2,price);         
             }
           }  
          if(Sellstop) PutOrder(5,Bid-Step_stop*_Point);
        }
      
      if(Bid>EUP)
        {
          if(Sell)PutOrder(1,Bid); TimeBar=Time[0]+Period()*TaimOut*60;
          if(Selllimit)
          {
           for (i=0; i<Count_sl; i++)
             {
               price=NormalizeDouble(Bid+Step_limit*(i+1)*Point,Digits);    
               PutOrder(3,price);
             }
           }
          if(Buystop) PutOrder(4,Ask+Step_stop*_Point);
        }    
     }
//--- 
 if(Usredn)
  {
   if(CountTrades()>0 && CountTrades()<Count)
     {
      if(FindOrderType()==0 && (FindLastBuyPrice()-Ask)/_Point>=Step) PutOrder(0,Ask);  
      if(FindOrderType()==1 && (Bid-FindLastSellPrice())/_Point>=Step) PutOrder(1,Bid); 
     }
  }
   if(CloseSig>0)
     {
      if(Bid>ma) CloseAll(0);
      if(Ask<ma)  CloseAll(1);
     }

   Comment("\n Lot: ",Lot(),
           "\n Trades: ",CountTrades(),
           "\n Profit: ",AllProfit());
  }
//+------------------------------------------------------------------+
avatar

  16  ssg Сообщений: 817

  • 22 мая 2020, 18:57
+
0
Или может где нибудь потом будешь использовать;) 
avatar

  16  ssg Сообщений: 817

  • 22 мая 2020, 19:01
+
0


Что то не пойму, советник открывает два ордера по рынку и одновременно стоп-ордер на дистанции.

Очень нужен «только на дистанции», оно конечно интересней) но как выключить тот что по рынку?

Редактирован: 24 мая 2020, 01:51
avatar

  5  nixepace Сообщений: 41 - ОН

  • 24 мая 2020, 01:49
+
0
Настройки смотрите.
avatar

  16  ssg Сообщений: 817

  • 24 мая 2020, 05:07
+
0
Удали
PutOrder(0,Ask);
PutOrder(1,Bid);
Потом компилировать

Редактирован: 24 мая 2020, 09:07
avatar

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

  • 24 мая 2020, 08:59
+
0
Лучше их за комментировать. Вдруг желание поменяется или появятся варианты.
avatar

  16  ssg Сообщений: 817

  • 24 мая 2020, 09:21
+
0
А для многообразия поменять блок настройки на этот блок

//--- Inputs
extern double Lots       = 0.1;      // лот
extern double KLot       = 1;        // умножение лота
extern double MaxLot     = 5;        // максимальный лот
extern int StopLoss      = 0;        // стоп лосс
extern int TakeProfit    = 0;        // тейк профит
extern double Profit     = 100;      // общая прибыль
extern double Loss       = 100;      // общий убыток
extern int BULevel       = 0;        // уровень БУ
extern int BUPoint       = 0;        // пункты БУ
extern int TrailingStop  = 0;        // трал
extern bool Usredn       = 1;        // 1-использовать усреднение 0-не использовать
extern int Step          = 50;       // шаг усреднения
extern int Count         = 5;        // число ордеров
extern bool Buy          = 1;        //1-выстовить бай 0-не выставлять
extern bool Buystop      = 1;        //1-выстовить байстоп 0-не выставлять
extern int Step_stop     = 50;       // дистанция для стопордера
extern int Count_bs      = 5;        // число ордеров байстоп
extern bool Buylimit     = 1;        //1-выстовить байлимит 0-не выставлять
extern int Step_limit    = 50;       // дистанция для лимитордера
extern int Count_bl      = 5;        // число ордеров байлимт
extern bool Sell         = 1;        //1-выстовить селл 0-не выставлять
extern bool Sellstop     = 1;        //1-выстовить селлстоп 0-не выставлять
extern int Count_ss      = 5;        // число ордеров селлстоп
extern bool Selllimit    = 1;        //1-выстовить селлимит 0-не выставлять
extern int Count_sl      = 5;        // число ордеров селллимит
extern int Expiration    = 5;        // истечение
extern int StartHour     = 0;        // час начала торговли
extern int StartMin      = 30;       // минута начала торговли
extern int EndHour       = 23;       // час окончания торговли
extern int EndMin        = 30;       // минута окончания торговли
extern int CloseSig      = 0;        // 1-закрытие по сигналу 0-нет
extern int TaimOut       = 1;        // тайм аут ордера
extern int Slip          = 30;       // реквот
extern int Magic         = 123;      // магик

extern int MAPeriod      = 240;      // период МА
extern int EPeriod       = 240;
extern int Method        = 0;
extern int Price1        = 0;
extern int Shift         = 0;
extern double Dev        = 0.3;

datetime TimeBar;


и этот блок
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   int i;
   double price=0;
   
   double ma=iMA(NULL,0,MAPeriod,0,0,0,Shift);
   double EUP=iEnvelopes(Symbol(),0,EPeriod,Method,Shift,Price1,Dev,1,1);
   double EDN=iEnvelopes(Symbol(),0,EPeriod,Method,Shift,Price1,Dev,2,1);
   
   if(BULevel>0) BU();
   if(TrailingStop>0) Trailing();
   if(AllProfit()>Profit && Profit>0) CloseAll();
   if(AllProfit()<-Loss && Loss>0) CloseAll();

//------------------------------
   if(CountTrades()<1 && TimeSession(StartHour,StartMin,EndHour,EndMin,TimeCurrent()) && TimeBar<Time[0])
     {
      if(Ask<EDN) 
        {
         if(Buy)PutOrder(0,Ask); TimeBar=Time[0]+Period()*TaimOut*60;
//-----         
         if(Buylimit)
          {
           for (i=0; i<Count_bl; i++)
             {
               price=NormalizeDouble(Ask-Step_limit*(i+1)*Point,Digits); 
               PutOrder(2,price);         
             }
           } 
//-----            
          if(Sellstop) 
          {
           for (i=0; i<Count_bl; i++)
             {
               price=NormalizeDouble(Bid-Step_stop*(i+1)*Point,Digits); 
               PutOrder(5,price);         
             }
           } 
        }
//-------------------------------      
      if(Bid>EUP)
        {
          if(Sell)PutOrder(1,Bid); TimeBar=Time[0]+Period()*TaimOut*60;
//-----          
          if(Selllimit)
          {
           for (i=0; i<Count_sl; i++)
             {
               price=NormalizeDouble(Bid+Step_limit*(i+1)*Point,Digits);    
               PutOrder(3,price);
             }
           }
//-----          
          if(Buystop)
          {
           for (i=0; i<Count_sl; i++)
             {
               price=NormalizeDouble(Ask+Step_stop*(i+1)*Point,Digits);    
               PutOrder(4,price);
             }
           } 
          
        }    
     }
//--- 
 if(Usredn)
  {
   if(CountTrades()>0 && CountTrades()<Count)
     {
      if(FindOrderType()==0 && (FindLastBuyPrice()-Ask)/_Point>=Step) PutOrder(0,Ask);  
      if(FindOrderType()==1 && (Bid-FindLastSellPrice())/_Point>=Step) PutOrder(1,Bid); 
     }
  }
   if(CloseSig>0)
     {
      if(Bid>ma) CloseAll(0);
      if(Ask<ma)  CloseAll(1);
     }

   Comment("\n Lot: ",Lot(),
           "\n Trades: ",CountTrades(),
           "\n Profit: ",AllProfit());
  }
//+------------------------------------------------------------------+


И фантазируй дальше.
Хочешь позиции с рынка — пожалуйста.
Хочешь стоповые, хочешь лимитные, хочешь и те и другие и третьи, хочешь по одному, а хочешь пачку.
avatar

  16  ssg Сообщений: 817

  • 24 мая 2020, 09:31
+
0
*neft* *zapoy* 
avatar

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

  • 24 мая 2020, 11:41
+
0
Slava78, человек еще новичок на форексе, или просто балуется, а не работает.
Иначе он бы уже за полгода научился бы понимать (не программировать) о чем идет речь в функции старт.
Или научится, или забросит баловаться, когда несколько депозитов сольет.<img src='http://opentraders.ru/templates/skin/g6h/images/smilies/017.gif' alt=' ;) '>&nbsp; 
Редактирован: 24 мая 2020, 17:12
avatar

  16  ssg Сообщений: 817

  • 24 мая 2020, 17:11
+
0
Я тоже новичок или просто балуюсь. Но не имея вообще понятия о программировании, научился за полгода создавать советников по шаблонам Андрея
avatar

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

  • 24 мая 2020, 20:02
+
0
Управляя любым механизмом (автомобиль, бетономешалка ...) нужно понимать как он работает
Собираешься торговать советником должен понимать принцип его работы.Одного тестирования в тестере и даже на демосчете «маловато будет».
Пусть человек не программирует, но по коду советника он должен разбираться за что отвечает и что делает каждый блок отдельно и весь советник в целом.
avatar

  16  ssg Сообщений: 817

  • 25 мая 2020, 05:38
+
0
Прошу сделайте стоповые ордера в в тут сторону как в оригинале!!!

я шоке и ужасе ваши коды, блоки итд переворачивают. бессилен что либо редактировать

avatar

  5  nixepace Сообщений: 41 - ОН

  • 24 мая 2020, 23:59
+
0
avatar

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

  • 25 мая 2020, 06:25
+
0
Здравствуйте!
Прошу вас приделать ограничитель на открывание ордеров.
Бывает проснусь, а 15 ордеров открылось и все в минусе. Все они одного типа и на одном инструменте.
Что бы было создание всего лишь одного ордера, а остальных отложенных не возникало, должны блокироваться или удаляться.
Устал уже сливать)
avatar

  5  nixepace Сообщений: 41 - ОН

  • 28 июля 2020, 01:20
+
0
Еще раз.
Пожелания нужно описывать словами и строго по пунктам.Никакой лирики.
Фразы:«Посмотрите видеоролик, и сделайте мне так же.» неинтересны. Нет желания и жалко на это тратить время.
Нет желания вникать и разбираться в чужом коде. У каждого свой свой стиль написания программы.
По существу:
1.Удаляете полностью старый блок настроек (он самый первый).
2.На его место копируете этот блок:

//--- Inputs
extern double Lots       = 0.1;      // лот
extern double KLot       = 1;        // умножение лота
extern double MaxLot     = 5;        // максимальный лот
extern int StopLoss      = 0;        // стоп лосс
extern int TakeProfit    = 0;        // тейк профит
extern double Profit     = 100;      // общая прибыль
extern double Loss       = 100;      // общий убыток
extern int BULevel       = 0;        // уровень БУ
extern int BUPoint       = 0;        // пункты БУ
extern int TrailingStop  = 0;        // трал
extern bool Usredn       = 1;        // 1-использовать усреднение 0-не использовать
extern int Step          = 50;       // шаг усреднения
extern int Count         = 5;        // число ордеров
extern bool Buy          = 1;        //1-выстовить бай 0-не выставлять
extern bool Buystop      = 1;        //1-выстовить байстоп 0-не выставлять
extern int Step_stop     = 50;       // дистанция для стопордера
extern int Count_bs      = 5;        // число ордеров байстоп
extern bool Buylimit     = 1;        //1-выстовить байлимит 0-не выставлять
extern int Step_limit    = 50;       // дистанция для лимитордера
extern int Count_bl      = 5;        // число ордеров байлимт
extern bool Sell         = 1;        //1-выстовить селл 0-не выставлять
extern bool Sellstop     = 1;        //1-выстовить селлстоп 0-не выставлять
extern int Count_ss      = 5;        // число ордеров селлстоп
extern bool Selllimit    = 1;        //1-выстовить селлимит 0-не выставлять
extern int Count_sl      = 5;        // число ордеров селллимит
extern int Expiration    = 5;        // истечение
extern int StartHour     = 0;        // час начала торговли
extern int StartMin      = 30;       // минута начала торговли
extern int EndHour       = 23;       // час окончания торговли
extern int EndMin        = 30;       // минута окончания торговли
extern int CloseSig      = 0;        // 1-закрытие по сигналу 0-нет
extern int TaimOut       = 1;        // тайм аут ордера
extern int Slip          = 30;       // реквот
extern int Magic         = 123;      // магик

extern int MAPeriod      = 240;      // период МА
extern int EPeriod       = 240;
extern int Method        = 0;
extern int Price1        = 0;
extern int Shift         = 0;
extern double Dev        = 0.3;

datetime TimeBar;


3.Удаляете полностью блок функции void OnTick()(он последний в советнике)
4.На его место копируете этот блок:
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   int i;
   double price=0;
   
   double ma=iMA(NULL,0,MAPeriod,0,0,0,Shift);
   double EUP=iEnvelopes(Symbol(),0,EPeriod,Method,Shift,Price1,Dev,1,1);
   double EDN=iEnvelopes(Symbol(),0,EPeriod,Method,Shift,Price1,Dev,2,1);
   
   if(BULevel>0) BU();
   if(TrailingStop>0) Trailing();
   if(AllProfit()>Profit && Profit>0) CloseAll();
   if(AllProfit()<-Loss && Loss>0) CloseAll();

//------------------------------
   if(CountTrades()<1 && TimeSession(StartHour,StartMin,EndHour,EndMin,TimeCurrent()) && TimeBar<Time[0])
     {
      if(Ask<EDN) 
        {
         if(Buy)PutOrder(0,Ask); TimeBar=Time[0]+Period()*TaimOut*60;
//-----         
         if(Buylimit)
          {
           for (i=0; i<Count_bl; i++)
             {
               price=NormalizeDouble(Ask-Step_limit*(i+1)*Point,Digits); 
               PutOrder(2,price);         
             }
           } 
//-----            
          if(Sellstop) 
          {
           for (i=0; i<Count_bl; i++)
             {
               price=NormalizeDouble(Bid-Step_stop*(i+1)*Point,Digits); 
               PutOrder(5,price);         
             }
           } 
        }
//-------------------------------      
      if(Bid>EUP)
        {
          if(Sell)PutOrder(1,Bid); TimeBar=Time[0]+Period()*TaimOut*60;
//-----          
          if(Selllimit)
          {
           for (i=0; i<Count_sl; i++)
             {
               price=NormalizeDouble(Bid+Step_limit*(i+1)*Point,Digits);    
               PutOrder(3,price);
             }
           }
//-----          
          if(Buystop)
          {
           for (i=0; i<Count_sl; i++)
             {
               price=NormalizeDouble(Ask+Step_stop*(i+1)*Point,Digits);    
               PutOrder(4,price);
             }
           } 
          
        }    
     }
//--- 
 if(Usredn)
  {
   if(CountTrades()>0 && CountTrades()<Count)
     {
      if(FindOrderType()==0 && (FindLastBuyPrice()-Ask)/_Point>=Step) PutOrder(0,Ask);  
      if(FindOrderType()==1 && (Bid-FindLastSellPrice())/_Point>=Step) PutOrder(1,Bid); 
     }
  }
   if(CloseSig>0)
     {
      if(Bid>ma) CloseAll(0);
      if(Ask<ma)  CloseAll(1);
     }

   Comment("\n Lot: ",Lot(),
           "\n Trades: ",CountTrades(),
           "\n Profit: ",AllProfit());
  }
//+------------------------------------------------------------------+


Оба этих блока я уже приводил выше.
5.Компилируете.
6.В блоке настроек находятся триггеры(выключатели) возле них описание.
Пример:
extern bool Buy          = 1;        //1-выстовить бай 0-не выставлять

Если — 1 советник быдет открывать позиции с рынка.
Если — 0 советник не будет открывать позиции с рынка.
Аналогичные триггеры для позиции селл, ордеров байлимит, селллимит, байстоп, селлсто и для усреднения.
Кроме этого в настройках можно указать и количество отложенных ордеров как лимитных ордеров каждого направления по отдельности:
extern int Count_bl      = 5;        // число ордеров байлимт

так и стоповых, тоже по отдельности.
Ордера буду выставляться с шагом:
extern int Step_limit    = 50;       // дистанция для лимитордера

7.Все.

avatar

  16  ssg Сообщений: 817

  • 25 мая 2020, 05:07
+
0
На этом сказка: «О старике и золотой рыбке.» для старухи закончилась.
avatar

  16  ssg Сообщений: 817

  • 25 мая 2020, 05:12

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