Strategi Komponen SMA Silang

Penulis:ChaoZhang, Tarikh: 2024-04-01 11:11:02
Tag:

img

Ringkasan

Strategi ini adalah strategi panjang/pendek berdasarkan persilangan Purata Bergerak Sederhana (SMA). Ia menggunakan dua SMA dengan tempoh yang berbeza untuk menjana isyarat perdagangan. Apabila SMA pantas melintasi di atas SMA perlahan dari bawah, ia menghasilkan isyarat panjang; apabila SMA pantas melintasi di bawah SMA perlahan dari atas, ia menghasilkan isyarat pendek. Strategi ini menggabungkan konsep gabungan, menyesuaikan kedudukan secara dinamik berdasarkan saiz baki akaun semasa dan keuntungan kumulatif. Ini membolehkan baki akaun berkembang dari masa ke masa, meningkatkan keuntungan strategi.

Prinsip Strategi

Prinsip utama strategi ini adalah untuk menggunakan persilangan SMA untuk menjana isyarat perdagangan. SMA adalah penunjuk trend yang menentukan arah keseluruhan harga dengan rata-rata harga penutupan dalam tempoh tertentu. Dengan menggunakan dua SMA dengan tempoh yang berbeza, strategi dapat menangkap perubahan dalam trend pasaran. Apabila SMA cepat melintasi di atas SMA perlahan, ia menunjukkan bahawa trend menaik mungkin terbentuk, mendorong strategi untuk memasuki kedudukan yang panjang. Sebaliknya, apabila SMA cepat melintasi di bawah SMA perlahan, ia menunjukkan bahawa trend penurunan mungkin berkembang, menyebabkan strategi untuk memasuki kedudukan yang pendek.

Strategi ini menggunakan konsep kompaun untuk menguruskan saiz kedudukan. Ia mengira saiz kedudukan berdasarkan baki akaun semasa dan keuntungan kumulatif. Ini bermakna bahawa apabila baki akaun berkembang, strategi secara proporsional meningkatkan saiz kedudukan, memaksimumkan potensi keuntungan. Dengan menyesuaikan saiz kedudukan secara dinamik, strategi dapat memanfaatkan sepenuhnya kelebihan pertumbuhan akaun.

Kelebihan Strategi

  1. Kesederhanaan: Strategi ini berdasarkan crossover SMA, menjadikannya strategi trend yang mudah dan mudah diikuti. Ia tidak memerlukan masa pasaran yang kompleks atau penilaian subjektif, menjadikannya mudah dilaksanakan dan dikendalikan.

  2. Mengikuti trend: Dengan menggunakan persilangan SMA, strategi secara berkesan menangkap trend pasaran. Ia boleh terlibat dalam perdagangan panjang semasa trend menaik dan perdagangan pendek semasa trend menurun, memaksimumkan potensi keuntungan.

  3. Pengukuran Posisi Dinamik: Strategi ini menggunakan konsep gabungan untuk menguruskan saiz kedudukan. Dengan menyesuaikan saiz kedudukan secara dinamik berdasarkan baki akaun dan keuntungan kumulatif, strategi ini dapat memanfaatkan sepenuhnya manfaat pertumbuhan akaun, meningkatkan keuntungan.

  4. Kebolehsesuaian: Strategi ini boleh digunakan untuk pelbagai pasaran dan kelas aset, seperti saham, forex, komoditi, dll. Kesederhanaan dan kebolehsesuaian menjadikannya strategi perdagangan serba boleh.

Risiko Strategi

  1. Risiko Pasaran: Strategi bergantung pada kesinambungan trend pasaran. Ia mungkin mengalami kerugian semasa turun naik pasaran atau pembalikan trend. Kejadian yang tidak dijangka, pelepasan data ekonomi, dan faktor lain boleh menyebabkan perubahan tiba-tiba dalam arah pasaran, memberi kesan negatif kepada strategi.

  2. Risiko Parameter: Prestasi strategi bergantung pada pilihan tempoh SMA. Gabungan tempoh yang berbeza mungkin menghasilkan hasil yang berbeza. Pilihan parameter yang tidak betul boleh menyebabkan prestasi strategi yang tidak optimal atau peluang perdagangan yang hilang.

  3. Overtrading: Semasa keadaan pasaran yang tidak menentu, persilangan SMA yang kerap boleh menyebabkan overtrading, meningkatkan kos transaksi dan slippage, yang boleh memberi kesan kepada prestasi keseluruhan strategi.

  4. Risiko Kompaun: Walaupun kompaun boleh meningkatkan keuntungan strategi, ia juga meningkatkan risiko kerugian.

Arahan Pengoptimuman Strategi

  1. Pengoptimuman Parameter: Mengoptimumkan tempoh SMA untuk mencari kombinasi parameter optimum yang meningkatkan prestasi strategi. Menggunakan data sejarah untuk backtesting dan menggunakan algoritma pengoptimuman seperti carian grid atau algoritma genetik untuk mengenal pasti parameter terbaik.

  2. Pengurusan Risiko: Memperkenalkan langkah pengurusan risiko, seperti stop-loss dan mengambil keuntungan, untuk mengehadkan kerugian setiap perdagangan dan melindungi keuntungan.

  3. Pengesahan Trend: Sebagai tambahan kepada silang SMA, menggabungkan penunjuk pengesahan trend lain, seperti MACD atau ADX, untuk menapis isyarat palsu dan meningkatkan kualiti isyarat. Hanya melaksanakan perdagangan apabila beberapa penunjuk pada masa yang sama mengesahkan trend, meningkatkan kebolehpercayaan strategi.

  4. Pengoptimuman Saiz Posisi: Mengoptimumkan peraturan saiz kedudukan strategi kompaun dengan memperkenalkan langkah kawalan risiko untuk mengehadkan pendedahan risiko setiap perdagangan.

Kesimpulan

Strategi ini adalah strategi trend-mengikuti berdasarkan crossovers SMA, menggabungkan konsep gabungan untuk menguruskan saiz kedudukan. Kekuatannya terletak pada kesederhanaan, keupayaan trend-mengikuti, saiz kedudukan dinamik, dan daya adaptasi. Walau bagaimanapun, ia juga menghadapi cabaran seperti risiko pasaran, risiko parameter, overtrading, dan risiko gabungan. Untuk meningkatkan strategi, pertimbangkan pengoptimuman parameter, memperkenalkan langkah pengurusan risiko, pengesahan trend, dan mengoptimumkan peraturan saiz kedudukan. Dengan pengoptimuman dan penyempurnaan berterusan, strategi ini berpotensi untuk mencapai prestasi yang konsisten di pelbagai keadaan pasaran.


/*backtest
start: 2024-03-01 00:00:00
end: 2024-03-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Umesh SMA Crossover Strategy", overlay=true)

// Input parameters
fast_length = input.int(9, title="Fast SMA Length")
slow_length = input.int(21, title="Slow SMA Length")

// Calculate SMAs
fast_sma = ta.sma(close, fast_length)
slow_sma = ta.sma(close, slow_length)

// Plot SMAs
plot(fast_sma, color=color.blue, title="Fast SMA")
plot(slow_sma, color=color.red, title="Slow SMA")

// Strategy logic
longCondition = ta.crossover(fast_sma, slow_sma)
shortCondition = ta.crossunder(fast_sma, slow_sma)

// Initialize cumulative profit with netprofit
var float cumulative_profit = na
if (na(cumulative_profit))
    cumulative_profit := strategy.netprofit

// // Initialize starting balance
// var float starting_balance = na
// if (na(starting_balance))
//     starting_balance := strategy.equity

// Initialize starting balance
var float starting_balance = na
if (na(starting_balance))
    starting_balance := 100000.0 // Initial balance

// Calculate profit or gains
if (strategy.opentrades != 0)
    cumulative_profit := strategy.netprofit + (strategy.equity - starting_balance)

// Calculate position size based on current balance and cumulative profit
//position_size = 100000 
position_size = starting_balance + cumulative_profit

// Entry conditions
if (longCondition)
    strategy.entry("Long", strategy.long, qty = position_size / close)
if (shortCondition)
    strategy.entry("Short", strategy.short, qty = position_size / close)

// // Entry conditions
// if (longCondition)
//     strategy.entry("Long", strategy.long, qty = 100000 / close)
// if (shortCondition)
//     strategy.entry("Short", strategy.short, qty = 100000 / close)


// Plot strategy.equity 
plot(strategy.equity, color=color.green, title="Cumulative Profit")

// Print cumulative profit value on chart
label.new(x = bar_index, y = strategy.equity, text = str.tostring(strategy.equity), style=label.style_label_down, color=color.new(color.green, 0), size=size.small)
// Plot cumulative profit
plot(cumulative_profit, color=color.green, title="Cumulative Profit")

// Print cumulative profit value on chart
label.new(x = bar_index, y = cumulative_profit, text = str.tostring(cumulative_profit), style=label.style_label_down, color=color.new(color.green, 0), size=size.small)

// Plot cumulative profit
plot(position_size, color=color.green, title="Cumulative Profit")

// Print cumulative profit value on chart
label.new(x = bar_index, y = position_size, text = str.tostring(position_size), style=label.style_label_down, color=color.new(color.green, 0), size=size.small)


Lebih lanjut