inputint InpMA_ma_period = 25; // Параметры МА inputint InpMA_ma_shift = 0; // MA PRICE_HIGH and PRICE_LOW: horizontal shift inputENUM_MA_METHOD InpMA_ma_method = MODE_SMA; // MA PRICE_HIGH: smoothing type int handle_MA;
intOnInit()
{
handle_MA=iCustom(m_symbol.Name(),Period(),"MA",InpMA_ma_period,InpMA_ma_shift,InpMA_ma_method,PRICE_CLOSE);
}
voidOnTick()
{
double MA_price=0.0;
MA_price=iCustomGet(handle_MA,0,0);
Print("MA_price",MA_price);
}
//Получаем данные кастом МАdouble iCustomGet(int handle,constint buffer,constint index)
{
double Custom[1];
//--- reset error code ResetLastError();
//--- fill a part of the iCustom array with values from the indicator buffer that has 0 index if(CopyBuffer(handle,buffer,index,1,Custom)<0)
{
//--- if the copying fails, tell the error code PrintFormat("Failed to copy data from the iCustom indicator, error code %d",GetLastError());
//--- quit with zero result - it means that the indicator is considered as not calculated return(0.0);
}
return(Custom[0]);
}
intiMA(
string symbol, // имя символа ENUM_TIMEFRAMES period, // период int ma_period, // период усреднения int ma_shift, // смещение индикатора по горизонтали ENUM_MA_METHOD ma_method, // тип сглаживания ENUM_APPLIED_PRICE applied_price // тип цены или handle
);
Для получения текущей рыночной информации служат функции SymbolInfoInteger(), SymbolInfoDouble() и SymbolInfoString(). В качестве второго параметра этих функций допустимо передавать один из идентификаторов из перечислений ENUM_SYMBOL_INFO_INTEGER, ENUM_SYMBOL_INFO_DOUBLE и ENUM_SYMBOL_INFO_STRING соответственно. Некоторые символы (как...
Sie sollten ein Flag setzen, um zu prüfen, ob sich der Wert geändert hat, damit SieOnInit nicht bei jedem Tick neu starten müssen
Zum Beispiel so:
Danke, es hat funktioniert.
Soweit ich verstehe, muss ichIndicatorRelease tun
Weil die alte Berechnung noch immer in der Tabelle steht? Zumindest im Testgerät.
Dann sieht der Code wie folgt aus?
Danke, es funktioniert.
Soweit ich das verstehe, muss ich auchIndicatorRelease durchführen
Weil die alte Berechnung noch auf der Karte steht? Zumindest im Testgerät.
Dann sieht der Code wie folgt aus?
Und fügen Sie den Code hinzu:
Wie kann ich meinen benutzerdefinierten MA aus dem RSI-Indikator anstelle des Preises ziehen?
Ich erhalte Daten von benutzerdefinierten MA überiCustomGet.
Ich möchteeinen zusammengesetzten Indikator (Indikator aus Indikator) erstellen.
Beispiele für mt4
https://www.mql5.com/ru/forum/110186
https://www.mql5.com/ru/code/22638
Wie kann ich meinen benutzerdefinierten MA aus dem RSI-Indikator anstelle des Preises ziehen?
Ich erhalte Daten von benutzerdefinierten MA überiCustomGet.
Ich möchteeinen zusammengesetzten Indikator (Indikator aus Indikator) erstellen.
Beispiele für mt4
https://www.mql5.com/ru/forum/110186
https://www.mql5.com/ru/code/22638
Wie wäre es damit:iMA
Wie wäre es damit:iMA
Danke, genau das, was ich brauche
Zu diesem:
Der Compiler antwortet: möglicher Datenverlust aufgrund der Typumwandlung
Frage: Wie kann man das richtig machen? (damit der Compiler nicht flucht)
Zu diesem:
Der Compiler antwortet: möglicher Datenverlust aufgrund der Typumwandlung
Frage: Wie geht man richtig vor? (damit der Compiler nicht flucht)
Der Compiler schimpft nicht, sondern warnt Sie, dass Sie versuchen, double in int zu verwandeln.
Zu diesem:
Der Compiler antwortet: möglicher Datenverlust aufgrund der Typumwandlung
Frage: Wie kann man das richtig machen? (damit der Compiler nicht flucht)
Der Compiler flucht nicht, sondern warnt, dass Sie versuchen, double in int zu verwandeln.
Ich war gerade über fast dasselbe verblüfft.
Das liegt daran, dass diese int ... Wenn ich mich recht erinnere, gab SymbolInfoInteger früher den Typ int zurück, und jetzt gibt es plötzlich long
Ich bin über so ziemlich das Gleiche verblüfft.
das ist wegen dieser int ... Wenn ich mich recht erinnere, gab SymbolInfoInteger früher den Typ int zurück, und jetzt gibt es plötzlich long
Der Rückgabewert ist immer lang - siehe SymbolInfoInteger()-Eigenschaftsbezeichner