Прошу помочь с вопросом, как правильно в индикаторе прописать момент пересечения двух МА с разным периодом. Важно именно определить в индикаторе появление алерта в момент соприкосновения двух МА на текущем баре.
double imaCurrent60 = NormalizeDouble(iMA (NULL, 0, MA_Period60, 0, MODE_EMA, PRICE_CLOSE, 0),5);
double imaPrevious60 = NormalizeDouble(iMA (NULL, 0, MA_Period60, 0, MODE_EMA, PRICE_CLOSE, 1),5);
double imaCurrent14 = NormalizeDouble(iMA (NULL, 0, MA_Period14, 0, MODE_EMA, PRICE_CLOSE, 0),5);
double imaPrevious14 = NormalizeDouble(iMA (NULL, 0, MA_Period14, 0, MODE_EMA, PRICE_CLOSE, 1),5);
if (imaCurrent60 <= imaCurrent14 && imaPrevious60 >= imaPrevious14)
// Да, есть сигнал на покупку
{
string messageBuy = StringConcatenate("Envelop (", Symbol(), ", ", Period(), ") - BUY!!!","-" ,TimeToStr(TimeLocal(),TIME_SECONDS));
Alert(messageBuy);
return(BUY);}
// есть сигнал на продажу - выход за пределы верхнего канала
if (imaCurrent60 >= imaCurrent14 && imaPrevious60 <= imaPrevious14)
// Да, есть сигнал на продажу
{
string messageSell = StringConcatenate("Envelop (", Symbol(), ", ", Period(), ") - SELL!!!","-" ,TimeToStr(TimeLocal(),TIME_SECONDS));
Alert(messageSell);
return(SELL);}
// Сигнала нет
может есть другие варианты
других вариантов - не брать 0-й бар для цен Close :-)
то есть считать для баров 1,2 а не 0,1 как у вас
---
0-й бар это текущий, незакрытый, там цена Close постоянно меняется и "пересечений" MA вверх/вниз может быть много-много.
ещё нюанс, о котором мало знают, а кто знает старается не вспоминать : в момент когда бар закрывается/открывается, новые цены close[1] и open[0] могут быть не равны предыдущему close[0]..
других вариантов - не брать 0-й бар для цен Close :-)
то есть считать для баров 1,2 а не 0,1 как у вас
---
0-й бар это текущий, незакрытый, там цена Close постоянно меняется и "пересечений" MA вверх/вниз может быть много-много.
ещё нюанс, о котором мало знают, а кто знает старается не вспоминать : в момент когда бар закрывается/открывается, новые цены close[1] и open[0] могут быть не равны предыдущему close[0]..
Важно именно на текущей свече сигнал получать
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Прошу помочь с вопросом, как правильно в индикаторе прописать момент пересечения двух МА с разным периодом. Важно именно определить в индикаторе появление алерта в момент соприкосновения двух МА на текущем баре.
double imaCurrent60 = NormalizeDouble(iMA (NULL, 0, MA_Period60, 0, MODE_EMA, PRICE_CLOSE, 0),5);
double imaPrevious60 = NormalizeDouble(iMA (NULL, 0, MA_Period60, 0, MODE_EMA, PRICE_CLOSE, 1),5);
double imaCurrent14 = NormalizeDouble(iMA (NULL, 0, MA_Period14, 0, MODE_EMA, PRICE_CLOSE, 0),5);
double imaPrevious14 = NormalizeDouble(iMA (NULL, 0, MA_Period14, 0, MODE_EMA, PRICE_CLOSE, 1),5);
if (imaCurrent60 <= imaCurrent14 && imaPrevious60 >= imaPrevious14)
// Да, есть сигнал на покупку
{
string messageBuy = StringConcatenate("Envelop (", Symbol(), ", ", Period(), ") - BUY!!!","-" ,TimeToStr(TimeLocal(),TIME_SECONDS));
Alert(messageBuy);
return(BUY);}
// есть сигнал на продажу - выход за пределы верхнего канала
if (imaCurrent60 >= imaCurrent14 && imaPrevious60 <= imaPrevious14)
// Да, есть сигнал на продажу
{
string messageSell = StringConcatenate("Envelop (", Symbol(), ", ", Period(), ") - SELL!!!","-" ,TimeToStr(TimeLocal(),TIME_SECONDS));
Alert(messageSell);
return(SELL);}
// Сигнала нет
может есть другие варианты