Strategi perdagangan berdasarkan persentil ROC Heikin Ashi


Tarikh penciptaan: 2023-10-23 15:41:40 Akhirnya diubah suai: 2023-10-23 15:41:40
Salin: 0 Bilangan klik: 842
1
fokus pada
1617
Pengikut

Strategi perdagangan berdasarkan persentil ROC Heikin Ashi

Gambaran keseluruhan

Strategi ini dinamakan sebagai Strategi Perdagangan Berasaskan Peratusan ROC Heikin Ashi dan bertujuan untuk menyediakan kerangka perdagangan yang mudah digunakan berdasarkan ROC Heikin Ashi dan peratusan ROC.

Prinsip Strategi

Strategi ini dihasilkan untuk berdagang dengan mengira ROC pada harga penutupan Heikin Ashi dan nilai tertinggi dan terendahnya dalam tempoh masa yang berbeza. Secara khusus, ia mengira ROC pada harga penutupan Heikin Ashi pada tempoh rocLength yang lalu. Ia kemudian mengira nilai tertinggi rocHigh dan nilai terendah rocLow pada tempoh 50 roc.

Analisis kelebihan

Kelebihan terbesar strategi ini adalah menggunakan keupayaan pengesanan trend yang kuat dari indikator ROC, yang dikombinasikan dengan ciri-ciri maklumat harga rata Heikin Ashi, yang dapat mengenal pasti perubahan trend dengan berkesan. Berbanding dengan indikator seperti purata bergerak, ROC bertindak balas lebih tajam terhadap perubahan harga, yang membolehkan strategi memasuki permainan tepat pada masanya.

Analisis risiko

Risiko utama strategi ini adalah bahawa parameter yang tidak betul boleh menyebabkan perdagangan sering atau tidak cukup sensitif. RocLength dan kitaran peratusan yang dikira perlu diatur dengan berhati-hati, jika tidak, ia boleh menyebabkan naik turun terlalu lemah atau keras, sehingga kehilangan peluang perdagangan atau menyebabkan kerugian yang tidak perlu. Selain itu, peratusan yang ditetapkan juga perlu disesuaikan dengan ujian berulang di pasaran yang berbeza untuk mencari kombinasi parameter yang terbaik.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa aspek: 1) menggabungkan parameter penapisan masuk ke pasaran dengan indikator lain, seperti RSI dan lain-lain; 2) menggunakan parameter pengoptimuman dinamik dengan kaedah pembelajaran mesin; 3) menetapkan mekanisme keluar kasar asal automatik stop loss; 4) berpasangan dengan strategi bukan trend lain untuk mengimbangi risiko strategi.

ringkaskan

Secara keseluruhannya, strategi ini memanfaatkan keupayaan pengesanan trend yang kuat dari indikator ROC untuk membuat penghakiman dan pengesanan trend dengan ciri Heikin Ashi, dan memfilterkan stop loss ke atas dan ke bawah melalui peratusan ROC yang terbentuk, sehingga ia dapat dilaksanakan. menunjukkan kesan pengesanan trend yang lebih baik. Kelebihannya adalah mengenali perubahan trend pada masa yang tepat dan mengikuti trend besar, sambil menyaring getaran melalui penapis atas dan bawah. Tetapi penetapan parameter yang tidak betul mungkin mempengaruhi prestasi strategi, dan menghadapi risiko pembalikan trend. Dengan lebih mengoptimumkan pilihan parameter dan menetapkan stop loss, strategi ini dapat memperoleh kesan yang lebih stabil.

Kod sumber strategi
/*backtest
start: 2023-09-22 00:00:00
end: 2023-10-22 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © jensenvilhelm

//@version=5
strategy("Heikin Ashi ROC Percentile Strategy", shorttitle="ROC ON" , overlay=false)

// User Inputs
zerohLine = input(0, title="Midline")  // Zero line, baseline for ROC (customer can modify this to adjust midline)
rocLength = input(100, title="roc Length")  // Lookback period for SMA and ROC (customer can modify this to adjust lookback period)

stopLossLevel = input(2, title="Stop Loss (%)")  // Level at which the strategy stops the loss (customer can modify this to adjust stop loss level)
startDate = timestamp("2015 03 03")  // Start date for the strategy (customer can modify this to adjust start date)

// Heikin Ashi values
var float haClose = na  // Define Heikin Ashi close price
var float haOpen = na  // Define Heikin Ashi open price
haClose := ohlc4  // Calculate Heikin Ashi close price as average of OHLC4 (no customer modification needed here)
haOpen := na(haOpen[1]) ? (open + close) / 2 : (haOpen[1] + haClose[1]) / 2  // Calculate Heikin Ashi open price (no customer modification needed here)

// ROC Calculation
roc = ta.roc(ta.sma(haClose, rocLength), rocLength)  // Calculate Rate of Change (ROC) (customer can modify rocLength in the inputs)
rocHigh = ta.highest(roc, 50)  // Get the highest ROC of the last 50 periods (customer can modify this to adjust lookback period)
rocLow = ta.lowest(roc, 50)  // Get the lowest ROC of the last 50 periods (customer can modify this to adjust lookback period)
upperKillLine = ta.percentile_linear_interpolation(rocHigh, 10, 75)  // Calculate upper kill line (customer can modify parameters to adjust this line)
lowerKillLine = ta.percentile_linear_interpolation(rocLow, 10, 25)  // Calculate lower kill line (customer can modify parameters to adjust this line)

// Trade conditions
enterLong = ta.crossover(roc, lowerKillLine)  // Define when to enter long positions (customer can modify conditions to adjust entry points)
exitLong = ta.crossunder(roc, upperKillLine)  // Define when to exit long positions (customer can modify conditions to adjust exit points)
enterShort = ta.crossunder(roc, upperKillLine)  // Define when to enter short positions (customer can modify conditions to adjust entry points)
exitShort = ta.crossover(roc, lowerKillLine )  // Define when to exit short positions (customer can modify conditions to adjust exit points)

// Strategy execution
if(time >= startDate)  // Start strategy from specified start date
    if (enterLong)
        strategy.entry("Long", strategy.long)  // Execute long trades
    if (exitLong)
        strategy.close("Long")  // Close long trades
    if (enterShort)
        strategy.entry("Short", strategy.short)  // Execute short trades
    if (exitShort)
        strategy.close("Short")  // Close short trades

// Plotting
plot(zerohLine,title="Zeroline")  // Plot zero line
plot(roc, "RSI", color=color.rgb(248, 248, 248))  // Plot ROC
plot(rocHigh, "Roc High", color = color.rgb(175, 78, 76))  // Plot highest ROC
plot(rocLow, "Roc Low", color = color.rgb(175, 78, 76))  // Plot lowest ROC
plot(upperKillLine, "Upper Kill Line", color = color.aqua)  // Plot upper kill line
plot(lowerKillLine, "Lower Kill Line", color = color.aqua)  // Plot lower kill line