Я делаю обработчик сигнала для индикатора MACD следующим образом. Сейчас я просто хочу знать, когда основная кривая пересекает нулевую линию. Но это работает только тогда, когда кривая пересекает нулевую линию сверху вниз, а не назад. (прикрепленный снимок).
UPDATE
Я знаю проблему. это функция iMACD (), которая иногда возвращает отрицательный ноль. ¿Кто-нибудь знает, как это решить?
class MACD
{
public:
MACD()
{
}
double Signal(int pos=0)
{
return iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,pos);
}
double Main(int pos=0)
{
return iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,pos);
}
double ZeroAcross()
{
if( (Main(1)>0 && Main(0)<0) || (Main(1)<0 && Main(0)>0) )
{
drawVerticalLine(0);
}
}
};
MACD macd;
int start()
{
mcd.ZeroAcross();
}