Переесечение скользящих. Вот это прикол!

 

Здравствуйте. Вот это прикол!

double dLongMA1 = iMA(sFinInstr, iTimeFramePeriod, CROSSMA_iLongPeriod1, CROSSMA_iLongShift, MODE_SMA, PRICE_CLOSE, 0);
double dLongMA2 = iMA(sFinInstr, iTimeFramePeriod, CROSSMA_iLongPeriod2, CROSSMA_iLongShift, MODE_SMA, PRICE_CLOSE, 0);
double dLongMA1_1 = iMA(sFinInstr, iTimeFramePeriod, CROSSMA_iLongPeriod1, CROSSMA_iLongShift, MODE_SMA, PRICE_CLOSE, 1);
double dLongMA2_2 = iMA(sFinInstr, iTimeFramePeriod, CROSSMA_iLongPeriod2, CROSSMA_iLongShift, MODE_SMA, PRICE_CLOSE, 1);
Print(" dLongMA1 = ", dLongMA1, " dLongMA2 = ", dLongMA2, " dLongMA1_1 = ", dLongMA2_2);
if ((dLongMA1 > dLongMA2) && (dLongMA1_1 < dLongMA2_2) && (CROSSMA_iLongOrdCount == 0)) 
{
Print("BUY");
CROSSMA_bBuy = true; 
}
if ((dLongMA1 < dLongMA2) && (dLongMA1_1 > dLongMA2_2) && (CROSSMA_iLongOrdCount != 0))
{
Print("SELL");
CROSSMA_bSell = true;
} 

Вот отрывок из лога

....

00:54:39 2011.04.27 11:30 Dnevnoi GAZP,M30: dLongMA1 = 233.0025 dLongMA2 = 232.9971 dLongMA1_1 = 232.5525
00:54:39 2011.04.27 11:30 Dnevnoi GAZP,M30: BUY
00:54:39 2011.04.27 11:30 Dnevnoi GAZP,M30: open #1 buy 2.00 GAZP at 232.97 tp: 302.73 ok
00:54:39 2011.04.27 11:30 Dnevnoi GAZP,M30: LongOrdCount = 1
00:54:39 2011.04.27 11:30 Dnevnoi GAZP,M30: dLongMA1 = 233 dLongMA2 = 232.9967 dLongMA1_1 = 232.5525
...
Внимание. Скрин. Графика, который рисуется по нажатию клавиши "показать график" в тестере.

Судя по логу, в точке, где стоит ордер было пересечение. Хотя на графике его точно нет. Помогите разобраться. Как правильно отследить его?

 

Никакого прикола нет - Вы ведь используете в расчетах индикаторов плавающую цену Close на нулевом баре.

Это означает, что в течение 30 минутного бара (цена Close, как и значения индикаторов, прыгала) эти два индикатора пересекались.

 
Спасибо, только непонятно одно. Если сработало это пересечение, то должно было и обратное пересечение сработать, т.е. сигнал к закрытию, т.е. второе условие.
 
GreenDo:
Спасибо, только непонятно одно. Если сработало это пересечение, то должно было и обратное пересечение сработать, т.е. сигнал к закрытию, т.е. второе условие.

Нет. С какого перепугу? Пересечение случилось, потом не случилось. А никак не пересеклось обратно.
 
Нда, видимо, придется шифт увеличивать. Спасибо всем. Кажется, конец мучениям :)
 
Мучениям не конец. Увеличил шифты на один. С длинными все нормально. А некоторые короткие на 3 бара позже выставляются.
 
GreenDo:

Мучениям не конец. Увеличил шифты на один. С длинными все нормально. А некоторые короткие на 3 бара позже выставляются.


https://www.mql5.com/ru/forum/131853/page2#463442
Причина обращения: