Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Не можешь найти ответ на вопрос? Воспользуйся поиском!
Nikolay
19
Nikolay 2011.05.23 19:33 

Только начал изучение языка. возникла проблемма. МНе нужно рассчитать среднее значение свечи в количестве пунктов за рассчетный период, т.е. 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;


Andrey F. Zelinsky
29956
Andrey F. Zelinsky 2011.05.23 19:39  

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

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

Vladyslav Goshkov
1960
Vladyslav Goshkov 2011.05.23 19:41  
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;


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

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

KONDOR
358
KONDOR 2011.05.23 20:30  
gelioc:

// extern int period2 = 10;

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

Nikolay
19
Nikolay 2011.05.23 21:48  
Спасибо большое всем за помощь. поймался буквально на азбуке :(
Nikolay
19
Nikolay 2011.05.30 12:55  

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

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

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

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

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

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

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий