Strategi Perdagangan Tingkat Perubahan

Penulis:ChaoZhang, Tanggal: 2023-09-28 11:26:44
Tag:

Gambaran umum

Strategi ini menghitung tingkat perubahan dari waktu ke waktu untuk menentukan sinyal beli/jual. Ini dapat membantu pedagang menangkap peluang dalam fluktuasi harga jangka pendek.

Logika Strategi

Strategi ini terutama didasarkan pada indikator berikut:

  1. Fast Simple Moving Average (default 14 hari): untuk mengukur tren jangka pendek
  2. Slow Simple Moving Average (default 100 hari): untuk mengukur tren jangka panjang
  3. Referensi Simple Moving Average (default 30 hari): untuk menentukan arah keseluruhan
  4. Tingkat Perubahan: Dihitung berdasarkan harga tertinggi/terendah selama periode reviewback (default 12 bar) untuk menilai besarnya fluktuasi harga

Aturan khusus masuk:

  1. Harga di bawah SMA referensi
  2. ROC di atas ambang ROC rendah yang ditetapkan sebelumnya (default 2,3%)
  3. SMA yang cepat naik dan SMA yang lambat turun, menunjukkan potensi crossover

Aturan khusus untuk keluar:

  1. Harga di atas SMA referensi
  2. ROC di atas ambang ROC tinggi yang telah ditetapkan sebelumnya (default 4,7%)
  3. 3 batang naik berturut-turut
  4. Keuntungan saat ini > 0
  5. SMA cepat di atas SMA lambat

Ukuran posisi adalah persentase (default 96%) dari total ekuitas untuk leverage.

Analisis Keuntungan

Strategi ini memiliki keuntungan berikut:

  1. Menggunakan ROC untuk mendeteksi perubahan memungkinkan menangkap pergerakan naik/turun untuk pengembalian yang lebih tinggi.

  2. Menggabungkan SMA cepat/lambat membantu mengidentifikasi titik rendah/tinggi dengan lebih akurat.

  3. SMA referensi memberikan arah keseluruhan untuk menghindari gangguan dari kebisingan jangka pendek.

  4. Mengikuti stop loss mengunci keuntungan dan mengurangi risiko penurunan.

  5. Leverage dari ukuran posisi memperkuat keuntungan.

Secara keseluruhan, strategi ini memanfaatkan ROC, SMA dan alat lain secara efektif untuk memanfaatkan osilasi harga.

Analisis Risiko

Strategi ini juga memiliki risiko berikut:

  1. Parameter ROC dan SMA yang salah dapat menyebabkan sinyal yang terlewatkan atau perdagangan yang buruk. Optimasi diperlukan untuk berbagai pasar.

  2. Ukuran posisi yang berlebihan meningkatkan risiko. persentase pesanan harus diuji dan disesuaikan.

  3. Stop loss trailing dapat keluar lebih awal di pasar yang bergolak.

  4. Kemungkinan fluktuasi di berbagai pasar. harus menggabungkan filter tren dan manajemen risiko.

  5. Kemampuan harus diverifikasi melalui perdagangan langsung di seluruh pasar.

Risiko dapat dikelola melalui optimasi parameter, ukuran posisi, penyesuaian stop loss, pengujian ketahanan dll.

Arahan Optimasi

Strategi ini dapat ditingkatkan dalam hal berikut:

  1. Tambahkan indikator teknis lainnya seperti volatilitas, volume untuk meningkatkan akurasi sinyal.

  2. Mengoptimalkan jumlah perdagangan dengan mengurangi frekuensi perdagangan untuk meminimalkan dampak whipsaw.

  3. Masukkan teknik breakout di sekitar tingkat harga kunci.

  4. Gunakan pembelajaran mesin untuk mengoptimalkan parameter secara otomatis.

  5. Uji ketahanan di pasar dan kerangka waktu yang berbeda.

  6. Tune parameter khusus untuk produk yang berbeda seperti saham, forex dll

  7. Terus memperbaiki sinyal dan pengendalian risiko berdasarkan hasil langsung.

Ringkasan

Strategi ini mengidentifikasi peluang perdagangan di sekitar osilasi jangka pendek menggunakan analisis ROC dan SMA. Ini membantu memanfaatkan perubahan yang cepat tetapi juga membutuhkan kontrol risiko yang tepat. Parameter penyesuaian halus, ukuran posisi, stop loss dan pengujian ketahanan dapat meningkatkan stabilitas dan daya adaptasi. Strategi ini berfungsi sebagai templat referensi untuk perdagangan yang dikuantifikasi tetapi perlu disesuaikan untuk pasar yang berbeda.


/*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)

Lebih banyak