Возможно ли программно найти ВСЕ горизонтальные каналы/флеты в определенный интервал времени или хотя бы правильно сформулировать ТЗ? - страница 7

 
Rayder69:

Вот такой скрипт, уж не помню где и когда отыскал.

Может кому пригодится!?


что он делает?
 
Там забиваешь в переменную какой флет в пунктах вас интересует на протяжении всей истории, и он выдает самый длинный флет в указанных количествах пунктах, когда и сколько он продолжался.
 

спасибо

 
Rayder69:
Там забиваешь в переменную какой флет в пунктах вас интересует на протяжении всей истории, и он выдает самый длинный флет в указанных количествах пунктах, когда и сколько он продолжался.


Ошибка: Скрипт не может работать на таком графике.

Что не так делаю?

 
Не могу сказать. У меня все работает отлично. Я его положил в папку эксперты/скрипты и все считает отлично, хоть валюту, хоть фьючерсы.
 
он не работает на пятизнаке
 
alsu:
он не работает на пятизнаке

возможно исправить? и осмелюсь просить внести в переменные временной интервал, на котором он ищет флет
 
sever30:

возможно исправить? и осмелюсь просить внести в переменные временной интервал, на котором он ищет флет
//////////////////////////////////////////////////////////////////////
//   ПОИСК САМОГО ДЛИННОГО ФЛЕТА ПО ВРЕМЕНИ      +111.mq4           //
//////////////////////////////////////////////////////////////////////
#property show_inputs  
  extern int ПУНКТЫ=300;
  extern datetime НАЧАЛО=D'2010.9.3';
  extern datetime КОНЕЦ=D'2010.1.1';
//----------Переменные для вывода данных--------------  
  int FBars,          //кол-во баров в коридоре      
      SiftBars;       //индекс бара
  double PriceMin,    //минимум коридора
         PriceMax;    //максимум коридора
//----------------------------------------------------
int init()
  {
   НАЧАЛО=iBarShift(0,0,НАЧАЛО);
   КОНЕЦ=iBarShift(0,0,КОНЕЦ);
  }
//----------------------------------------------------
int start()
  {
   int i,n,D,ST,Bar;
//----
   Alert("*********************");
   int Shift_Min=iLowest(Symbol(),0,MODE_LOW,Bars,0);     //Находим индекс минимального бара
   int Shift_Max=iHighest(Symbol(),0,MODE_HIGH,Bars,0);   //Находим индекс максимального бара
   double Min=iLow(Symbol(),0,Shift_Min);                 //Находим минимум на графике
   double Max=iHigh(Symbol(),0,Shift_Max);                //Нходим максимум на графике
   double Z=(Max-Min)/Point;             //Растояние в пунктах от минимума до максимума на всем графике
   double W=Z-ПУНКТЫ;                //Переменная W нужна для ограничения бесполезных циклов по ценам ось(Y)  
//--------------------------------------------------------   
   for (i=0;i<=W;i++)//Цикл по ценам ось(Y) 
    { 
     ST=0;                                
     for(n=НАЧАЛО;n<=КОНЕЦ&&n<Bars;n++)//Цикл по барам ось(X)
      {
       if(Low[n]>Min && High[n]<Min+ПУНКТЫ*Point)
        {
         if(ST==0)
          {
           Bar=n;
          }
         ST++;
        }else
        {
         if(FBars<ST)
          {
           FBars=ST;                   //Сохраним кол-во баров в коридоре
           PriceMin=Min;               //Сохраним минимум коридора
           PriceMax=Min+ПУНКТЫ*Point;  //Сохраним максимум коридора
           SiftBars=Bar;               //Сохраним индекс бара
           ST=0;                       //Обнуляем счетчик
          }else
          {
           ST=0;                       //Обнуляем счетчик
          }
        }
      }
     Min+=1*Point;                     //Сдвигаем коридор на один пункт вверх                   
    }
//--------------------- ВЫВОД ДАННЫХ --------------------
   ObjectDelete("q9w8e5");
   ObjectCreate("q9w8e5",OBJ_RECTANGLE,0,Time[SiftBars],PriceMin,Time[SiftBars+FBars],PriceMax);
   
   datetime Нач=Time[SiftBars+FBars];
   datetime Кон=Time[SiftBars];
   
   Alert("Самый длинны флет в ",ПУНКТЫ," пунктов был с ",TimeDay(Нач),".",TimeMonth(Нач),".",TimeYear(Нач),"   ",TimeHour(Нач),":",TimeMinute(Нач),
        "  по ",TimeDay(Кон),".",TimeMonth(Кон),".",TimeYear(Кон),"   ",TimeHour(Кон),":",TimeMinute(Кон),"    Цена :  MAX = ",PriceMax,"  MIN = ",PriceMin,
        "   Кол-во баров в коридоре = ",FBars,"       :)"); 
   
   return(0);
  }
//+------------------------------------------------------------------+
 
sever29:

Если Вы хотите использовать скрипт для оценки работоспособности лавиноподобных советников, то это годится только для классической лавины со стационарными каналами. Если используются нестационарные каналы, то в этом случае наибольшую опасность создают расходящиеся треугольники.
 
khorosh:
Если Вы хотите использовать скрипт для оценки работоспособности лавиноподобных советников, то это годится только для классической лавины со стационарными каналами. Если используются нестационарные каналы, то в этом случае наибольшую опасность создают расходящиеся треугольники.
стационарные- это канал с двумя параллельными границами?
Причина обращения: