Как сделать выводить arrow на иcтории

 

Добрый день! Задача указывать стрелками бар на котором все условия выполняются, и эти стрелки необходимо видеть на истории. Вот код чего-то сделано не так, кто может подскажите. 

//+------------------------------------------------------------------+

//|                                                        arrow.mq4 |

//|                        Copyright 2016, MetaQuotes Software Corp. |

//|                                             https://www.mql5.com |

//+------------------------------------------------------------------+

#property copyright "Copyright 2016, MetaQuotes Software Corp."

#property link      "https://www.mql5.com"

#property version   "1.00"

#property strict

extern ENUM_TIMEFRAMES timeframe1 = PERIOD_CURRENT;

extern ENUM_TIMEFRAMES timeframe2 = PERIOD_CURRENT;

extern ENUM_TIMEFRAMES timeframe3 = PERIOD_CURRENT;

extern ENUM_TIMEFRAMES timeframe4 = PERIOD_CURRENT;

extern ENUM_TIMEFRAMES timeframe5 = PERIOD_CURRENT;

double high[];

extern int count = 1000;


//+------------------------------------------------------------------+

//| Expert initialization function                                   |

//+------------------------------------------------------------------+

int OnInit()

  {

//---

   setMoreArrow();

//---

   return(INIT_SUCCEEDED);

  }

//+------------------------------------------------------------------+

//| Expert deinitialization function                                 |

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

  {

//---

   

  }

//+------------------------------------------------------------------+

//| Expert tick function                                             |

//+------------------------------------------------------------------+

void OnTick()

  {

//---

   /*double  iMACD(

   string       symbol,           // имя символа

   int          timeframe,        // таймфрейм

   int          fast_ema_period,  // период быстрой средней

   int          slow_ema_period,  // период медленной средней

   int          signal_period,    // период сигнальной линии

   int          applied_price,    // тип цены

   int          mode,             // индекс линии индикатора

   int          shift             // сдвиг

   );*/

   /*double  iStochastic(

   string       symbol,           // имя символа

   int          timeframe,        // таймфрейм

   int          Kperiod,          // период линии K

   int          Dperiod,          // период линии D

   int          slowing,          // замедление

   int          method,           // метод усреднения

   int          price_field,      // тип цены

   int          mode,             // индекс линии

   int          shift             // сдвиг

   );*/

   if(iMACD(NULL,timeframe1,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) {

      if(NormalizeDouble(iStochastic(NULL,timeframe1,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>80) {

         if(iMACD(NULL,timeframe2,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) {

            if(NormalizeDouble(iStochastic(NULL,timeframe2,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>80) {

                if(iMACD(NULL,timeframe3,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) {

                    if(NormalizeDouble(iStochastic(NULL,timeframe3,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>80) {

                      if(iMACD(NULL,timeframe4,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) {

                        if(NormalizeDouble(iStochastic(NULL,timeframe4,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>80) {

                        if(iMACD(NULL,timeframe5,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) {

                        if(NormalizeDouble(iStochastic(NULL,timeframe5,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>80) {

                      Alert("Красные! MACD1: ", iMACD(NULL,timeframe1,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC1: ", iStochastic(NULL,timeframe1,5,3,3,MODE_SMA,0,MODE_MAIN,0), "MACD2: ", iMACD(NULL,timeframe2,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC2: ", iStochastic(NULL,timeframe2,5,3,3,MODE_SMA,0,MODE_MAIN,0), "MACD3: ", iMACD(NULL,timeframe3,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC3: ", iStochastic(NULL,timeframe3,5,3,3,MODE_SMA,0,MODE_MAIN,0), "MACD4: ", iMACD(NULL,timeframe4,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC4: ", iStochastic(NULL,timeframe4,5,3,3,MODE_SMA,0,MODE_MAIN,0), "MACD5: ", iMACD(NULL,timeframe5,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC5: ", iStochastic(NULL,timeframe5,5,3,3,MODE_SMA,0,MODE_MAIN,0),0);

               SetArrow(242, clrRed);

                     }

                }

                 }

                }

               }

              }

            }

         }

         }

 } else {

      if(NormalizeDouble(iStochastic(NULL,timeframe1,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<20) {

         if(iMACD(NULL,timeframe2,12,26,9,PRICE_CLOSE,MODE_MAIN,0)<0) {

            if(NormalizeDouble(iStochastic(NULL,timeframe2,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<20) {

               if(iMACD(NULL,timeframe3,12,26,9,PRICE_CLOSE,MODE_MAIN,0)<0) {

                    if(NormalizeDouble(iStochastic(NULL,timeframe3,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<20) {

                       if(iMACD(NULL,timeframe4,12,26,9,PRICE_CLOSE,MODE_MAIN,0)<0) {

                       if(NormalizeDouble(iStochastic(NULL,timeframe4,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<20) {

                       if(iMACD(NULL,timeframe5,12,26,9,PRICE_CLOSE,MODE_MAIN,0)<0) {

                       if(NormalizeDouble(iStochastic(NULL,timeframe5,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<20) {

                     Alert("Зеленые! MACD1: ", iMACD(NULL,timeframe1,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC1: ", iStochastic(NULL,timeframe1,5,3,3,MODE_SMA,0,MODE_MAIN,0), "MACD2: ", iMACD(NULL,timeframe2,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC2: ", iStochastic(NULL,timeframe2,5,3,3,MODE_SMA,0,MODE_MAIN,0), "MACD3: ", iMACD(NULL,timeframe3,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC3: ", iStochastic(NULL,timeframe3,5,3,3,MODE_SMA,0,MODE_MAIN,0), "MACD4: ", iMACD(NULL,timeframe4,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC4: ", iStochastic(NULL,timeframe4,5,3,3,MODE_SMA,0,MODE_MAIN,0), "MACD5: ", iMACD(NULL,timeframe5,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC5: ", iStochastic(NULL,timeframe5,5,3,3,MODE_SMA,0,MODE_MAIN,0),0);

               SetArrow(241, clrGreen);

                    }

                }

                 }

                 }

                }

              }

            }

         }

      }

   }

   }

//+------------------------------------------------------------------+

//| Описание : Установка значка на графике, объект OBJ_ARROW. |

//+----------------------------------------------------------------------------+

//| Параметры: |

//| cd - код значка |

//| cl - цвет значка |

//| nm - наименование ("" - время открытия текущего бара) |

//| t1 - время открытия бара (0 - текущий бар) |

//| p1 - ценовой уровень (0 - Bid) |

//| sz - размер значка (0 - по умолчанию) |

//+----------------------------------------------------------------------------+

void setMoreArrow() {

int i;

   for(i=count; i>0; i--) {

      if(iMACD(NULL,timeframe1,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) {

      if(NormalizeDouble(iStochastic(NULL,timeframe1,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>50) {

         if(iMACD(NULL,timeframe2,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) {

            if(NormalizeDouble(iStochastic(NULL,timeframe2,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>50) {

                if(iMACD(NULL,timeframe3,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) {

                    if(NormalizeDouble(iStochastic(NULL,timeframe3,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>50) {

                      if(iMACD(NULL,timeframe4,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) {

                        if(NormalizeDouble(iStochastic(NULL,timeframe4,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>50) {

                        if(iMACD(NULL,timeframe5,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) {

                        if(NormalizeDouble(iStochastic(NULL,timeframe5,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>50) {

                  SetArrow(241, clrGreen, DoubleToStr(Time[i], 0), Time[i],1);

                        }

                }

                 }

                }

               }

              }

            }

         }

         }

 } else {

         if(NormalizeDouble(iStochastic(NULL,timeframe1,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<50) {

         if(iMACD(NULL,timeframe2,12,26,9,PRICE_CLOSE,MODE_MAIN,0)<0) {

            if(NormalizeDouble(iStochastic(NULL,timeframe2,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<50) {

               if(iMACD(NULL,timeframe3,12,26,9,PRICE_CLOSE,MODE_MAIN,0)<0) {

                    if(NormalizeDouble(iStochastic(NULL,timeframe3,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<50) {

                       if(iMACD(NULL,timeframe4,12,26,9,PRICE_CLOSE,MODE_MAIN,0)<0) {

                       if(NormalizeDouble(iStochastic(NULL,timeframe4,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<50) {

                       if(iMACD(NULL,timeframe5,12,26,9,PRICE_CLOSE,MODE_MAIN,0)<0) {

                       if(NormalizeDouble(iStochastic(NULL,timeframe5,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<50) {

                  SetArrow(241, clrGreen, DoubleToStr(Time[i], 0), Time[i],1);

           }

                }

                 }

                 }

                }

              }

            }

         }

      }

   }

   }

}

void SetArrow(int cd, color cl,

string nm="", datetime t1=0, double p1=0, int sz=1) {

if (nm=="") nm=DoubleToStr(Time[0], 0);

if (t1<=0) t1=Time[0];

if (p1<=0) p1=Bid;

if (p1==1) {

   ArraySetAsSeries(high,true);

   CopyHigh(_Symbol,PERIOD_CURRENT,t1,1,high);

   p1=high[0];

}

if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_ARROW, 0, 0,0);

ObjectSet(nm, OBJPROP_TIME1 , t1);

ObjectSet(nm, OBJPROP_PRICE1 , p1);

ObjectSet(nm, OBJPROP_ARROWCODE, cd);

ObjectSet(nm, OBJPROP_COLOR , cl);

ObjectSet(nm, OBJPROP_WIDTH , sz);

Автоматический трейдинг и тестирование торговых стратегий
Автоматический трейдинг и тестирование торговых стратегий
  • www.mql5.com
MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций
 
Denis Danilov:

Добрый день! Задача указывать стрелками бар на котором все условия выполняются, и эти стрелки необходимо видеть на истории. Вот код чего-то сделано не так, кто может подскажите. 

//+------------------------------------------------------------------+

//|                                                        arrow.mq4 |

//|                        Copyright 2016, MetaQuotes Software Corp. |

//|                                             https://www.mql5.com |

//+------------------------------------------------------------------+



учитесь оформлять свои посты ... так как вы вставили свой код его никто не будет смотреть ...

во вторых стрелки на истории рисуют не советники а индикаторы ... 

ну а в третьих  - удалите метатрейдер и забудьте про форекс

 
//+------------------------------------------------------------------+
//|                                                        arrow.mq4 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
extern ENUM_TIMEFRAMES timeframe1 = PERIOD_CURRENT;
extern ENUM_TIMEFRAMES timeframe2 = PERIOD_CURRENT;
extern ENUM_TIMEFRAMES timeframe3 = PERIOD_CURRENT;
extern ENUM_TIMEFRAMES timeframe4 = PERIOD_CURRENT;
extern ENUM_TIMEFRAMES timeframe5 = PERIOD_CURRENT;
double high[];
extern int count = 1000;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   setMoreArrow();
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   /*double  iMACD(
   string       symbol,           // имя символа
   int          timeframe,        // таймфрейм
   int          fast_ema_period,  // период быстрой средней
   int          slow_ema_period,  // период медленной средней
   int          signal_period,    // период сигнальной линии
   int          applied_price,    // тип цены
   int          mode,             // индекс линии индикатора
   int          shift             // сдвиг
   );*/
   /*double  iStochastic(
   string       symbol,           // имя символа
   int          timeframe,        // таймфрейм
   int          Kperiod,          // период линии K
   int          Dperiod,          // период линии D
   int          slowing,          // замедление
   int          method,           // метод усреднения
   int          price_field,      // тип цены
   int          mode,             // индекс линии
   int          shift             // сдвиг
   );*/
   if(iMACD(NULL,timeframe1,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) {
      if(NormalizeDouble(iStochastic(NULL,timeframe1,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>80) {
         if(iMACD(NULL,timeframe2,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) {
            if(NormalizeDouble(iStochastic(NULL,timeframe2,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>80) {
                if(iMACD(NULL,timeframe3,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) {
                    if(NormalizeDouble(iStochastic(NULL,timeframe3,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>80) {
                      if(iMACD(NULL,timeframe4,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) {
                        if(NormalizeDouble(iStochastic(NULL,timeframe4,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>80) {
                        if(iMACD(NULL,timeframe5,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) {
                        if(NormalizeDouble(iStochastic(NULL,timeframe5,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>80) {
                      Alert("Красные! MACD1: ", iMACD(NULL,timeframe1,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC1: ", iStochastic(NULL,timeframe1,5,3,3,MODE_SMA,0,MODE_MAIN,0), "MACD2: ", iMACD(NULL,timeframe2,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC2: ", iStochastic(NULL,timeframe2,5,3,3,MODE_SMA,0,MODE_MAIN,0), "MACD3: ", iMACD(NULL,timeframe3,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC3: ", iStochastic(NULL,timeframe3,5,3,3,MODE_SMA,0,MODE_MAIN,0), "MACD4: ", iMACD(NULL,timeframe4,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC4: ", iStochastic(NULL,timeframe4,5,3,3,MODE_SMA,0,MODE_MAIN,0), "MACD5: ", iMACD(NULL,timeframe5,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC5: ", iStochastic(NULL,timeframe5,5,3,3,MODE_SMA,0,MODE_MAIN,0),0);
               SetArrow(242, clrRed);
                     }
                }
                 }
                }
               }
              }
            }
         }
         }
 } else {
      if(NormalizeDouble(iStochastic(NULL,timeframe1,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<20) {
         if(iMACD(NULL,timeframe2,12,26,9,PRICE_CLOSE,MODE_MAIN,0)<0) {
            if(NormalizeDouble(iStochastic(NULL,timeframe2,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<20) {
               if(iMACD(NULL,timeframe3,12,26,9,PRICE_CLOSE,MODE_MAIN,0)<0) {
                    if(NormalizeDouble(iStochastic(NULL,timeframe3,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<20) {
                       if(iMACD(NULL,timeframe4,12,26,9,PRICE_CLOSE,MODE_MAIN,0)<0) {
                       if(NormalizeDouble(iStochastic(NULL,timeframe4,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<20) {
                       if(iMACD(NULL,timeframe5,12,26,9,PRICE_CLOSE,MODE_MAIN,0)<0) {
                       if(NormalizeDouble(iStochastic(NULL,timeframe5,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<20) {
                     Alert("Зеленые! MACD1: ", iMACD(NULL,timeframe1,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC1: ", iStochastic(NULL,timeframe1,5,3,3,MODE_SMA,0,MODE_MAIN,0), "MACD2: ", iMACD(NULL,timeframe2,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC2: ", iStochastic(NULL,timeframe2,5,3,3,MODE_SMA,0,MODE_MAIN,0), "MACD3: ", iMACD(NULL,timeframe3,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC3: ", iStochastic(NULL,timeframe3,5,3,3,MODE_SMA,0,MODE_MAIN,0), "MACD4: ", iMACD(NULL,timeframe4,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC4: ", iStochastic(NULL,timeframe4,5,3,3,MODE_SMA,0,MODE_MAIN,0), "MACD5: ", iMACD(NULL,timeframe5,12,26,9,PRICE_CLOSE,MODE_MAIN,0), "STOHASTIC5: ", iStochastic(NULL,timeframe5,5,3,3,MODE_SMA,0,MODE_MAIN,0),0);
               SetArrow(241, clrGreen);
                    }
                }
                 }
                 }
                }
              }
            }
         }
      }
   }
   }
//+------------------------------------------------------------------+
//| Описание : Установка значка на графике, объект OBJ_ARROW. |
//+----------------------------------------------------------------------------+
//| Параметры: |
//| cd - код значка |
//| cl - цвет значка |
//| nm - наименование ("" - время открытия текущего бара) |
//| t1 - время открытия бара (0 - текущий бар) |
//| p1 - ценовой уровень (0 - Bid) |
//| sz - размер значка (0 - по умолчанию) |
//+----------------------------------------------------------------------------+
void setMoreArrow() {
int i;
   for(i=count; i>0; i--) {
      if(iMACD(NULL,timeframe1,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) {
      if(NormalizeDouble(iStochastic(NULL,timeframe1,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>50) {
         if(iMACD(NULL,timeframe2,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) {
            if(NormalizeDouble(iStochastic(NULL,timeframe2,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>50) {
                if(iMACD(NULL,timeframe3,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) {
                    if(NormalizeDouble(iStochastic(NULL,timeframe3,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>50) {
                      if(iMACD(NULL,timeframe4,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) {
                        if(NormalizeDouble(iStochastic(NULL,timeframe4,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>50) {
                        if(iMACD(NULL,timeframe5,12,26,9,PRICE_CLOSE,MODE_MAIN,0)>0) {
                        if(NormalizeDouble(iStochastic(NULL,timeframe5,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)>50) {
                  SetArrow(241, clrGreen, DoubleToStr(Time[i], 0), Time[i],1);
                        }
                }
                 }
                }
               }
              }
            }
         }
         }
 } else {
         if(NormalizeDouble(iStochastic(NULL,timeframe1,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<50) {
         if(iMACD(NULL,timeframe2,12,26,9,PRICE_CLOSE,MODE_MAIN,0)<0) {
            if(NormalizeDouble(iStochastic(NULL,timeframe2,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<50) {
               if(iMACD(NULL,timeframe3,12,26,9,PRICE_CLOSE,MODE_MAIN,0)<0) {
                    if(NormalizeDouble(iStochastic(NULL,timeframe3,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<50) {
                       if(iMACD(NULL,timeframe4,12,26,9,PRICE_CLOSE,MODE_MAIN,0)<0) {
                       if(NormalizeDouble(iStochastic(NULL,timeframe4,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<50) {
                       if(iMACD(NULL,timeframe5,12,26,9,PRICE_CLOSE,MODE_MAIN,0)<0) {
                       if(NormalizeDouble(iStochastic(NULL,timeframe5,5,3,3,MODE_SMA,0,MODE_MAIN,0), 0)<50) {
                  SetArrow(241, clrGreen, DoubleToStr(Time[i], 0), Time[i],1);
           }
                }
                 }
                 }
                }
              }
            }
         }
      }
   }
   }
}
void SetArrow(int cd, color cl,
string nm="", datetime t1=0, double p1=0, int sz=1) {
if (nm=="") nm=DoubleToStr(Time[0], 0);
if (t1<=0) t1=Time[0];
if (p1<=0) p1=Bid;
if (p1==1) {
   ArraySetAsSeries(high,true);
   CopyHigh(_Symbol,PERIOD_CURRENT,t1,1,high);
   p1=high[0];
}
if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_ARROW, 0, 0,0);
ObjectSet(nm, OBJPROP_TIME1 , t1);
ObjectSet(nm, OBJPROP_PRICE1 , p1);
ObjectSet(nm, OBJPROP_ARROWCODE, cd);
ObjectSet(nm, OBJPROP_COLOR , cl);
ObjectSet(nm, OBJPROP_WIDTH , sz);
} 
 
Denis Danilov:

ответ тот же - стрелки на истории рисуют индикаторы а не советники - учите мат часть ... 

 
elmucon:

ответ тот же - стрелки на истории рисуют индикаторы а не советники - учите мат часть ... 


ну этот же алгоритм ставит стрелки,но только при условии того что переменных не более 2х

 
Denis Danilov:

ну этот же алгоритм ставит стрелки,но только при условии того что переменных не более 2х


как Вам объяснить - алгоритм такой же - исполнение разное - не смотрит Ваш советник на историю ...

нужен индикатор с буферами истории с буферами стрелок которые он расставит по истории - но это так сказать в двух словах ... 

 
elmucon:

как Вам объяснить - алгоритм такой же - исполнение разное - не смотрит Ваш советник на историю ...

нужен индикатор с буферами истории с буферами стрелок которые он расставит по истории - но это так сказать в двух словах ... 

Понял буду искать
 

но если кто-то может подправить в скрипте чего именно не правильно сделал буду благодарен

 
Denis Danilov:  но если кто-то может подправить в скрипте чего именно не правильно сделал буду благодарен

сейчас скачаю, на следующей неделе посмотрю. Стрелки вводят в заблуждение. Предпочитаю ставить на истории цветные вертикальные линии. У меня это делает и скрипт и советник. Первое замечание - функция OnDeinit пустая - есть смысл ее удалить.

 

с  беглого просмотра трудно понять замысел. У меня скрипт и аналогичный советник ставят метки (вертикальные линии или у Вас стрелки). Потом появляются кнопки. Двигать плавно вперед, перейти к ближайшей спереди или сзади метке ... Использую для анализа стратегии. Меняю условия входа, смотрю... А у Вас какой замысел? Там еще Alert(). Так на истории могут оказаться сотни стрелок и будут при запуске сотни алертов?

NormalizeDouble(... , 0)>80 - кажется, хватило бы   ...>80

во входных параметрах много timeframe, хотя все имеют одинаковое значение?

 
  for(double x=79.4; x<=80.6; x+=0.3)
  {
     double xn=NormalizeDouble(x,0);
     string s="x="+DoubleToStr(x,1)+"  xn="+DoubleToStr(xn,1);
     Alert(s);
  }

   Каждую часть программы надо проверять скриптом.

Вот разница NormalizeDouble и без NormalizeDouble. Что лучше - надо еще подумать