[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 498

 
rigc:
вообще не рисует)))


Ну не знаю попробовал - у меня рисует. Индикатор простой до нельзя:

int start()
  {
   
//----
  double F1=0, F3=0, F13;    // номера фракталов
  int    B1, B3, SR=3;               // номера баров
  
  while(F3==0)                       //поиск фракталов
  {
    F13=iFractals(NULL,0,MODE_UPPER,SR);
    if (F13!=0) 
    {
      if      (F1==0){B1=SR; F1=F13;}
      else if (F3==0){B3=SR; F3=F13;}
    }
    SR++; 
  }
    ObjectSet("Rezist", OBJPROP_TIME1 ,iTime(NULL,0,B3));
    ObjectSet("Rezist", OBJPROP_TIME2 ,iTime(NULL,0,B1));
    ObjectSet("Rezist", OBJPROP_PRICE1,iHigh(NULL,0,B3));
    ObjectSet("Rezist", OBJPROP_PRICE2,iHigh(NULL,0,B1));
    ObjectSet("Rezist", OBJPROP_RAY   , True);

  
//----
   return(0);
  }

SR=3, это точто я исправил. Было SR=2 номер бара с какого начинать искать фрактал

 
Figar0:


Ну не знаю попробовал - у меня рисует. Индикатор простой до нельзя:

SR=3, это точто я исправил. Было SR=2 номер бара с какого начинать искать фрактал

ага, ясно)))

спс

Я Ваш должник

 
sss2019:
Подскажите как выполнить условие? Вот есть условие, открыть ордер на покупку по текущей цене, как только цена дошла до 1.2550. Получается когда цена становыится больше или равна 1.2550 откурывается ордер, а когда ордер открывается, то статическая переменная блокирует открытие новых ордеров, до тех пор пока ордеров не станет 0. И получается как только ордер закрылся, ордеров больше нет с таким магиком, то запрет на открытие снимается и сразу же открывается новый ордер, но цена то уже давно ушла от этого уроня. Нужно именно чтобы советник открывал рыночные ордера как цена дойдет до уровня, а не отложенные.
У вас проверка на больше или равно 1.2550. Т.е. когда больше (цена давно ушла), то критерий всё-равно истенен, а значит и позиции будут открываться.
Вам стоит подумать над условием - цена пересекла уровень 1.2550.
 
artmedia70:
У вас проверка на больше или равно 1.2550. Т.е. когда больше (цена давно ушла), то критерий всё-равно истенен, а значит и позиции будут открываться.
Вам стоит подумать над условием - цена пересекла уровень 1.2550.


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

 

Подскажите, как из советника можно уменьшить размер оперативки, обнулять ее эпизодически что-ли, а то один терминал до 100 Мб ест и как я заметил, ест, пока до 100% не доберется. На одном компе 25 терминалов где-то установлено.

Уточню, используется только один график, и то показ отключен. А вот данные используются с десятков валютных пар.

Может влиять на загрузку памяти размер файлов исторических данных? Если оставить только дневки будет работать оперативнее?

 
sss2019:


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

Зачем так? Можно, например, использовать МАшку с периодом 0. Проверяете первый и второй бары на пересечение с уровнем. На текущем открываетесь.

Ошибки могут быть в голове программера, а не в депозите счёта :)

 

Всем привет !

Уважаемые Профи - решите пожалуйста мой вопрос: https://www.mql5.com/ru/forum/116542

 

Подскажите почему этот цикл работает не правильно, не ищет самый высокий максимум, я никак не могу найти ошибку. Он пропускает самый высокий максимум и в результаты берет максимум предидущей свечи.

все значения массива buystoploss по умолчанию равны 0.

Вот на рисунке получается что цикл нашел максимум 13 свечи, пропустив при этом более высокие максимумы

  i2=0;
  for(i=0;i<7;i++)
    {
    while(i2 <= 19)
      {
      if(High[i2]>buystoploss[i])
        {
        buystoploss[i]=High[i2];
        }
      i2++;
      }
    }
    Alert(" ",buystoploss[4]);
 
sss2019:

Подскажите почему этот цикл работает не правильно, не ищет самый высокий максимум, я никак не могу найти ошибку. Он пропускает самый высокий максимум и в результаты берет максимум предидущей свечи.

все значения массива buystoploss по умолчанию равны 0.


Это такая шутка:

Alert(" ",buystoploss[4]);

?

 
sss2019:

Подскажите почему этот цикл работает не правильно, не ищет самый высокий максимум, я никак не могу найти ошибку. Он пропускает самый высокий максимум и в результаты берет максимум предидущей свечи.

все значения массива buystoploss по умолчанию равны 0.

ну для начала у вас i2 обнуляется только один раз...

Причина обращения: