
Strategi ini adalah strategi multihead / kosong berdasarkan simpulan purata bergerak ((SMA)). Ia menggunakan dua kitaran SMA yang berbeza untuk menghasilkan isyarat perdagangan. Apabila SMA cepat melintasi SMA perlahan dari arah bawah, ia menghasilkan isyarat multihead; apabila SMA cepat melintasi SMA perlahan dari arah atas, ia menghasilkan isyarat kosong.
Prinsip teras strategi ini adalah menggunakan penyambungan SMA untuk menghasilkan isyarat perdagangan. SMA adalah penunjuk pengesanan trend untuk menentukan arah harga secara keseluruhan dengan mengambil purata harga penutupan dalam jangka masa yang lalu. Dengan menggunakan dua kitaran SMA yang berbeza, strategi dapat menangkap perubahan trend pasaran.
Strategi menggunakan konsep keuntungan semula untuk menguruskan saiz kedudukan. Ia mengira saiz kedudukan berdasarkan baki akaun semasa dan keuntungan terkumpul. Ini bermakna bahawa dengan pertumbuhan baki akaun, strategi akan meningkatkan saiz kedudukan dengan sewajarnya, sehingga memaksimumkan potensi keuntungan. Dengan menyesuaikan saiz kedudukan secara dinamik, strategi dapat memanfaatkan sepenuhnya pertumbuhan akaun.
Mudah difahami: Strategi ini adalah strategi pemantauan trend yang mudah difahami berdasarkan SMA crossover. Ia tidak memerlukan pengendalian masa pasaran yang rumit atau penilaian subjektif, menjadikan strategi ini mudah dilaksanakan dan dikendalikan.
Pengesanan Trend: Dengan menggunakan persilangan SMA, strategi ini dapat menangkap trend pasaran dengan berkesan. Ia boleh melakukan perdagangan berganda dalam trend naik, perdagangan kosong dalam trend turun, dan dengan itu memaksimumkan potensi keuntungan.
Pengurusan kedudukan dinamik: Strategi menggunakan konsep keuntungan semula untuk menguruskan saiz kedudukan. Dengan menyesuaikan saiz kedudukan mengikut baki akaun dan pertumbuhan keuntungan akumulasi, strategi dapat memanfaatkan sepenuhnya kelebihan pertumbuhan akaun dan meningkatkan keuntungan.
Adaptif: Strategi ini boleh digunakan dalam pelbagai pasaran dan kelas aset, seperti saham, mata wang asing, komoditi, dan lain-lain. Kesederhanaan dan fleksibiliti menjadikannya sebagai strategi perdagangan umum.
Risiko pasaran: Strategi ini bergantung kepada kesinambungan trend pasaran. Dalam kes turun naik pasaran atau trend berbalik, strategi mungkin mengalami kerugian.
Risiko parameter: prestasi strategi bergantung kepada pilihan kitaran SMA. Kombinasi kitaran yang berbeza mungkin menghasilkan hasil yang berbeza. Pilihan parameter yang tidak betul boleh menyebabkan prestasi strategi yang kurang baik atau kehilangan peluang perdagangan.
Overtrading: Semasa turun naik pasaran, persilangan SMA yang kerap boleh menyebabkan overtrading, meningkatkan kos perdagangan dan titik slippage, yang mempengaruhi prestasi keseluruhan strategi.
Risiko rebound: Walaupun rebound dapat meningkatkan keuntungan strategi, ia juga meningkatkan risiko kerugian. Dalam kes kerugian berturut-turut, baki akaun mungkin berkurangan dengan cepat, sehingga mengehadkan keupayaan strategi untuk pulih.
Pengoptimuman parameter: mengoptimumkan kitaran SMA untuk mencari kombinasi parameter yang optimum untuk meningkatkan prestasi strategi. Anda boleh menggunakan data sejarah untuk melakukan pengesanan semula dan menggunakan algoritma pengoptimuman seperti carian grid atau algoritma genetik untuk mencari parameter yang optimum.
Pengurusan risiko: Memperkenalkan langkah-langkah pengurusan risiko, seperti hentian dan hentian, untuk mengehadkan kerugian dalam satu perdagangan dan melindungi keuntungan. Tahap hentian dan hentian boleh disesuaikan dengan dinamik pasaran yang tidak menentu untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.
Penapisan trend: Selain daripada penyambungan SMA, pengenalan penunjuk pengesahan trend lain, seperti MACD atau ADX, untuk menapis isyarat palsu dan meningkatkan kualiti isyarat. Perdagangan hanya dilakukan apabila beberapa penunjuk mengesahkan trend pada masa yang sama, untuk meningkatkan kebolehpercayaan strategi.
Pengendalian kedudukan yang dioptimumkan: peraturan pengurusan kedudukan yang mengoptimumkan strategi keuntungan, seperti memperkenalkan langkah-langkah kawalan risiko, mengehadkan had risiko perdagangan tunggal. Anda boleh mempertimbangkan untuk menggunakan formula Kelly atau peratusan risiko tetap untuk menentukan saiz kedudukan setiap perdagangan, untuk mengimbangi risiko dan pulangan.
Strategi ini adalah strategi pemantauan trend berasaskan silang SMA, menggunakan konsep keuntungan untuk menguruskan saiz kedudukan. Kelebihannya adalah mudah dan mudah difahami, keupayaan pemantauan trend yang kuat, pengurusan kedudukan yang dinamik dan adaptasi yang kuat. Walau bagaimanapun, ia juga menghadapi cabaran seperti risiko pasaran, risiko parameter, risiko perdagangan berlebihan dan risiko keuntungan.
/*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)