Как обновить переменную с помощью оператора if MQL5

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

Внутри 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.

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

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


person Anwar Goulouh    schedule 04.10.2019    source источник


Ответы (1)


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

person AbdelAziz AbdelLatef    schedule 04.10.2019
comment
ахахахахах лол, как я уже сказал мозговой удар!!! Спасибо, Абель Азиз!! Отлично работает сейчас. - person Anwar Goulouh; 04.10.2019