Я хочу «перевести» Pine-Script на MQL4, но получаю неверный вывод в MQL4 по сравнению с Pine-Script в Trading-view.
Я написал индикатор на Pine-Script, так как это кажется довольно простым. После того, как я получил результат, который искал, я сократил Pine-Script. Вот рабочий Pine-Script:
// Pinescript - whole Code to recreate the Indicator
study( "Volume RSI", shorttitle = "VoRSI" )
periode = input( 3, title = "Periode", minval = 1 )
VoRSI = rsi( volume, periode )
plot( VoRSI, color = #000000, linewidth = 2 )
Теперь я хочу перевести этот код на MQL4, но получаю разные результаты.
Вот код MQL4, который я написал до сих пор:
// MQL4 Code
input int InpRSIPeriod = 3; // RSI Period
double sumn = 0.0;
double sump = 0.0;
double VoRSI = 0.0;
int i = 0;
void OnTick() {
for ( i; i < InpRSIPeriod; i++ ) {
// Check if the Volume is buy or sell
double close = iClose( Symbol(), 0, i );
double old_close = iClose( Symbol(), 0, i + 1 );
if ( close - old_close < 0 )
{
// If the Volume is positive, add it up to the positive sum "sump"
sump = sump + iVolume( Symbol(), 0, i + 1 );
}
else
{
// If the Volume is negative, add it up to the negative sum "sumn"
sumn = sumn + iVolume( Symbol(), 0, i + 1 );
}
}
// Get the MA of the sump and sumn for the Input Period
double Volume_p = sump / InpRSIPeriod;
double Volume_n = sumn / InpRSIPeriod;
// Calculate the RSI for the Volume
VoRSI = 100 - 100 / ( 1 + Volume_p / Volume_n );
// Print Volume RSI for comparison with Tradingview
Print( VoRSI );
// Reset the Variables for the next "OnTick" Event
i = 0;
sumn = 0;
sump = 0;
}
Я уже проверил, совпадают ли период, символ и таймфрейм, а также сделал снимок экрана с различными выходами.
Я уже пытался следовать объяснениям функций в pine-скрипте для функций rsi, max, rma и sma, но я не могу получить никаких результатов, которые кажутся наполовину выполненными.
Я рассчитываю перевести Pine-Script на MQL4.
Я не хочу рисовать весь объем RSI в качестве индикатора на графике. Я просто хочу рассчитать значение Volume RSI за весь последний период (когда открывается новая свеча), чтобы проверить, достигает ли оно значения выше 80. После этого я хочу проверить, когда оно снова опустится ниже 80, и использовать это как пороговое значение. следует ли открывать сделку или нет.
Мне нужна простая функция, которая получает период в качестве входных данных и принимает текущую пару и таймфрейм, чтобы вернуть желаемое значение от 0 до 100. До сих пор мой перевод сохраняется, чтобы предоставить неправильное выходное значение.
Что я упустил в расчете? Может ли кто-нибудь сказать мне, как правильно рассчитать мой индикатор Tradingview с помощью MQL4?