0
1.Вставляйте код через соответствующую функцию — code.
2.Подумайте нужно ли Вам это.
АО = ExtAOBuffer[i]=iMA(NULL,0,PERIOD_FAST,0,MODE_SMA,PRICE_MEDIAN,i)-
iMA(NULL,0,PERIOD_SLOW,0,MODE_SMA,PRICE_MEDIAN,i);

МАСД = ExtMacdBuffer[i]=iMA(NULL,0,InpFastEMA,0,MODE_EMA,PRICE_CLOSE,i)-
iMA(NULL,0,InpSlowEMA,0,MODE_EMA,PRICE_CLOSE,i);

Эти индикаторы производные от Ма, а Ма производная от цены.
У Вас уже есть в коде сигналы на основе Ма.
Изучайте как рассчитываются индикаторы, пригодится при торговле, избежите лишней ненужной избыточности в коде и позволит избежать самообмана.
avatar

ssg

  • 5 марта 2022, 22:03
0
Откройте МетаЭдитор/Файл/Создать/Советник — скопируйте туда код.Затем нажмите кнопку — компилировать.
Другой вариант — открываете код ненужного советника, удаляете старый код и копируйте туда этот код.Затем нажмите кнопку — компилировать.
avatar

ssg

  • 4 марта 2022, 07:16
0
Судя по стратегии советник торгует используя статистический анализ: сегодня торгуем в заданное время в заданном направлении. Но ( на мой взгляд) стратегия однобокая и слабая.
Явные недостатки:
-Советник торгует или бай или селл.
-Советник открывает позиции каждый день в одно время.
-Тейкпрофит и стоплосс для позиций каждого дня одинаковые.
Следовательно возможные преимущества статистического анализа используются не полностью.
Но это только моё мнение.
Главное что бы Вас устраивало. Деньги то Ваши.:) 
avatar

ssg

  • 4 марта 2022, 05:43
0
Оба варианта делают тоже самое. Только первый вариант более гибкий. Можно выбрать для торговли не только день недели, но и время открытия и время закрытия позиций для каждого дня индивидуально.
То что не умеете читать текст программы не сильно страшно.Главное что бы торговали успешно.*hi* 
avatar

ssg

  • 4 марта 2022, 05:24
0
Смотрите, тестируйте этот вариант.
<code>
//+------------------------------------------------------------------+
//|                                                   Boris54 v1.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                          http://www.mункцql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

//--- Inputs

extern int    BuySell    = 0;        // 0-buy 1-sell
extern double Lots       = 0.1;      // лот
extern int StopLoss      = 333;      // лось
extern int TakeProfit    = 444;      // язь
extern int StartHour     = 0;        // час начала торговли
extern int StartMin      = 30;       // минута начала торговли
extern int EndHour       = 23;       // час окончания торговли
extern int EndMin        = 30;       // минута окончания торговли
extern int Slip          = 0;        // реквот
extern int Magic         = 123;      // магик
extern int CloseOn       = 0;        // 1-закрытие в конце работы

extern bool MonDay      = true;
extern bool TuesDay     = true;
extern bool WednesDay   = true;
extern bool ThursDay    = true;
extern bool FriDay      = true;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool Trade()
  {
   if(DayOfWeek()==1 && MonDay)    return(true);
   if(DayOfWeek()==2 && TuesDay)   return(true);
   if(DayOfWeek()==3 && WednesDay) return(true);
   if(DayOfWeek()==4 && ThursDay)  return(true);
   if(DayOfWeek()==5 && FriDay)    return(true);
   return(false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price,double stopLoss,double takeProfit)
  {
   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,NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades(){
   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) 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);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool TimeSession(int aStartHour,int aStartMinute,int aStopHour,int aStopMinute,datetime aTimeCur)
  {
//--- время начала сессии
   int StartTime=3600*aStartHour+60*aStartMinute;
//--- время окончания сессии
   int StopTime=3600*aStopHour+60*aStopMinute;
//--- текущее время в секундах от начала дня
   aTimeCur=aTimeCur%86400;
   if(StopTime<StartTime)
     {
      //--- переход через полночь
      if(aTimeCur>=StartTime || aTimeCur<StopTime)
        {
         return(true);
        }
     }
   else
     {
      //--- внутри одного дня
      if(aTimeCur>=StartTime && aTimeCur<StopTime)
        {
         return(true);
        }
     }
   return(false);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(!TimeSession(StartHour,StartMin,EndHour,EndMin,TimeCurrent()) && CloseOn>0)
     {
      CloseAll();
     }

   if(Trade() && CountTrades()<1)
     {
      if(TimeSession(StartHour,StartMin,EndHour,EndMin,TimeCurrent()))
        {    
        if(BuySell==0)
         PutOrder(0,Ask,StopLoss,TakeProfit);
        if(BuySell==1)
         PutOrder(1,Bid,StopLoss,TakeProfit);
        }
     }

   Comment("\n Time: ",TimeCurrent());
  }
//+------------------------------------------------------------------+

</code>
avatar

ssg

  • 4 марта 2022, 05:18
0


//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
//------- понедельник
   if(DayOfWeek()==Day1 && TimeCurrent()==StringToTime(Time1))
     {
      if(BuySell1==0)
         PutOrder(0,Ask,StopLoss1,TakeProfit1);
      if(BuySell1==1)
         PutOrder(1,Bid,StopLoss1,TakeProfit1);
      
     if(TimeCurrent()>=StringToTime(TimeClose1) || (AllProfit()>Profit && Profit>0))
       {
        CloseAll();
       }   
     }
//------ вторник
   if(DayOfWeek()==Day2 && TimeCurrent()==StringToTime(Time2))
     {
      if(BuySell2==0)
         PutOrder(0,Ask,StopLoss2,TakeProfit2);
      if(BuySell2==1)
         PutOrder(1,Bid,StopLoss2,TakeProfit2);
      
     if(TimeCurrent()>=StringToTime(TimeClose2) || (AllProfit()>Profit && Profit>0))
       {
        CloseAll();
       }   
     }
//------ среда
   if(DayOfWeek()==Day3 && TimeCurrent()==StringToTime(Time3))
     {
      if(BuySell3==0)
         PutOrder(0,Ask,StopLoss1,TakeProfit1);
      if(BuySell3==1)
         PutOrder(1,Bid,StopLoss1,TakeProfit1);
      
     if(TimeCurrent()>=StringToTime(TimeClose3) || (AllProfit()>Profit && Profit>0))
       {
        CloseAll();
       }   
     }
//------ четверг
   if(DayOfWeek()==Day4 && TimeCurrent()==StringToTime(Time4))
     {
      if(BuySell4==0)
         PutOrder(0,Ask,StopLoss2,TakeProfit2);
      if(BuySell4==1)
         PutOrder(1,Bid,StopLoss2,TakeProfit2);
      
     if(TimeCurrent()>=StringToTime(TimeClose4) || (AllProfit()>Profit && Profit>0))
       {
        CloseAll();
       }   
     }
//------ пятница
   if(DayOfWeek()==Day5 && TimeCurrent()==StringToTime(Time5))
     {
      if(BuySell5==0)
         PutOrder(0,Ask,StopLoss2,TakeProfit2);
      if(BuySell5==1)
         PutOrder(1,Bid,StopLoss2,TakeProfit2);
      
     if(TimeCurrent()>=StringToTime(TimeClose5) || (AllProfit()>Profit && Profit>0))
       {
        CloseAll();
       }   
     }
//-------

   if(OrdersTotal()>0 && ObjectGetInteger(0,"c",OBJPROP_STATE)==1)
     {
      CloseAll();
      ObjectSetInteger(0,"c",OBJPROP_STATE,false);
     }

   Comment("\n All Profit: ",AllProfit());
  }
//+------------------------------------------------------------------+

avatar

ssg

  • 3 марта 2022, 20:09
0
Наверное Андрей занят. Предлагаю самую простую реализацию известного Вам советника zakaz.opentraders.ru/51959.html, но с учетом Ваших пожеланий.
Торгует по дням недели на выбор.Можно менять время открытия позиции и можно менять время закрытия и направления торговли для каждого дня отдельно.
<code>
//+------------------------------------------------------------------+
//|                                                      Boris54.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                          http://www.mункцql5.com |
//+------------------------------------------------------------------+

#property copyright "Copyright 2019, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

//--- Inputs
extern double Lots         = 0.1;      // лот
extern double Profit       = 10;       // профит
extern double StopLoss1    = 500;      // лось 1
extern double TakeProfit1  = 500;      // язь 1
extern double StopLoss2    = 500;      // лось 2
extern double TakeProfit2  = 500;      // язь 2
extern int Slip            = 30;       // реквот
extern int Magic           = 123;      // магик

extern int    Day1         = 1;        // 1- торговать в понедельник 0 - не торговать
extern int    BuySell1     = 0;        // 0-buy 1-sell
extern string Time1        = "10:00:00";// время открытия позиции в понедельник
extern string TimeClose1   = "23:00:00";// врямя закрытия позиций в понедельник
extern int    Day2         = 2;        // 2- торговать во вторник 0 - не торговать
extern int    BuySell2     = 0;        // 0-buy 1-sell
extern string Time2        = "10:00:00";// время открытия позиции во вторник
extern string TimeClose2   = "23:00:00";// врямя закрытия позиций во вторник
extern int    Day3         = 3;        // 3- торговать в среду 0 - не торговать
extern int    BuySell3     = 0;        // 0-buy 1-sell
extern string Time3        = "10:00:00";// время открытия позиции в среду
extern string TimeClose3   = "23:00:00";// врямя закрытия позиций в среду
extern int    Day4         = 4;        // 4- торговать в четверг 0 - не торговать
extern int    BuySell4     = 0;        // 0-buy 1-sell
extern string Time4        = "10:00:00";// время открытия позиции в четверг
extern string TimeClose4   = "23:00:00";// врямя закрытия позиций в четверг
extern int    Day5         = 5;         //5- торговать в пятницу 0 - не торговать
extern int    BuySell5     = 0;        // 0-buy 1-sell
extern string Time5        = "10:00:00";// время открытия позиции в пятницу
extern string TimeClose5   = "23:00:00";// врямя закрытия позиций в пятницу


//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   PutButton("c",111,44,"Close All");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price,double StopLoss,double TakeProfit)
  {
   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,NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//| Профит всех ордеров по типу ордера                               |
//+------------------------------------------------------------------+
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);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades(){
   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)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutButton(string name,int x,int y,string text)
  {
   ObjectCreate(0,name,OBJ_BUTTON,0,0,0);

//--- установим координаты кнопки
   ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
//--- установим размер кнопки
   ObjectSetInteger(0,name,OBJPROP_XSIZE,80);
   ObjectSetInteger(0,name,OBJPROP_YSIZE,30);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0,name,OBJPROP_CORNER,3);
//--- установим текст
   ObjectSetString(0,name,OBJPROP_TEXT,text);
//--- установим шрифт текста
   ObjectSetString(0,name,OBJPROP_FONT,"Arial");
//--- установим размер шрифта
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,12);
//--- установим цвет текста
   ObjectSetInteger(0,name,OBJPROP_COLOR,Red);
//--- установим цвет фона
   ObjectSetInteger(0,name,OBJPROP_BGCOLOR,White);
//--- установим цвет границы
   ObjectSetInteger(0,name,OBJPROP_BORDER_COLOR,Blue);
  }
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
</code>
avatar

ssg

  • 3 марта 2022, 20:09
0
Может имеется в виду индикатор из стандартных настроек -Индикаторы/Объёмы/On Balance Volume
avatar

ssg

  • 2 марта 2022, 20:51
0
Как определить: покупать или продавать?
avatar

ssg

  • 2 марта 2022, 19:12
+1
Готов стать поручителем.
avatar

ssg

  • 23 февраля 2022, 05:40
0
Это позиция.Готов стать поручителем.
avatar

ssg

  • 23 февраля 2022, 05:40
0
Интересно — а каково назначение этого треугольника (кроме ненужной пестроты и красивости)? Ведь решение приниматься будет не по цветным флажкам, а по тому сколько денег на счете в данный момент (убыток, прибыль).
avatar

ssg

  • 22 февраля 2022, 21:23
0
Если есть стратегия с использованием сигналов данного индикатора, то можно и советника написать.
avatar

ssg

  • 22 февраля 2022, 14:35
+1
Нет.Простой заменой имени индикатора не обойдешься.
avatar

ssg

  • 21 февраля 2022, 14:18
0
Т.е. если взять обращение Андрея к сигналам и вставить в Ваш советник то позиции открываются правильно?
А если в советник Андрея вставить обращение к сигналам из Вашего советника то позиции открываются не правильно?
avatar

ssg

  • 19 февраля 2022, 21:15
0
А в своем замените:


//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
int start(){

    double buy = iCustom(NULL,0,IndName,0,Shift);
    double sell = iCustom(NULL,0,IndName,1,Shift);
   
   if(((!IsOptimization()) && !IsTesting() && (!IsVisualMode())) || (ShowTableOnTesting && IsTesting() && (!IsOptimization()))){info(); }

//+------------------------------------------------------------------+
//|    Открытие первого ордера серии покупок                         |
//+------------------------------------------------------------------+
 if(count_long()==0){
   
      bid_long = Bid;
      ask_long = Ask;

      if(buy > 0)
        {
         Print("Открытие первого ордера серии покупок");
         int ticket_long = OrderSend(Symbol(),OP_BUY,Lots_long,ask_long,Slippage,0,0,"No loss",Magic_long,0,Lime);
         modify_flag_long = TRUE;
         if(ticket_long<=0)
           {
            Print("Ошибка открытия покупок: ", GetLastError());
           }
        }
     }
//+------------------------------------------------------------------+
//|    Открытие первого ордера серии продаж                          |
//+------------------------------------------------------------------+
 if(count_short()==0){
     
      bid_short = Bid;
      ask_short = Ask;

      if(sell > 0)
        {
         Print("Открытие первого ордера серии продаж");
         int ticket_short = OrderSend(Symbol(),OP_SELL,Lots_short,bid_short,Slippage,0,0,"No loss",Magic_short,0,Red);
         modify_flag_short = TRUE;
         if(ticket_short<=0)
           {
            Print("Ошибка открытия продаж: ", GetLastError());
           }
        }
     }
     return(0);
  }
//+------------------------------------------------------------------+
avatar

ssg

  • 19 февраля 2022, 20:36
0
Может я не доходчиво пояснил:
в советнике Андрея замените главную функцию на этот вариант

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double blu = iCustom(NULL,0,IndName,ChannelPeriod,0,Shift);
   double red = iCustom(NULL,0,IndName,ChannelPeriod,1,Shift);

   bool buy = blu>0;
   bool sell = red>0;

   if(t!=Time[0] && TimeSession(StartHour,StartMin,EndHour,EndMin,TimeCurrent()))
     {
      if(buy)
         PutOrder(0,Ask);
      if(sell)
         PutOrder(1,Bid);
      t=Time[0];
     }


   if(AllProfit(0)>Profit && Profit>0 && CountTrades(0)<2)
     {
      CloseAll(0);
     }

   if(AllProfit(1)>Profit && Profit>0 && CountTrades(1)<2)
     {
      CloseAll(1);
     }

   if(AllProfitM(0)>MProfit && MProfit>0 && CountTrades(0)>1)
     {
      CloseAllM(0);
     }

   if(AllProfitM(1)>MProfit && MProfit>0 && CountTrades(1)>1)
     {
      CloseAllM(1);
     }


   Comment("\n Buy Profit: ",AllProfit(0),
           "\n Sell Profit: ",AllProfit(1),
           "\n Side Buy Profit: ",AllProfitM(0),
           "\n Side Sell Profit: ",AllProfitM(1));
  }
//+------------------------------------------------------------------+

avatar

ssg

  • 19 февраля 2022, 20:35
0
А обращение к сигналам в своём советнике на обращение как у Андрея пробовали менять?
avatar

ssg

  • 19 февраля 2022, 19:55
0
Попробуйте сделать такую замену в своем советнике (т.е. прописать сигнал как у Андрея. К стати заметьте обращения у Вас и у Андрея к индикатору разные):


//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
int start(){

 //  double buy = iCustom(NULL,0,IndName,ChannelPeriod,0,Shift);
  // double sell = iCustom(NULL,0,IndName,ChannelPeriod,1,Shift);
  
    double buy = iCustom(NULL,0,IndName,0,Shift);
    double sell = iCustom(NULL,0,IndName,1,Shift);

   
   if(((!IsOptimization()) && !IsTesting() && (!IsVisualMode())) || (ShowTableOnTesting && IsTesting() && (!IsOptimization()))){info(); }

//+------------------------------------------------------------------+
//|    Открытие первого ордера серии покупок                         |
//+------------------------------------------------------------------+
 if(count_long()==0){
   
      bid_long = Bid;
      ask_long = Ask;

      if(buy > 0)
        {
         Print("Открытие первого ордера серии покупок");
         int ticket_long = OrderSend(Symbol(),OP_BUY,Lots_long,ask_long,Slippage,0,0,"No loss",Magic_long,0,Lime);
         modify_flag_long = TRUE;
         if(ticket_long<=0)
           {
            Print("Ошибка открытия покупок: ", GetLastError());
           }
        }
     }
//+------------------------------------------------------------------+
//|    Открытие первого ордера серии продаж                          |
//+------------------------------------------------------------------+
 if(count_short()==0){
     
      bid_short = Bid;
      ask_short = Ask;

      if(sell > 0)
        {
         Print("Открытие первого ордера серии продаж");
         int ticket_short = OrderSend(Symbol(),OP_SELL,Lots_short,bid_short,Slippage,0,0,"No loss",Magic_short,0,Red);
         modify_flag_short = TRUE;
         if(ticket_short<=0)
           {
            Print("Ошибка открытия продаж: ", GetLastError());
           }
        }
     }
     return(0);
  }
//+------------------------------------------------------------------+


А в советнике Андрея поменять сигнал на это обращение:

double blu = iCustom(NULL,0,IndName,ChannelPeriod,0,Shift);
  double red = iCustom(NULL,0,IndName,ChannelPeriod,1,Shift);
  

только в настройки советника Андрея нужно добавить
extern int ChannelPeriod = 
как в своем советнике.
avatar

ssg

  • 19 февраля 2022, 19:29