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

 

for(i=0; val1==val3; i++)

Этот код оставляет возможность бесконечного цикла IMO.

 
Мне нужно еще подумать об этом, мои глаза снова затуманились при чтении.

Я проверю завтра.
 
ubzen:

for(i=0; val1==val3; i++)

Этот код оставляет возможность бесконечного цикла IMO.

Действительно, кажется, что он должен циклиться, пока val1 не станет не val3

Если val3 = 0 и val1 = 0, то он должен циклиться, пока не получит значение

ii val3 = iFractal(мгновенно), тогда val1 должен циклиться, пока val1=0 (и это моя проблема прямо здесь)

это действительно своего рода бесконечный цикл или точка блокировки, хотя я получаю оператор печати для возврата значения iFractal для val1, я не совсем уверен, где это
Мне придется еще поэкспериментировать с тем, что другие выложили для проверки этого, но я думаю, что вы правы

Возможно, это не совсем так, как задумано, но это концепция, которую я хочу достичь, чтобы просто увеличить предыдущее значение фрактала

Я буду продолжать работать над этим.
 
diostar:

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

Кажется, что это частично работает, что обманывает меня, потому что мой оператор print возвращает значение, но я думаю, что проблема в том, что как только val3 действительно станет >0, то val1 увеличится обратно до значения 0, а не до предыдущего значения фрактала

Таким образом, теоретически это сработает только один раз, пока val3 == 0, и тогда и только тогда i++ будет увеличиваться назад, пока val1 больше не будет == val3, что я и хочу сделать, однако если val3 == значению, то val1 увеличится обратно до значения 0, где он больше не == val3, и тогда цикл завершится.
Это не совсем то, что я хотел, в конце концов, так что вернемся к чертежной доске снова LOL

Спасибо всем

 
RaptorUK:

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

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

Думаю, понятно, теперь если я смогу придумать, как получить значение этих предыдущих мест.

Я думаю, что смогу разобраться с этим, надеюсь.

Спасибо
 

Свеча 0 не может быть фракталом, поэтому val3 всегда будет 0, так почему бы не использовать . . . . .

for(i=0; val1==0; i++)

... ... и избавиться от val3.

Хотя в данном случае я предпочитаю a while, кажется, что оно лучше подходит к тому, что вы пытаетесь сделать...

 
RaptorUK:

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

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

Это, кажется, говорит мне, где находится последний iFractal, но не оба предыдущих iFractal

Например:

2011.10.07 09:05:36 sup_res EURUSD, M5: Last UPPER Fractal at 6 Last LOWER Fractal at 0

Таким образом, он покажет текущий фрактал UPPER high и выведет местоположение, что хорошо
Я также могу изменить val1=i на val1=iFractal(NULL, 0, MODE_UPPER,i) и это даст мне значение для последнего iFractal
Итак, я немного продвинулся в понимании этого, но мне все еще нужно перекодировать, чтобы вернуться к предыдущему iFractal

Как только iFractal сформируется, этот оператор while продолжит печатать текущий сформированный и последний iFractal. что здорово
Итак, допустим, формируется новый iFractal, я хочу сослаться на этот текущий фрактал из оператора while, который на самом деле является предыдущим 1, а не текущим
Итак, допустим, формируется iFractal LOWER_MODE, и я хочу сослаться на предыдущий iFractal UPPER_MODE и сравнить эти значения.

Но, судя по вашим советам, я думаю, что смогу это сделать. Это все отличные идеи, которые мне очень помогают.
По мере того, как я лучше узнаю, как работает код, мне действительно начинает нравиться использовать то, что я знаю, для своих торговых идей.

Спасибо
 
Agent86:
Это, кажется, говорит мне, где находится последний iFractal, но не оба предыдущих iFractal

В моем коде есть ошибка. . .

while( val1==0 && val2==0)

should be . . .

while( val1==0 || val2==0)
 
RaptorUK:

Свеча 0 не может быть фракталом, поэтому val3 всегда будет 0, так почему бы не использовать . . . . .

... ... и избавиться от val3.

Хотя в данном случае я предпочитаю a while, кажется, что оно лучше подходит к тому, что вы пытаетесь сделать...

OK Я изменил val3 shift на 3, но мне это тоже не очень нравится, я внесу некоторые изменения, спасибо.
 
if(val1 > 0 && faster > slower)
      {
       Print (val1, " val1");
       for(i=0; val1 || val2==0; i++)
         {
         if(iFractals(NULL, 0, MODE_LOWER, i) > 0 && val2 == 0)
         val2 = iFractals(NULL, 0, MODE_LOWER, i);
         Print (" Last LOWER Fractal at ", val2);
        
         }

При добавлении оператора for(statement) внутри оператора if(statement) можно ли добавлять дополнительные if(statements) и ссылаться на значения в цикле?

И обязательно ли эти дополнительные if(операторы) должны быть внутри цикла или можно находиться вне цикла и все равно ссылаться на зацикленные значения, например, val2?

Подскажите, пожалуйста, что считается нормальным для циклов внутри других блоков кода? И как извлечь значения из циклов?

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