Strategi penjejakan arah aliran penunjuk teknikal berbilang digabungkan dengan penembusan carta awan dan sistem henti kerugian

RSI MA SMA EMA
Tarikh penciptaan: 2024-11-28 15:13:23 Akhirnya diubah suai: 2024-11-28 15:13:23
Salin: 0 Bilangan klik: 484
1
fokus pada
1617
Pengikut

Strategi penjejakan arah aliran penunjuk teknikal berbilang digabungkan dengan penembusan carta awan dan sistem henti kerugian

Gambaran keseluruhan

Strategi ini adalah sistem perdagangan yang lengkap yang menggabungkan satu siri petunjuk teknikal, yang membuat keputusan perdagangan berdasarkan petunjuk Ikimoku Cloud. Sistem ini menentukan masa masuk melalui silang antena Tenkan dan garis dasar Kijun, sambil menggabungkan indeks RSI yang agak kuat dan purata bergerak sebagai syarat penapisan tambahan. Strategi ini menggunakan komponen awan sebagai stop loss dinamik, membentuk sistem kawalan risiko yang lengkap.

Prinsip Strategi

Logik teras strategi adalah berdasarkan elemen utama berikut:

  1. Isyarat masuk dihasilkan oleh silang antena dengan garis asas, penembusan atas membentuk sinyal ganda, penembusan bawah membentuk sinyal kosong
  2. Hubungan kedudukan harga berbanding awan ((Kumo) sebagai pengesahan trend, harga di atas awan, harga di bawah awan kosong
  3. Hubungan kedudukan purata bergerak 50 dan 200 hari sebagai syarat penapisan trend
  4. Indeks RSI berputar sebagai pengesahan lemah pasaran, penapis isyarat palsu
  5. Menggunakan sempadan atas dan bawah awan sebagai kedudukan hentian dinamik untuk pengurusan dinamik risiko

Kelebihan Strategik

  1. Gabungan pelbagai petunjuk teknikal memberikan isyarat dagangan yang lebih dipercayai, mengurangkan kesan isyarat palsu
  2. Menggunakan carta awan sebagai titik hentian dinamik, dapat menyesuaikan kedudukan hentian secara automatik mengikut turun naik pasaran, melindungi keuntungan dan memberikan ruang yang cukup untuk turun naik harga
  3. Penapisan RSI pada garis pusingan berkesan mengelakkan dagangan buruk di kawasan overbought dan oversold
  4. Moving Average Crossovers memberikan pengesahan trend tambahan dan meningkatkan kadar kejayaan dagangan
  5. Sistem kawalan risiko yang komprehensif, merangkumi semua bahagian kemasukan, pegangan dan pengeluaran

Risiko Strategik

  1. Penapisan pelbagai indikator boleh menyebabkan kehilangan peluang yang berpotensi baik
  2. Isyarat pelarian palsu yang kerap mungkin berlaku dalam pasaran yang tidak menentu
  3. Indeks grafik awan sendiri mempunyai ketidakselesaan yang boleh menjejaskan masa kemasukan
  4. Dalam pasaran yang bergolak, stop loss dinamik mungkin terlalu longgar
  5. Terlalu banyak syarat penapisan boleh menyebabkan peluang dagangan yang berkurangan, menjejaskan hasil keseluruhan strategi

Arah pengoptimuman strategi

  1. Memperkenalkan penunjuk kadar turun naik, menyesuaikan parameter strategi mengikut turun naik pasaran
  2. Mengoptimumkan seting parameter grafik awan untuk menjadikannya lebih sesuai untuk persekitaran pasaran yang berbeza
  3. Menambah analisis jumlah transaksi dan meningkatkan kebolehpercayaan isyarat
  4. Memperkenalkan mekanisme penapisan masa untuk mengelakkan tempoh masa yang bergelombang
  5. Membangunkan sistem pengoptimuman parameter yang beradaptasi untuk menyesuaikan strategi secara dinamik

ringkaskan

Strategi ini membina satu sistem perdagangan yang lengkap dengan menggabungkan beberapa petunjuk teknikal. Strategi ini tidak hanya memberi perhatian kepada penjanaan isyarat, tetapi juga mengandungi mekanisme kawalan risiko yang sempurna. Dengan menetapkan pelbagai syarat penapisan, ia meningkatkan kadar kejayaan perdagangan dengan berkesan. Di samping itu, reka bentuk stop loss dinamik juga menyediakan strategi dengan nisbah keuntungan risiko yang baik.

Kod sumber strategi
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Ichimoku Strategy with Optional RSI, MA Filters and Alerts", overlay=true)

// Input for date and time filter
startDate = input(timestamp("2020-01-01 00:00"), title="Start Date")
endDate = input(timestamp("2023-01-01 00:00"), title="End Date")

// Inputs for Ichimoku settings
tenkanPeriod = input.int(9, title="Tenkan Period")
kijunPeriod = input.int(26, title="Kijun Period")
senkouBPeriod = input.int(52, title="Senkou B Period")

// Inputs for Moving Average settings
useMAFilter = input.bool(true, title="Enable Moving Average Filter?")
ma50Period = input.int(50, title="50-day MA Period")
ma200Period = input.int(200, title="200-day MA Period")

// Inputs for RSI settings
useRSIFilter = input.bool(true, title="Enable RSI Filter?")
rsiPeriod = input.int(14, title="RSI Period")
rsiOverbought = input.int(70, title="RSI Overbought Level")
rsiOversold = input.int(30, title="RSI Oversold Level")

// Ichimoku Cloud components
tenkan = (ta.highest(high, tenkanPeriod) + ta.lowest(low, tenkanPeriod)) / 2
kijun = (ta.highest(high, kijunPeriod) + ta.lowest(low, kijunPeriod)) / 2
senkouA = ta.sma(tenkan + kijun, 2) / 2
senkouB = (ta.highest(high, senkouBPeriod) + ta.lowest(low, senkouBPeriod)) / 2
chikou = close[26]

// Moving Averages
ma50 = ta.sma(close, ma50Period)
ma200 = ta.sma(close, ma200Period)

// Weekly RSI
rsiSource = request.security(syminfo.tickerid, "W", ta.rsi(close, rsiPeriod))

// Plotting the Ichimoku Cloud components
pTenkan = plot(tenkan, color=color.blue, title="Tenkan")
pKijun = plot(kijun, color=color.red, title="Kijun")
pSenkouA = plot(senkouA, color=color.green, title="Senkou A")
pSenkouB = plot(senkouB, color=color.maroon, title="Senkou B")
plot(chikou, color=color.purple, title="Chikou")
plot(ma50, color=color.orange, title="50-day MA")
plot(ma200, color=color.yellow, title="200-day MA")

// Corrected fill function
fill(pSenkouA, pSenkouB, color=senkouA > senkouB ? color.green : color.red, transp=90)

// Debugging: Output values on the chart to see if conditions are ever met
plotshape(series=(tenkan > kijun), color=color.blue, style=shape.triangleup, title="Tenkan > Kijun")
plotshape(series=(tenkan < kijun), color=color.red, style=shape.triangledown, title="Tenkan < Kijun")
plotshape(series=(ma50 > ma200), color=color.orange, style=shape.labelup, title="MA 50 > MA 200")
plotshape(series=(ma50 < ma200), color=color.yellow, style=shape.labeldown, title="MA 50 < MA 200")

// Define the trailing stop loss using Kumo
var float trailingStopLoss = na

// Check for MA conditions (apply only if enabled)
maConditionLong = not useMAFilter or (useMAFilter and ma50 > ma200)
maConditionShort = not useMAFilter or (useMAFilter and ma50 < ma200)

// Check for Ichimoku Cloud conditions
ichimokuLongCondition = close > math.max(senkouA, senkouB)
ichimokuShortCondition = close < math.min(senkouA, senkouB)

// Check for RSI conditions (apply only if enabled)
rsiConditionLong = not useRSIFilter or (useRSIFilter and rsiSource > rsiOverbought)
rsiConditionShort = not useRSIFilter or (useRSIFilter and rsiSource < rsiOversold)

// Combine conditions for entry
longCondition = maConditionLong and tenkan > kijun and ichimokuLongCondition and rsiConditionLong
shortCondition = maConditionShort and tenkan < kijun and ichimokuShortCondition and rsiConditionShort

// Date and time filter
withinDateRange = true

// Check for Long Condition
if (longCondition and withinDateRange) 
    strategy.entry("Long", strategy.long)
    trailingStopLoss := math.min(senkouA, senkouB)
    alert("Buy Signal: Entering Long Position", alert.freq_once_per_bar_close)

// Check for Short Condition
if (shortCondition and withinDateRange) 
    strategy.entry("Short", strategy.short)
    trailingStopLoss := math.max(senkouA, senkouB)
    alert("Sell Signal: Entering Short Position", alert.freq_once_per_bar_close)

// Exit conditions
exitLongCondition = close < kijun or tenkan < kijun
exitShortCondition = close > kijun or tenkan > kijun

if (exitLongCondition and strategy.position_size > 0)
    strategy.close("Long")
    alert("Exit Signal: Closing Long Position", alert.freq_once_per_bar_close)

if (exitShortCondition and strategy.position_size < 0)
    strategy.close("Short")
    alert("Exit Signal: Closing Short Position", alert.freq_once_per_bar_close)

// Apply trailing stop loss
if (strategy.position_size > 0)
    strategy.exit("Trailing Stop Long", stop=trailingStopLoss)
else if (strategy.position_size < 0)
    strategy.exit("Trailing Stop Short", stop=trailingStopLoss)