У меня есть эта маленькая функция, которая доставляет мне проблемы, только часть функции будет следовать моим условиям одновременно.
bool trend()
{
//is there a trend?
close1 = iClose(NULL,0,1); //vars
close2 = iClose(NULL,0,2);
close3 = iClose(NULL,0,3);
open1 = iOpen(NULL,0,1);
open2 = iOpen(NULL,0,2);
open3 = iOpen(NULL,0,3);
if(close3 > open3 && close2 > open2 && close1 > open1)
{
return(true); //uptrend
}
else if(close3 < open3 && close2 < open2 && close1 < open1)
{
return(false); //downtrend
}
else return(EMPTY_VALUE);
}
Вот как вызывается функция в int start()
trending = trend();
if (trending == true) Order = SIGNAL_BUY; // Rule to ENTER a Long trade
if (trending == false) Order = SIGNAL_SELL; // Rule to ENTER a Short trade
Как написано выше, мой сигнал на продажу будет работать по условиям, но сигналы на покупку не следуют условиям, и я не могу понять, как они срабатывают.
Если я удалю «иначе вернуть (EMPTY_VALUE);» затем ордера на покупку начинают следовать условию, но ордера на продажу больше не следуют условиям. Сломанный ордер на продажу ведет себя так же, как и сломанный ордер на покупку.
Любые идеи, почему моя функция ведет себя так? Спасибо!