Strategi ini digunakan untuk menentukan kapan tepat untuk membeli dan menjual dengan menghitung perubahan harga dalam jangka waktu tertentu. Strategi ini dapat membantu pedagang untuk menangkap peluang perubahan harga dalam jangka pendek.
Strategi ini didasarkan pada beberapa indikator:
Peraturan khusus untuk pembelian:
Peraturan khusus untuk menjual:
Ukuran pesanan diatur berdasarkan persentase dari total ekuitas (default 96%), yang dapat memberikan pengaruh.
Strategi ini memiliki beberapa keuntungan utama:
Secara keseluruhan, strategi ini memanfaatkan alat-alat seperti perubahan tingkat harga, indikator SMA, dan lain-lain untuk mendapatkan kinerja yang lebih baik dalam situasi yang bergejolak.
Strategi ini juga memiliki risiko sebagai berikut:
Tidak tepatnya pengaturan parameter tingkat perubahan dan SMA dapat menyebabkan kesalahan sinyal atau kesalahan. Parameter perlu disesuaikan untuk pasar yang berbeda.
Ukuran pesanan yang terlalu besar meningkatkan risiko. Disarankan untuk mengoptimalkan rasio pesanan pada tahap pengujian.
Tracking Stop Loss: Stop loss yang mungkin terlalu dini dalam situasi gempa. Anda dapat mempertimbangkan untuk menyesuaikan stop loss.
Strategi Transactionsstab dapat berjalan dan rentan terhadap arbitrage. Harus dikombinasikan dengan penilaian tren dan manajemen risiko stop loss.
Risiko pencocokan data. Strategi harus diuji coba beberapa kali di pasar yang berbeda.
Untuk risiko ini, risiko dapat dikendalikan dengan cara seperti optimasi parameter, penyesuaian pesanan, optimasi strategi stop loss, dan verifikasi di lapangan.
Strategi ini juga dapat dioptimalkan dengan:
Menambahkan penilaian indikator teknis lainnya, seperti volatilitas, volume transaksi, dan lain-lain, untuk meningkatkan akurasi sinyal.
Optimalkan jumlah transaksi, mengurangi dampak dari transaksi stab dengan mengurangi frekuensi transaksi.
Dengan strategi penembusan, sinyal penembusan diatur di dekat titik harga kunci.
Menggunakan metode pembelajaran mesin untuk mengoptimalkan pengaturan parameter secara otomatis.
Strategi pengujian untuk meningkatkan ketahanan dan adaptasi di berbagai pasar dan dalam jangka waktu yang lama.
Pertimbangkan karakteristik dari berbagai jenis seperti saham, valuta asing, dan lain-lain, dan atur kombinasi parameter khusus.
Sinyal strategi dan metode pengendalian risiko yang terus-menerus dioptimalkan berdasarkan hasil real-time.
Strategi ini mencari peluang perdagangan dalam fluktuasi harga garis pendek dengan menilai tingkat perubahan dan indikator SMA. Ini membantu untuk menangkap tren cepat, tetapi juga perlu memperhatikan kontrol risiko. Ketahanan dan fleksibilitas strategi dapat terus ditingkatkan melalui optimasi parameter, penyesuaian pesanan, perbaikan strategi stop loss, dan verifikasi saham. Strategi ini memberikan template referensi untuk perdagangan kuantitatif, tetapi dalam penerapan praktis, perlu dilakukan penyesuaian dan pengoptimalan sesuai dengan karakteristik pasar.
/*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)