нужна помощь с "глупым" вопросом.

 

Только начал изучение языка. возникла проблемма. МНе нужно рассчитать среднее значение свечи в количестве пунктов за рассчетный период, т.е. H_L[i]=High[i]-Low[i]; где H_L Должен быть массивом, к которому нужно будет потом обращаться в связи с тем, что нужны значения определенных индексов. попробовал написать, при тестировании даже в визуальном режиме он мне H_L с любым индексом приравнивает к 0 :( подскажите пожалуйста, где я ошибся, если можно, то как это правильно переписать.. заранее благодарен за помощь.

// extern int period2 = 10;

double sum=0;
double H_L[];
int i;
for(i=0;i<=period2;i++)
{
H_L[i]=High[i]-Low[i];

sum=sum+H_L[i];
// Alert("H_L[ ",i," ]= ",H_L[i]," High[ ",i," ] = ",High[i]," LOW[ ",i," ] = ", Low[i]);

}

H_Lsr=sum/period2;


 

переменная period2 типа int

можете почитать здесь https://docs.mql4.com/ru/basis/types/casting

 
gelioc:

Только начал изучение языка. возникла проблемма. МНе нужно рассчитать среднее значение свечи в количестве пунктов за рассчетный период, т.е. H_L[i]=High[i]-Low[i]; где H_L Должен быть массивом, к которому нужно будет потом обращаться в связи с тем, что нужны значения определенных индексов. попробовал написать, при тестировании даже в визуальном режиме он мне H_L с любым индексом приравнивает к 0 :( подскажите пожалуйста, где я ошибся, если можно, то как это правильно переписать.. заранее благодарен за помощь.

// extern int period2 = 10;

double sum=0;
double H_L[];
int i;
for(i=0;i<=period2;i++)
{
H_L[i]=High[i]-Low[i];

sum=sum+H_L[i];
// Alert("H_L[ ",i," ]= ",H_L[i]," High[ ",i," ] = ",High[i]," LOW[ ",i," ] = ", Low[i]);

}

H_Lsr=sum/period2;


Под массивы нужно память отводить. Укажите размерность.

Самое правильное решение, ИМХО - начать с изучения документации и учебника - все это и еще масса вопросов, которые у Вас возникнут расписаны достаточно подробно.

 
gelioc:

// extern int period2 = 10;

double H_L[100]; или ArrayResize(H_L,100); в инит

 
Спасибо большое всем за помощь. поймался буквально на азбуке :(
 

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

принимается решение об открытии позиции на buy.

перед открытием ордера ведется проверка на открытые ордера. если открытые ордера присутствуют, тогда делается следущее:

*все открытые ордера на sell должны быть закрыты.

*если присутствуют ордера на бай, тогда НОвый ордер НЕ открывается, но при этом проверяется стоп-лоссы этих buy ордеров. Если уровень стоп-лосса, установленного в открытых ордерах меньше, чем полученный при вычислениях tick_SLv, тогда его нужно заменить.

*если же ордеров на buy нет, тогда открывается новый ордер со стопом tick_SLv.

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