- Как теперь выводить деньги с MQL5.com?
- Блокировка финансовых операций.
- Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Добрый день! Появилась странная задача, может кто Ее решал. Нужно связать 2 индикатора ктр.будут расположенны в подвале "внизу графика", и при пересечении одного из другим (MA - RSI) создадут событие. Вроде все просто, но MA выдаёт цену, а RSI нет, как их сравнить? Есть идеи?
- Прикрепить к графику RSI.
- Добавить на него же МА. В параметре "Применить к" указать First indicator's data.
- Профит!
- Прикрепить к графику RSI.
- Добавить на него же МА. В параметре "Применить к" указать First indicator's data.
- Профит!
Спас, тоже разобрался))
Программно всё очень просто: нужно при создании индикатора MA указать в ENUM_APPLIED_PRICE хендл индикатора RSI:
//+------------------------------------------------------------------+ //| First indicator's data RSI MA.mq5 | //| Copyright © 2017, Vladimir Karputov | //| http://wmua.ru/slesar/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2017, Vladimir Karputov" #property link "http://wmua.ru/slesar/" #property version "1.00" //--- input parameters input int Input1=1; //--- int handle_iMA; // variable for storing the handle of the iMA indicator int handle_iRSI; // variable for storing the handle of the iRSI indicator //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- create handle of the indicator iRSI handle_iRSI=iRSI(Symbol(),Period(),14,PRICE_CLOSE); //--- if the handle is not created if(handle_iRSI==INVALID_HANDLE) { //--- tell about the failure and output the error code PrintFormat("Failed to create handle of the iRSI indicator for the symbol %s/%s, error code %d", Symbol(), EnumToString(Period()), GetLastError()); //--- the indicator is stopped early return(INIT_FAILED); } //--- create handle of the indicator iMA handle_iMA=iMA(Symbol(),Period(),15,0,MODE_EMA,handle_iRSI); //--- if the handle is not created if(handle_iMA==INVALID_HANDLE) { //--- tell about the failure and output the error code PrintFormat("Failed to create handle of the iMA indicator for the symbol %s/%s, error code %d", Symbol(), EnumToString(Period()), GetLastError()); //--- the indicator is stopped early return(INIT_FAILED); } //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- string text=""; text="RSI(#0): "+DoubleToString(iRSIGet(0),2)+"\n"; text+="MA from RSI(#0): "+DoubleToString(iMAGet(0),2)+"\n"; Comment(text); } //+------------------------------------------------------------------+ //| Get value of buffers for the iMA | //+------------------------------------------------------------------+ double iMAGet(const int index) { double MA[1]; //--- reset error code ResetLastError(); //--- fill a part of the iMABuffer array with values from the indicator buffer that has 0 index if(CopyBuffer(handle_iMA,0,index,1,MA)<0) { //--- if the copying fails, tell the error code PrintFormat("Failed to copy data from the iMA indicator, error code %d",GetLastError()); //--- quit with zero result - it means that the indicator is considered as not calculated return(0.0); } return(MA[0]); } //+------------------------------------------------------------------+ //| Get value of buffers for the iRSI | //+------------------------------------------------------------------+ double iRSIGet(const int index) { double RSI[1]; //--- reset error code ResetLastError(); //--- fill a part of the iRSI array with values from the indicator buffer that has 0 index if(CopyBuffer(handle_iRSI,0,index,1,RSI)<0) { //--- if the copying fails, tell the error code PrintFormat("Failed to copy data from the iRSI indicator, error code %d",GetLastError()); //--- quit with zero result - it means that the indicator is considered as not calculated return(0.0); } return(RSI[0]); } //+------------------------------------------------------------------+
df
j
Все, все, дошло)))) спасибо всем, вопрос снят! я просто не знал про First indicator's data
Добрый день! Появилась странная задача, может кто Ее решал. Нужно связать 2 индикатора ктр.будут расположенны в подвале "внизу графика", и при пересечении одного из другим (MA - RSI) создадут событие. Вроде все просто, но MA выдаёт цену, а RSI нет, как их сравнить? Есть идеи?
Все, что вам посоветовали выше, скорее всего это не то, о чем вы спрашивали. Когда два индикатора находятся в одном подокне, это не значит, что они рассчитывается один от другого. Чаще всего они работают независимо, но только вписываются в подокно по вертикали. Программно получить тот же эффект можно рассчитав от каждого индикатора WPR с периодом 200-300 баров.
Используя First indicator's data вы получаете банальную сигнальную линию как у стохастика.
Все, что вам посоветовали выше, скорее всего это не то, о чем вы спрашивали. Когда два индикатора находятся в одном подокне, это не значит, что они рассчитывается один от другого. Чаще всего они работают независимо, но только вписываются в подокно по вертикали. Программно получить тот же эффект можно рассчитав от каждого индикатора WPR с периодом 200-300 баров.
Используя First indicator's data вы получаете банальную сигнальную линию как у стохастика.
Я понял Вас, сначала как раз думал рассчитывать значения 2х индикаторов относительно вертикали. А что такое WPR?
Вам надо перевести процент уровня RSI в цену и таким образом сравнивать показания. Сейчас же Вы усреднили значение RSI, что не совсем верно.
Какие значимые уровни по RSI и параметры RSI и MA у Вас - сброшу скрин, как это выглядеть будет на чарте - может оно Вам и не надо...
Ищите индикатор "RSI on Chart" и индикатор "MA в подвале". Делаете по аналогии.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования