
Strategi ini adalah sistem perdagangan mengikut aliran yang menggabungkan isyarat persilangan purata bergerak dengan pengurusan risiko ATR. Strategi ini menangkap arah aliran pasaran melalui persilangan purata pergerakan pantas dan perlahan, dan menggunakan penunjuk ATR untuk melaraskan tahap stop loss dan keuntungan secara dinamik untuk mencapai kawalan tepat terhadap risiko dagangan. Strategi ini juga termasuk modul pengurusan wang yang melaraskan saiz kedudukan secara automatik berdasarkan ekuiti akaun dan parameter risiko yang telah ditetapkan.
Logik teras strategi adalah berdasarkan komponen utama berikut:
Strategi ini menangkap arah aliran melalui pindah silang purata bergerak dan menggabungkannya dengan kawalan risiko dinamik ATR untuk mencapai sistem perdagangan penjejakan arah aliran yang lengkap. Kekuatan strategi terletak pada kebolehsuaian dan keupayaan kawalan risiko, tetapi ia mungkin berprestasi buruk dalam pasaran yang tidak menentu. Prestasi keseluruhan strategi boleh dipertingkatkan dengan menambah penapis arah aliran dan mengoptimumkan sistem pengurusan wang.
/*backtest
start: 2024-12-06 00:00:00
end: 2025-01-04 08:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © davisash666
//@version=5
strategy("Trend-Following Strategy", overlay=true)
// Inputs for strategy parameters
timeframe = input.timeframe("D", "Timeframe")
risk_tolerance = input.float(2.0, "Risk Tolerance (%)", step=0.1) / 100
capital_allocation = input.float(200, "Capital Allocation (%)", step=1) / 100
// Technical indicators (used to emulate machine learning)
ma_length_fast = input.int(10, "Fast MA Length")
ma_length_slow = input.int(50, "Slow MA Length")
atr_length = input.int(14, "ATR Length")
atr_multiplier = input.float(1.5, "ATR Multiplier")
// Calculations
fast_ma = ta.sma(close, ma_length_fast)
slow_ma = ta.sma(close, ma_length_slow)
atr = ta.atr(atr_length)
// Entry and exit conditions
long_condition = ta.crossover(fast_ma, slow_ma)
short_condition = ta.crossunder(fast_ma, slow_ma)
// Risk management
stop_loss_long = close - (atr * atr_multiplier)
stop_loss_short = close + (atr * atr_multiplier)
take_profit_long = close + (atr * atr_multiplier)
take_profit_short = close - (atr * atr_multiplier)
// Capital allocation
position_size = strategy.equity * capital_allocation
// Execute trades
if long_condition
strategy.entry("Long", strategy.long, qty=position_size / close)
strategy.exit("Take Profit/Stop Loss", "Long", stop=stop_loss_long, limit=take_profit_long)
if short_condition
strategy.entry("Short", strategy.short, qty=position_size / close)
strategy.exit("Take Profit/Stop Loss", "Short", stop=stop_loss_short, limit=take_profit_short)
// Plotting for visualization
plot(fast_ma, color=color.green, title="Fast MA")
plot(slow_ma, color=color.red, title="Slow MA")
plot(stop_loss_long, color=color.blue, title="Stop Loss (Long)", linewidth=1, style=plot.style_cross)
plot(take_profit_long, color=color.purple, title="Take Profit (Long)", linewidth=1, style=plot.style_cross)