Strategi ini mengira kadar perubahan dari masa ke masa untuk menentukan isyarat beli / jual. Ia boleh membantu peniaga menangkap peluang dalam turun naik harga jangka pendek.
Strategi ini terutamanya berdasarkan kepada penunjuk berikut:
Peraturan kemasukan khusus:
Peraturan keluar khusus:
Ukuran kedudukan adalah peratusan (default 96%) daripada jumlah ekuiti untuk leverage.
Strategi ini mempunyai kelebihan berikut:
Menggunakan ROC untuk mengesan perubahan membolehkan menangkap pergerakan menaik / menurun untuk pulangan yang lebih tinggi.
Menggabungkan SMA pantas / perlahan membantu mengenal pasti titik rendah / tinggi dengan lebih tepat.
SMA rujukan memberikan arah keseluruhan untuk mengelakkan gangguan oleh bunyi jangka pendek.
Mengikuti stop loss mengunci keuntungan dan mengurangkan risiko penurunan.
Leverage dari saiz kedudukan memperkuat keuntungan.
Secara keseluruhan, strategi ini menggunakan ROC, SMA dan alat lain dengan berkesan untuk memanfaatkan turun naik harga.
Strategi ini juga mempunyai risiko berikut:
Parameter ROC dan SMA yang tidak betul boleh menyebabkan isyarat yang terlepas atau perdagangan yang buruk.
Ukuran kedudukan yang berlebihan meningkatkan risiko. Peratusan pesanan perlu diuji dan disesuaikan.
Peratusan stop loss boleh diselaraskan.
Cenderung kepada whipsaws di pasaran yang berbeza.
Backtest risiko overfit. Kekuatan harus disahkan melalui perdagangan langsung di seluruh pasaran.
Risiko boleh dikendalikan melalui pengoptimuman parameter, saiz kedudukan, pelarasan stop loss, ujian ketahanan dan lain-lain.
Strategi ini boleh ditingkatkan dalam aspek berikut:
Tambahkan penunjuk teknikal lain seperti turun naik, jumlah untuk meningkatkan ketepatan isyarat.
Mengoptimumkan bilangan perdagangan dengan mengurangkan kekerapan perdagangan untuk meminimumkan kesan whipsaw.
Menggabungkan teknik pecah di sekitar tahap harga utama.
Gunakan pembelajaran mesin untuk mengoptimumkan parameter.
Uji ketahanan di pasaran dan jangka masa yang berbeza.
Tune parameter khusus untuk produk yang berbeza seperti saham, forex dll
Sentiasa memperbaiki isyarat dan kawalan risiko berdasarkan hasil langsung.
Strategi ini mengenal pasti peluang dagangan di sekitar goyangan jangka pendek menggunakan analisis ROC dan SMA. Ia membantu memanfaatkan perubahan cepat tetapi juga memerlukan kawalan risiko yang betul. Parameter penyesuaian halus, ukuran kedudukan, stop loss dan ujian ketahanan dapat meningkatkan kestabilan dan daya adaptasi. Strategi ini berfungsi sebagai templat rujukan untuk perdagangan berjumlah tetapi memerlukan penyesuaian untuk pasaran yang berbeza.
/*backtest start: 2022-09-21 00:00:00 end: 2023-09-27 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // @version=4 // Author: Sonny Parlin (highschool dropout) // Best if run on 5m timeframe strategy(shorttitle="ROC+Strategy", title="Rate of Change Strategy", overlay=true, currency=currency.USD, initial_capital=10000) // Inputs and variables ss = input(14, minval=10, maxval=50, title="SMA Fast (days)") ff = input(100, minval=55, maxval=200, title="SMA Slow (days)") ref = input(30, minval=20, maxval=50, title="SMA Reference (days)") lowOffset = input(0.023, "ROC Low (%)", minval=0, step=0.01) highOffset = input(0.047, "ROC High (%)", minval=0, step=0.01) orderStake = input(0.96, "Order Stake (%)", minval=0, step=0.01) lookback = input(12, "Lookback Candles", minval=1, step=1) // SMA smaFast = sma(close, ss) smaSlow = sma(close, ff) smaRef = sma(close, ref) ROC = (max(close[lookback],close) - min(close[lookback],close)) / max(close[lookback],close) // Set up SMA plot but don't show by default plot(smaFast, "smaFast", color=#00ff00, display = 0) plot(smaSlow, "smaSlow", color=#ff0000, display = 0) plot(smaRef, "smaRef", color=#ffffff, display = 0) // The buy stratey: // Guard that the low is under our SMA Reference line // Guard that the rate of change over the lookback period is greater than our // ROC lowOffset %, default is 0.023. (low < smaRef) and (ROC > lowOffset) // SMA fast is on the rise and SMA slow is falling and they are very likely // to cross. (rising(smaFast,1)) and (falling(smaSlow, 1)) enterLong = (low < smaRef) and (ROC > lowOffset) and (rising(smaFast,1)) and (falling(smaSlow,1)) // The sell Strategy: // Guard that close is higher than our SMA reference line and that the rate of // change over the lookback period is greater than our highOffset %, default // is 0.047. (close > smaRef) and (ROC > highOffset) // Guard that close has risen by 3 candles in a row (rising(close,3)) // Guard that we currently have profit (strategy.openprofit > 0) // Guard that SMA fast is higher than smaSlow (smaFast > smaSlow) // If it keeps going up past our close position the trailing stoploss will kick in! enterShort = (close > smaRef) and (ROC > highOffset) and (rising(close,3)) and (strategy.openprofit > 0) and (smaFast > smaSlow) // Order size is based on total equity // Example 1: // startingEquity = 2000 // close = 47434.93 // orderStake = 0.45 // (2,000 × orderStake) / close = orderSize = 0.0189733599 = approx $900 // Example 2: // startingEquity = 2000 // close = 1.272 // orderStake = 0.45 // (startingEquity × orderStake) / close = orderSize = 707.5471698113 = approx $900 orderSize = (strategy.equity * orderStake) / close // Trailing Stoploss // I'm using 2.62 as my default value, play with this for different results. longTrailPerc = input(title="Trailing Stoploss (%)", type=input.float, minval=0.0, step=0.1, defval=3.62) * 0.01 longStopPrice = 0.0 longStopPrice := if (strategy.position_size > 0) stopValue = close * (1 - longTrailPerc) max(stopValue, longStopPrice[1]) else 0 if (enterLong) strategy.entry("Open Long Position", strategy.long, orderSize, when=strategy.position_size <= 0) if (enterShort) strategy.exit(id="Close Long Position", stop=longStopPrice) //plot(strategy.equity)