Golden Cross Keltner Channel Trend Mengikuti Strategi

Penulis:ChaoZhang, Tarikh: 2023-11-02 14:31:10
Tag:

img

Ringkasan

Golden Cross Keltner Channel Trend Following Strategy adalah strategi yang hanya berdagang ke arah trend. Ia menggabungkan golden cross dan Keltner Channel sebagai isyarat masuk untuk menangkap arah trend.

Prinsip

Strategi ini menggunakan dua purata bergerak, purata bergerak jangka pendek dan jangka panjang, untuk membentuk salib emas dan salib kematian untuk menentukan arah trend. Pada masa yang sama, ia menggunakan kelipatan yang ditakrifkan pengguna untuk merangka rel atas dan bawah Saluran Keltner dan menghasilkan isyarat perdagangan apabila harga menembusi saluran.

Secara khusus, strategi ini terlebih dahulu memeriksa sama ada purata bergerak jangka panjang berada di atas purata bergerak jangka pendek, yang menunjukkan salib emas dan trend menaik.

Berdasarkan penentuan trend, jika harga memecahkan di atas rel atas, isyarat panjang dihasilkan. Jika harga memecahkan di bawah rel bawah, isyarat pendek dihasilkan. Pengguna boleh menyesuaikan tempoh MA dan lebar saluran untuk menyesuaikan parameter strategi.

Selepas masuk, strategi ini menggunakan kelipatan ATR yang ditakrifkan pengguna untuk mengambil keuntungan dan hentian kerugian. Ia juga menyediakan syarat-syarat pembiakan dan hentian kerugian tambahan untuk kawalan kedudukan yang lebih fleksibel.

Analisis Kelebihan

Strategi ini menggabungkan kelebihan trend berikut dan saluran pecah, membolehkan pengenalan trend yang berkesan dan peluang menangkap.

  1. Salib emas menapis isyarat palsu yang tidak sejajar dengan trend utama.

  2. Penembusan saluran dengan arah trend meningkatkan ketepatan kemasukan.

  3. Ambil keuntungan dan hentikan kerugian mengekalkan keuntungan dan mengawal risiko.

  4. Penyesuaian parameter yang fleksibel sesuai dengan produk dan persekitaran yang berbeza.

  5. Berjalan panjang dan pendek, memperluaskan penerapan.

Analisis Risiko

Walaupun terdapat kelebihan, beberapa risiko memerlukan perhatian:

  1. Melewatkan peluang untuk membalikkan.

  2. Perubahan trend boleh membawa kepada kerugian.

  3. Parameter yang tidak betul boleh menyebabkan perdagangan berlebihan atau perdagangan jarang.

  4. Risiko berlaku dalam semalam.

  5. Risiko pemasangan lengkung.

Penyelesaian termasuk pengoptimuman parameter, pelarasan tempoh MA tepat pada masanya, dan kawalan saiz kedudukan.

Arahan pengoptimuman

Terdapat ruang untuk penambahbaikan lanjut:

  1. Menambah lebih banyak penunjuk untuk membina model pelbagai faktor dan meningkatkan ketepatan.

  2. Pengoptimuman parameter melalui pembelajaran mesin untuk kesesuaian pasaran.

  3. Peraturan mengambil keuntungan dan berhenti rugi yang dinamik untuk menyeimbangkan keuntungan dan ganjaran.

  4. Pengukuran kedudukan dinamik berdasarkan turun naik.

  5. Penyelidikan parameter optimum untuk produk yang berbeza.

  6. Kurangkan kekerapan perdagangan untuk meminimumkan yuran.

Kesimpulan

Golden Cross Keltner Channel Trend Following Strategy umumnya merupakan sistem trend berikut yang stabil dan boleh dipercayai. Dengan menggabungkan penapisan trend dan penembusan saluran, ia mengenal pasti peluang kebarangkalian tinggi yang sejajar dengan arah trend. Pengoptimuman dan penambahbaikan lanjut boleh menjadikannya kerangka perdagangan yang kukuh.


/*backtest
start: 2022-10-26 00:00:00
end: 2023-11-01 00:00:00
period: 1d
basePeriod: 1h
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/
// © OversoldPOS

//@version=5
// strategy("Keltner Channel Strategy by OversoldPOS", overlay=true,initial_capital = 100000,default_qty_type = strategy.percent_of_equity,default_qty_value = 10, commission_type = strategy.commission.cash_per_order, commission_value = 7)

// Parameters
length = input(21, title="MA Length")
Entrymult = input(1, title="Entry ATR")
profit_mult = input(4, title="Profit Taker")
exit_mult = input(-1, title="Exit ATR")

// Moving Average Type Input
ma_type = input.string("SMA", title="Moving Average Type", options=["SMA", "EMA", "WMA"])

// Calculate Keltner Channels for different ATR multiples
atr_value = ta.atr(length)

basis = switch ma_type
    "SMA" => ta.sma(close, length)
    "EMA" => ta.ema(close, length)
    "WMA" => ta.wma(close, length)
 

//
EntryKeltLong = basis + Entrymult * ta.atr(10)
EntryKeltShort = basis - Entrymult * ta.atr(10)
upper_channel1 = basis + 1 * ta.atr(10)
lower_channel1 = basis - 1 * ta.atr(10)
upper_channel2 = basis + 2 * ta.atr(10)
lower_channel2 = basis - 2 * ta.atr(10)
upper_channel3 = basis + 3 * ta.atr(10)
lower_channel3 = basis - 3 * ta.atr(10)
upper_channel4 = basis + 4 * ta.atr(10)
lower_channel4 = basis - 4 * ta.atr(10)

// Entry condition parameters
long_entry_condition = input(true, title="Long Positions")
short_entry_condition = input(true, title="Enable Short Positions")

// Additional conditions for long and short entries
is_long_entry = ta.ema(close, 20) > ta.ema(close, 50)
is_short_entry = ta.ema(close, 20) < ta.ema(close, 50)

// Additional conditions for long and short entries
MAShort =  input(50, title="Short MA for Golden Cross")
MALong =  input(200, title="Long MA for Golden Cross")
is_long_entry2 = ta.ema(close, MAShort) > ta.ema(close, MALong)
is_short_entry2 = ta.ema(close, MAShort) < ta.ema(close, MALong)

// Exit condition parameters
long_exit_condition1_enabled = input(true, title="Enable Long Profit Taker")
long_exit_condition2_enabled = input(true, title="Enable Long Stop")
short_exit_condition1_enabled = input(true, title="Enable Short Profit Taker")
short_exit_condition2_enabled = input(true, title="Enable Short Stop")

// Take Profit condition parameters
take_profit_enabled = input(true, title="Enable Take Profit Condition")

Takeprofit = basis + profit_mult * atr_value
STakeprofit = basis - profit_mult * atr_value

// Long entry condition
long_condition = long_entry_condition and ta.crossover(close, EntryKeltLong) and is_long_entry2

// Short entry condition
short_condition = short_entry_condition and ta.crossunder(close, EntryKeltShort) and is_short_entry2

// Exit conditions
long_exit_condition1 = long_exit_condition1_enabled and close > Takeprofit
long_exit_condition2 = long_exit_condition2_enabled and close < basis + exit_mult * atr_value
short_exit_condition1 = short_exit_condition1_enabled and close < STakeprofit
short_exit_condition2 = short_exit_condition2_enabled and close > basis - exit_mult * atr_value

// Strategy logic
if (long_condition)
    strategy.entry("Long", strategy.long)
if (short_condition)
    strategy.entry("Short", strategy.short)

if (long_exit_condition1 or long_exit_condition2)
    strategy.close("Long")

if (short_exit_condition1 or short_exit_condition2)
    strategy.close("Short")

// Moving Averages
var float MA1 = na
var float MA2 = na

if (ma_type == "SMA")
    MA1 := ta.sma(close, MAShort)
    MA2 := ta.sma(close, MALong)
else if (ma_type == "EMA")
    MA1 := ta.ema(close, MAShort)
    MA2 := ta.ema(close, MALong)
else if (ma_type == "WMA")
    MA1 := ta.wma(close, MAShort)
    MA2 := ta.wma(close, MALong)

// Plotting Keltner Channels with adjusted transparency
transparentColor = color.rgb(255, 255, 255, 56)

plot(upper_channel1, color=transparentColor, title="Upper Channel 1")
plot(lower_channel1, color=transparentColor, title="Lower Channel 1")
plot(upper_channel2, color=transparentColor, title="Upper Channel 2")
plot(lower_channel2, color=transparentColor, title="Lower Channel 2")
plot(upper_channel3, color=transparentColor, title="Upper Channel 3")
plot(lower_channel3, color=transparentColor, title="Lower Channel 3")
plot(upper_channel4, color=transparentColor, title="Upper Channel 4")
plot(lower_channel4, color=transparentColor, title="Lower Channel 4")
plot(basis, color=color.white, title="Basis")
plot(MA1, color=color.rgb(4, 248, 216), linewidth=2, title="Middle MA")
plot(MA2, color=color.rgb(220, 7, 248), linewidth=2, title="Long MA")


Lebih lanjut