[英]Translate spine script (tradingview) to mql indicator (meta trader 4)
我想將 Pine 腳本從交易視圖腳本轉換為元交易者 4 的 mq4 指標。
這是從交易視圖 Pine 腳本翻譯的腳本:
rsiLength = input(title="RSI Length", type=input.integer, defval=14)
lbLength = input(title="Look Back Length", type=input.integer, defval=5)
avgLength = input(title="Average Length", type=input.integer, defval=8)
drawSig = input(title="Signal On/Off?", type=input.bool, defval=false)
sigLength = input(title="Signal Length", type=input.integer, defval=6)
src = input(title="Source", type=input.source, defval=close)
ob = input(title="Over Bought", type=input.integer, defval=80)
os = input(title="Over Sold", type=input.integer, defval=20)
avgRSI(rsiLength, lookBack, avgLen) =>
rsi = rsi(src, rsiLength)
rsiLowest = lowest(rsi, lookBack)
rsiHighest = highest(rsi, lookBack)
avgRSILow = sma(rsi - rsiLowest , avgLen)
avgHiLow = sma(rsiHighest - rsiLowest, avgLen)
return = 100 / (.01 + avgHiLow / avgRSILow)
return
rsi = avgRSI( rsiLength, lbLength, avgLength )
plot(series=rsi, title="StochRSI", color=color.red, transp=0)
signal = drawSig ? sma(rsi, sigLength) : na
plot(series=signal, title="StochRSI Signal", color=color.orange, transp=0)
h1 = hline(price=ob, title="OB")
h2 = hline(price=os, title="OS")
fill(h1, h2)
我不明白這兩行:
avgRSILow = sma(rsi - rsiLowest , avgLen)
avgHiLow = sma(rsiHighest - rsiLowest, avgLen)
這是我對 metatrader 4 的代碼:
double lineBuffer[];
int rsiLength = 5;
int lbLength = 5;
int avgLength = 8;
int sigLength = 6;
int OnInit()
{
SetIndexBuffer(0, lineBuffer);
return(INIT_SUCCEEDED);
}
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
int uncalculatedBar = rates_total - prev_calculated;
for(int i = 0; i < uncalculatedBar; i++){
double rsi = iRSI(NULL, NULL, rsiLength, PRICE_CLOSE, i);
double rsiLowest = lowestRSI(lbLength, i);
double rsiHighest = highestRSI(lbLength, i);
double avgRSILow = lowAverageRsi(avgLength, i, rsiLowest);
double avgHiLow = lowHighRsiAverage(avgLength, rsiLowest, rsiHighest);
lineBuffer[i] = 100 / (.01 + avgHiLow / avgRSILow);
}
return(rates_total);
}
// Return lowest rsi value for the last x values (->loopback) from a specific index (->start)
double lowestRSI(int loopback, int start) {
double lowest_rsi = iRSI(NULL, NULL, rsiLength, PRICE_CLOSE, start);
for(int i = start + 1; i <= start + loopback; i++){
if(iRSI(NULL, NULL, rsiLength, PRICE_CLOSE, i) < lowest_rsi){
lowest_rsi = iRSI(NULL, NULL, rsiLength, PRICE_CLOSE, i);
}
}
return lowest_rsi;
}
// Return highest rsi value for the last x values (->loopback) from a specific index (->start)
double highestRSI(int loopback, int start) {
double highest_rsi = iRSI(NULL, NULL, rsiLength, PRICE_CLOSE, start);
for(int i = start + 1; i <= start + loopback; i++){
if(iRSI(NULL, NULL, rsiLength, PRICE_CLOSE, i) > highest_rsi){
highest_rsi = iRSI(NULL, NULL, rsiLength, PRICE_CLOSE, i);
}
}
return highest_rsi;
}
// Calculate rsi average for last x values (-> loopback) minus lowestRsi
double lowAverageRsi(int loopback, int start, double lowestRsi) {
double low_average_rsi = 0;
for(int i = start; i < start + loopback; i++){
low_average_rsi = low_average_rsi + ((iRSI(NULL, NULL, rsiLength, PRICE_CLOSE, i) - lowestRsi) / loopback);
}
return low_average_rsi;
}
// Calculate avergage for last x values between two values
double lowHighRsiAverage(int loopback, double lowestRsi, double highestRSI) {
double low_high_rsi_average = 0;
for(int i = 0; i < loopback; i++){
low_high_rsi_average = low_high_rsi_average + ((highestRSI - lowestRsi) / loopback);
}
return low_high_rsi_average;
}
我被卡住了,我不知道該怎么辦,如果你能幫助我,那就太好了
如果您想解釋代碼,或者由於 mt4 編碼性質而需要解決,idk。
avgRSILow = sma(rsi, avgLen) - sma(rsiLowest , avgLen)
avgHiLow = sma(rsiHighest, avgLen) - sma(rsiLowest, avgLen)
上面的代碼給出了相同的結果
avgRSILow = sma(rsi - rsiLowest , avgLen)
avgHiLow = sma(rsiHighest - rsiLowest, avgLen)
它只是 x 數量的值返回是使用 sma function 的平均值並相互減去該值。 idk 代碼的性質取決於創建者,但他只是過去 x 量長度或 rsi 值的平均結果,以及 x 回溯量的最低值的平均值。
如果您仍然有疑問,請嘗試更好地解釋您不了解的內容...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.