Как обновить переменную из оператора if в MQL5 - PullRequest
1 голос
/ 04 октября 2019

Я уже два дня гуглю, но не могу понять, и это кажется базовым.

В пределах void OnTick() я хотел бы создать переменную int a;. Допустим, он начинается без значения int a;, а затем я проверяю условие, если a равно NULL или || равно 1 как этот if (a == NULL || a == 1), который всегда должен возвращать true в первый раз, когда оператор ifработает из-за NULL. Затем я присваиваю значение переменной a = 0;, поэтому a должно равняться 0.

Это должно вызвать else if(a == 0) при следующем вызове OnTick(), в этот момент я назначаю a = 1; в результате чего if запускается в следующий раз и т. д. и бесконечно, постоянно проверяя и присваивая значения, переключающиеся между 0 и 1.

void OnTick()
int a;
if (PositionsTotal() < 1)
{
    if(a == NULL || a == 1)
    {         
        a = 0;                                    
    }
    else if(a == 0) 
    {
        a = 1;                    
    }
}

Я не знаю, что происходит, но во время тестирования вТестер стратегий, я получаю длинную строку чисел, которая переключается между негативами и позитивами всегда с одним и тем же номером -123456789 или 123456789, всегда длиной 9 цифр.

Или во время отладки из Meta Editor. Случайное положительное трехзначное число, которое никогда не меняется!
До сих пор у меня было и 303, и 597.

За пределами разочарования и, скорее всего, ответили где-то еще.
Просто не уверен, как сформулировать поисковый запрос,

Спасибо за помощь.

1 Ответ

0 голосов
/ 04 октября 2019

Я думаю, проблема в том, что вы объявляете свою переменную a внутри метода OnTick, поэтому она начинается с произвольного значения каждый раз, когда вы вызываете этот метод. Попробуйте объявить это вне этого метода.

...