Индикаторный вопрос - страница 5

 
И последний вопрос

Что типичнее - считать вперед или назад при построении индикаторов, которые могут быть использованы в советниках?

Создает ли один из них больше проблем, чем другой, или это просто вопрос предпочтений и дизайна?

Пожалуйста, посоветуйте

Спасибо

 
Время от времени заглядывайте в эту статью: https: //www.mql5.com/en/articles/1456 Она может быть немного пугающей, но не останавливайтесь на достигнутом, постепенно, шаг за шагом, когда вы поймете ее, вы узнаете об индикаторах, советниках и их различиях.
 
Agent86:
И последний вопрос

Что типичнее - считать вперед или назад при построении индикаторов, которые могут быть использованы в советниках?

Создает ли один из них больше проблем, чем другой, или это просто вопрос предпочтений и дизайна?

Обычно многие индикаторы, которые я видел, считают i++, по моему скромному мнению, это неправильно... График строится слева направо, старые свечи находятся слева, новые - справа. Когда индикатор обрабатывает старые бары на графике (чтобы затем начать обрабатывать текущий бар(ы)), разве он не должен делать это таким образом, чтобы отражать то, как он будет работать на живых данных?

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

 

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

В связи с этим я предпочитаю "переносить" логику индикатора, если она достаточно хороша, в какую-нибудь функцию или либу, которую советник может использовать напрямую, вместо того, чтобы вызывать iCustom и считывать буферы и т.д. Это может вызвать проблемы. Это может быть проблематично, не забывайте.

Поэтому для меня хороший индикатор - это тот, который может позволить мне сделать именно это.

 
Я думаю, что я буду экспериментировать с каждым из них, но мне кажется, что я бы предпочел увеличиваться вперед от 0, однако, как увеличиваются стандартные индикаторы?

Если бы я хотел использовать iFractals для чего-то полезного в советнике, кажется, что сигнал возникает естественно; и если бы я хотел вернуться назад во времени к предыдущему iFractal, тогда я бы i++ сдвиг к предыдущему iFractal.

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

Я пытаюсь разобраться во всем этом.

 
RaptorUK:
Время от времени заглядывайте в эту статью: https: //www.mql5.com/en/articles/1456 Она может быть немного пугающей, но не останавливайтесь на достигнутом, шаг за шагом, когда вы поймете ее, вы узнаете об индикаторах, советниках и их различиях.
Спасибо.

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

Я буду продолжать читать, спасибо еще раз.
 
Привет

Может ли кто-нибудь подтвердить, правильно ли я рассматриваю этот код?

Мой оператор print относится к предыдущему iFractal?

//maybe something like this to count back to the previous iFractal for reference
//needs work     
    for(i=0; val1==val3; i++)
      {
      val1=iFractals(NULL, 0, MODE_UPPER,i);
      val3=iFractals(NULL, 0, MODE_UPPER,0);
      if (val1 > 0)
         {
         Print (val1, " = val1");
         }
        }
Это все, что я смог придумать с моими ограниченными знаниями на данный момент.

В любом случае, есть ли что-то неправильное в этом методе, чтобы вернуться к предыдущему iFractal, если это действительно то, что я создал здесь.

Это кажется правильным в теории, насколько я могу судить?

Пожалуйста, посоветуйте

Спасибо

 

Когда вы получаете iFractal, его значение > 0, да?

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

val1 = 0; val2 = 0; i = 0;

while( val1==0 && val2==0)
   {
   if (iFractals(NULL, 0, MODE_UPPER,i) > 0 && val1==0) val1 = i;
   if (iFractals(NULL, 0, MODE_LOWER,i) > 0 && val2==0) val2 = i;
   i++;
   }
Print("Last UPPER Fractal at ", val1, " Last LOWER Fractal at ", val2);
 
for(i=0; val1==val3; i++) <--- val1==val3??? This is indeed, "tricky"
       {
      val1=iFractals(NULL, 0, MODE_UPPER,i);
      val3=iFractals(NULL, 0, MODE_UPPER,0);
      if (val1 > 0)
         {
         Print (val1, " = val1");
         }
        }

Честно говоря, я впервые вижу такое условие завершения цикла. Это сложный вопрос...

 

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

void start(){
   double val1=0,val3=0;
   for(int i=0; i<=3; i++){
      val1=iFractals(NULL, 0, MODE_UPPER,i);
      val3=iFractals(NULL, 0, MODE_UPPER,0);
      if(val1>val3){
        Print("Value_1="+val1+" TimeOf_Fractal="+TimeToStr(TimeCurrent()));
        break;
      }
   }
}

Я не помню, как формируются фракталы. Думаю, он формируется на третьем баре. И он учитывает два бара до и после него.

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

Вот что я получил:

2011.10.06 06:38:49     2011.01.02 23:00  De_Bugger EURUSD,M1: Value_1=1.33710000 TimeOf_Fractal=2011.01.02 23:00