Strategi Perdagangan Berdasarkan Kadar Perubahan


Tarikh penciptaan: 2023-09-28 11:26:44 Akhirnya diubah suai: 2023-09-28 11:26:44
Salin: 1 Bilangan klik: 642
1
fokus pada
1617
Pengikut

Gambaran keseluruhan

Strategi ini membantu peniaga untuk menangkap peluang perubahan harga jangka pendek dengan mengira kadar perubahan dalam jangka masa tertentu untuk menentukan masa pembelian dan penjualan.

Prinsip Strategi

Strategi ini adalah berdasarkan kepada beberapa petunjuk berikut:

  1. Rata-rata Pergerakan Cepat dan Mudah ((14 hari default): trend jangka pendek yang digunakan untuk menilai harga
  2. Rata-rata Pergerakan Rendah ((100 hari lalai): digunakan untuk menilai trend jangka panjang harga
  3. Reference Simple Moving Average ((default 30 hari): digunakan untuk menentukan arah besar pembelian dan penjualan
  4. Kadar perubahan: mengukur kadar pergerakan harga dengan mengira perubahan harga tertinggi dan terendah dalam tempoh tertentu yang lalu (dengan 12 garis K default)

Peraturan pembelian:

  1. Harga lebih rendah daripada purata bergerak mudah rujukan
  2. Kadar perubahan lebih tinggi daripada nilai perubahan rendah yang ditetapkan (default 2.3%)
  3. SMA pantas naik dan SMA perlahan turun, menunjukkan bahawa kedua-dua kurva mungkin bersilang

Peraturan jualan khusus:

  1. Harga lebih tinggi daripada purata bergerak mudah rujukan
  2. Kadar perubahan lebih tinggi daripada nilai perubahan tinggi yang ditetapkan (default 4.7%)
  3. Harga naik tiga kali berturut-turut
  4. Keuntungan semasa
  5. SMA pantas lebih tinggi daripada SMA perlahan

Saiz pesanan ditetapkan berdasarkan peratusan daripada jumlah hak milik (default 96%), yang boleh memberikan kesan leverage.

Analisis kelebihan strategi

Strategi ini mempunyai kelebihan utama:

  1. Menggunakan kadar perubahan untuk menilai turun naik, anda boleh merebut peluang untuk kenaikan atau penurunan harga yang cepat dalam jangka pendek, untuk mendapatkan keuntungan yang lebih tinggi.
  2. Dengan menggabungkan trend penilaian SMA yang cepat dan perlahan, anda boleh lebih tepat mengesan masa untuk membeli dan menjual.
  3. Menetapkan rujukan SMA sebagai panduan arah besar, boleh mengelakkan penipuan oleh harga garis pendek.
  4. Menggunakan Tracking Stop Loss untuk mengunci keuntungan, risiko turun naik.
  5. Saiz pesanan memberikan kesan leverage yang dapat meningkatkan keuntungan.

Secara keseluruhannya, strategi ini menggunakan alat seperti kadar perubahan harga, indikator SMA, dan lain-lain untuk mencapai prestasi yang lebih baik dalam keadaan yang bergelombang.

Analisis risiko

Strategi ini juga mempunyai risiko:

  1. Perubahan kadar dan parameter SMA yang tidak betul boleh menyebabkan isyarat perdagangan yang salah atau salah. Parameter perlu disesuaikan untuk pasaran yang berbeza.

  2. Saiz pesanan melebihi konvensyen meningkatkan risiko. Adalah disyorkan untuk mengoptimumkan nisbah pesanan pada peringkat ujian.

  3. Tracking Stop Loss Dalam keadaan gegaran, mungkin terlambat. Anda boleh mempertimbangkan untuk menyesuaikan Stop Loss.

  4. Strategi Transactionsstab boleh berjalan mudah terdedah kepada lebihan. Ia harus digabungkan dengan penilaian trend dan pengurusan risiko hentikan kerugian.

  5. Risiko kecocokan data. Strategi harus disahkan dengan pelbagai ujian di pasaran yang berbeza.

Bagi risiko ini, risiko boleh dikawal melalui pengoptimuman parameter, penyesuaian pesanan, pengoptimuman strategi hentikan kerugian, dan pengesahan lapangan.

Arah pengoptimuman strategi

Strategi ini juga boleh dioptimumkan dengan:

  1. Menambah penilaian petunjuk teknikal lain, seperti kadar turun naik, jumlah transaksi, dan lain-lain, untuk meningkatkan ketepatan isyarat.

  2. Mengoptimumkan jumlah transaksi, mengurangkan kesan transaksistab dengan mengurangkan kekerapan transaksi.

  3. Bersama-sama dengan strategi penembusan, menetapkan isyarat perdagangan penembusan berhampiran tahap harga kritikal.

  4. Tetapan parameter yang dioptimumkan secara automatik menggunakan kaedah pembelajaran mesin.

  5. Kaedah ini diuji dalam pelbagai pasaran untuk jangka masa yang panjang untuk meningkatkan daya tahan dan adaptasi.

  6. Mengambil kira ciri-ciri pelbagai jenis seperti saham, mata wang asing, dan lain-lain, dan menetapkan kombinasi parameter khusus.

  7. Menerusi hasil disk, terus mengulangi isyarat strategi pengoptimuman dan kaedah kawalan risiko.

ringkaskan

Strategi ini mencari peluang perdagangan dalam turun naik harga garis pendek dengan menilai kadar perubahan dan indikator SMA. Ia membantu menangkap trend cepat, tetapi juga perlu berhati-hati dengan kawalan risiko. Ketahanan dan kesesuaian strategi dapat ditingkatkan secara berterusan melalui pengoptimuman parameter, penyesuaian pesanan, penambahbaikan strategi stop loss, dan verifikasi saham.

Kod sumber strategi
/*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)