
Strategi ini adalah sistem perdagangan kuantitatif berdasarkan isyarat silang dua garis sejajar, untuk mengenal pasti perubahan trend pasaran melalui persilangan rata-rata bergerak jangka pendek dan jangka panjang, dan untuk mengawal risiko dalam kombinasi dengan pengurusan hentian hentian yang dinamik. Strategi ini menggunakan satuan harga pasaran untuk berdagang, secara automatik melonggarkan kedudukan sedia ada dan membuka kedudukan baru apabila isyarat dicetuskan, untuk melindungi keselamatan modal dengan menetapkan titik hentian hentian.
Strategi menggunakan purata bergerak sederhana ((SMA) dari dua kitaran yang berbeza sebagai asas utama isyarat perdagangan. Apabila garis purata jangka pendek melintasi garis purata jangka panjang, sistem menghasilkan banyak isyarat; Apabila garis purata jangka pendek melintasi garis purata jangka panjang, sistem menghasilkan isyarat penyingkiran.
Ini adalah strategi perdagangan kuantitatif yang tersusun dengan struktur yang lengkap dan logik yang jelas. Strategi ini menangkap perubahan trend dengan penyeberangan dua garis sejajar, dengan pengendalian risiko stop loss yang dinamik. Kelebihan strategi ini adalah tahap sistematisasi yang tinggi, risiko dapat dikawal, tetapi masih perlu berhati-hati untuk menangani pelbagai jenis risiko pasaran di pasaran. Dengan pengoptimuman dan penyempurnaan yang berterusan, strategi ini dijangka dapat mengekalkan prestasi yang stabil dalam keadaan pasaran yang berbeza.
/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("BTCUSD Daily Strategy - Market Orders Only", overlay=true, initial_capital=10000, currency=currency.USD)
// Configurable Inputs
stop_loss_percent = input.float(title="Stop Loss (%)", defval=1.0, minval=0.0, step=0.1)
take_profit_percent = input.float(title="Take Profit (%)", defval=2.0, minval=0.0, step=0.1)
short_ma_length = input.int(title="Short MA Length", defval=9, minval=1)
long_ma_length = input.int(title="Long MA Length", defval=21, minval=1)
// Moving Averages
short_ma = ta.sma(close, short_ma_length)
long_ma = ta.sma(close, long_ma_length)
// Plotting Moving Averages
plot(short_ma, color=color.blue, title="Short MA")
plot(long_ma, color=color.red, title="Long MA")
// Buy and Sell Signals
buy_signal = ta.crossover(short_ma, long_ma)
sell_signal = ta.crossunder(short_ma, long_ma)
// Market Buy Logic
if (buy_signal and strategy.position_size <= 0)
// Close any existing short position
if (strategy.position_size < 0)
strategy.close(id="Market Sell")
// Calculate Stop Loss and Take Profit Prices
entry_price = close
long_stop = entry_price * (1 - stop_loss_percent / 100)
long_take_profit = entry_price * (1 + take_profit_percent / 100)
// Enter Long Position
strategy.entry(id="Market Buy", direction=strategy.long)
strategy.exit(id="Exit Long", from_entry="Market Buy", stop=long_stop, limit=long_take_profit)
// Alert for Market Buy
alert("Market Buy Signal at price " + str.tostring(close) + ". Stop Loss: " + str.tostring(long_stop) + ", Take Profit: " + str.tostring(long_take_profit), alert.freq_once_per_bar_close)
// Market Sell Logic
if (sell_signal and strategy.position_size >= 0)
// Close any existing long position
if (strategy.position_size > 0)
strategy.close(id="Market Buy")
// Calculate Stop Loss and Take Profit Prices
entry_price = close
short_stop = entry_price * (1 + stop_loss_percent / 100)
short_take_profit = entry_price * (1 - take_profit_percent / 100)
// Enter Short Position
strategy.entry(id="Market Sell", direction=strategy.short)
strategy.exit(id="Exit Short", from_entry="Market Sell", stop=short_stop, limit=short_take_profit)
// Alert for Market Sell
alert("Market Sell Signal at price " + str.tostring(close) + ". Stop Loss: " + str.tostring(short_stop) + ", Take Profit: " + str.tostring(short_take_profit), alert.freq_once_per_bar_close)