Strategi Perdagangan Williams Alligator Spread


Tanggal Pembuatan: 2023-09-25 17:42:27 Akhirnya memodifikasi: 2023-09-25 17:42:27
menyalin: 0 Jumlah klik: 1616
1
fokus pada
1617
Pengikut

Ringkasan

Strategi ini didasarkan pada indikator ikan paus Bill Williams, tetapi menggunakan input harga yang berbeda. Ini adalah strategi scalping garis pendek yang berlaku untuk jangka waktu 1 menit hingga 5 menit.

Prinsip Strategi

Prinsip-prinsip perdagangan utama dari strategi ini adalah:

  1. Penggunaan Heiken Ashi filter sebagai input harga daripada filter standar. Heiken Ashi dapat menyaring kebisingan pasar dan mengidentifikasi tren.

  2. Gunakan tiga garis rata-rata dari indikator Bill Williams Shark: garis bawah, garis gigi, dan garis bibir. Mereka mirip dengan rata-rata bergerak untuk menentukan arah tren.

  3. Ketika tiga garis rata disusun sebagai: garis bawah paling rendah, garis gigi berada di tengah, garis bibir tertinggi, menunjukkan tren multi-kepala; ketika disusun dalam urutan: garis bawah paling tinggi, garis gigi berada di tengah, garis bibir terendah, menunjukkan tren kosong.

  4. Berdasarkan Heiken Ashi arah entitas dan penarikan garis ikan ikan. entitas ke atas dan penarikan garis ikan lebih banyak, lakukan lebih banyak; entitas ke bawah dan penarikan garis ikan lebih banyak, lakukan kosong.

  5. Ketika perubahan urutan garis ikan paus, menunjukkan pembalikan tren, dan harus dihentikan tepat waktu.

  6. Pengelolaan risiko dengan pengaturan stop loss dan stop loss yang tetap. Target profit, stop loss, dan tracking stop loss dapat dipilih untuk mengontrol setiap kerugian.

Strategi ini menggabungkan dua filter, yang menggunakan Heiken Ashi untuk mengidentifikasi tren, dan menggunakan garis penyu untuk menilai reversal, membentuk strategi perdagangan garis pendek dengan probabilitas tinggi.

Analisis Keunggulan

Strategi ini memiliki keuntungan utama sebagai berikut:

  1. Filter indikator ganda mengurangi sinyal palsu. Kombinasi Heiken Ashi dan kabel ikan hiu meningkatkan kualitas sinyal.

  2. Penghakiman tren yang jelas dan intuitif. Susunan garis penangkapan ikan jelas dan dapat diandalkan, tidak menimbulkan ambiguitas.

  3. Efisien menangkap short line trading. Cocok untuk scalping trading dengan periode 1 menit hingga 5 menit.

  4. Pengaturan parameter sederhana. Tidak perlu pengoptimalan yang rumit, sejumlah kecil parameter dapat digunakan.

  5. Manajemen risiko yang ketat. Menggunakan Stop Loss Points untuk mengendalikan setiap kerugian.

  6. Mekanisme masuk dan keluar yang jelas.

  7. Strategi ini dapat digunakan oleh trader pemula dengan mudah.

Analisis risiko

Risiko utama dari strategi ini adalah:

  1. Risiko penarikan diri. Saluran penangkapan ikan menghasilkan sinyal yang sering, yang akan meningkatkan frekuensi transaksi dan biaya slippage.

  2. Risiko terjadinya longsor. Dalam situasi yang sedang terjadi, kabel ikan akan sering berpotongan dan menghasilkan sinyal yang salah.

  3. Risiko over-optimisasi. Optimisasi parameter yang tidak tepat dapat menyebabkan kurva over-fit.

  4. Risiko kegagalan indikator. Dalam kondisi ekstrim pasar, garis penangkapan ikan dapat gagal sepenuhnya.

  5. Hentikan kerugian dengan risiko terobosan. Penembusan cepat dapat memicu hentikan kerugian.

  6. Frekuensi perdagangan yang terlalu tinggi berisiko. Frekuensi perdagangan yang tinggi meningkatkan biaya perdagangan dan kehilangan slippage yang tidak perlu.

Risiko ini dapat diatasi dengan pengelolaan ekspektasi, pengoptimalan strategi stop loss, dan pengendalian frekuensi perdagangan.

Arah optimasi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  1. Terintegrasi dengan indikator lain untuk memfilter sinyal, meningkatkan tingkat kemenangan. Misalnya, menggabungkan indikator kuat dan RSI.

  2. Atur stop loss dinamis ATR untuk mengontrol risiko kerugian tunggal.

  3. Tambahkan modul manajemen posisi untuk mengoptimalkan ukuran setiap posisi dibuka. Posisi dapat ditingkatkan ketika tren lebih jelas.

  4. Menggabungkan metode analisis teknis seperti bentuk grafis, untuk meningkatkan akurasi masuk.

  5. Optimalkan parameter sesuai dengan jenis pasar (seperti saham, valuta asing, dll) agar lebih sesuai dengan varietas tersebut.

  6. Menambahkan modul pembelajaran mesin untuk mengoptimalkan parameter yang disesuaikan.

  7. Perhitungan Expectancy Win Rate untuk mengoptimalkan Stop Loss Ratio

Dengan perbaikan terus menerus, strategi ini dapat menjadi strategi perdagangan garis pendek yang stabil.

Meringkaskan

Strategi ini menggunakan Heiken Ashi bekerja sama dengan Bill Williams Whaling Indicator untuk membentuk strategi perdagangan garis pendek dengan probabilitas tinggi. Ini memiliki keuntungan seperti filter ganda indikator, pengaturan parameter sederhana, dan mekanisme masuk dan keluar yang jelas, yang dapat secara efektif menangkap perubahan tren untuk melakukan perdagangan scalping.

Kode Sumber Strategi
/*backtest
start: 2022-09-18 00:00:00
end: 2023-09-24 00:00:00
period: 4d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © 03.freeman
//Scalping strategy based on Bill Williams Alligator technique but applied to heikin ashi candles
//This strategy has to be applied to standard candles and low time frames (1min to 5min)
//@version=4
strategy("Bill Williams Alligator improved", shorttitle="Scalping alligator",overlay=true)
//source = input(close)
useHA = input (true,"Use heikin ashi candle?")

// ----------MA calculation - ChartArt-------------
smoothinput = input(1, minval=1, maxval=5, title='Moving Average Calculation: (1=SMA), (2=EMA), (3=WMA), (4=Linear), (5=VWMA)')

calc_ma(src,l) => 
    smoothinput == 1 ? sma(src, l):smoothinput == 2 ? ema(src, l):smoothinput == 3 ? wma(src, l):smoothinput == 4 ? linreg(src, l,0):smoothinput == 5 ? vwma(src,l):na
//----------------------------------------------

heikinashi_close = security(heikinashi(syminfo.tickerid), timeframe.period, close)
heikinashi_open = security(heikinashi(syminfo.tickerid), timeframe.period, open)
heikinashi_hl2 = security(heikinashi(syminfo.tickerid), timeframe.period, hl2)

direzione=heikinashi_close>heikinashi_open and heikinashi_close[1]>heikinashi_open[1]? 1 : heikinashi_close<heikinashi_open and heikinashi_close[1]<heikinashi_open[1]? -1 : 0

jawLength = input(13, minval=1, title="Jaw Length")
teethLength = input(8, minval=1, title="Teeth Length")
lipsLength = input(5, minval=1, title="Lips Length")
jawOffset = input(8, title="Jaw Offset")
teethOffset = input(5, title="Teeth Offset")
lipsOffset = input(3, title="Lips Offset")
jaw = calc_ma(heikinashi_hl2, jawLength)
teeth = calc_ma(heikinashi_hl2, teethLength)
lips = calc_ma(heikinashi_hl2, lipsLength)
plot(jaw, title="jaw",offset = jawOffset, color=#3BB3E4)
plot(teeth, title="teeth",offset = teethOffset, color=#FF006E)
plot(lips, title="lips",offset = lipsOffset, color=#36C711)

longCondition = direzione[0]==1 and jaw<teeth and jaw<lips and teeth<lips 
shortCondition = direzione[0]==-1 and jaw>teeth and jaw>lips and teeth>lips


//  Strategy: (Thanks to JayRogers)
// === STRATEGY RELATED INPUTS ===
//tradeInvert     = input(defval = false, title = "Invert Trade Direction?")
// the risk management inputs
inpTakeProfit   = input(defval = 0, title = "Take Profit Points", minval = 0)
inpStopLoss     = input(defval = 0, title = "Stop Loss Points", minval = 0)
inpTrailStop    = input(defval = 0, title = "Trailing Stop Loss Points", minval = 0)
inpTrailOffset  = input(defval = 0, title = "Trailing Stop Loss Offset Points", minval = 0)

// === RISK MANAGEMENT VALUE PREP ===
// if an input is less than 1, assuming not wanted so we assign 'na' value to disable it.
useTakeProfit   = inpTakeProfit  >= 1 ? inpTakeProfit  : na
useStopLoss     = inpStopLoss    >= 1 ? inpStopLoss    : na
useTrailStop    = inpTrailStop   >= 1 ? inpTrailStop   : na
useTrailOffset  = inpTrailOffset >= 1 ? inpTrailOffset : na

// === STRATEGY - LONG POSITION EXECUTION ===
enterLong() => direzione[0]==1 and jaw<teeth and jaw<lips and teeth<lips // functions can be used to wrap up and work out complex conditions
exitLong() => jaw>teeth or jaw>lips or teeth>lips
strategy.entry(id = "Buy", long = true, when = enterLong() )    // use function or simple condition to decide when to get in
strategy.close(id = "Buy", when = exitLong() )                  // ...and when to get out

// === STRATEGY - SHORT POSITION EXECUTION ===
enterShort() => direzione[0]==-1 and jaw>teeth and jaw>lips and teeth>lips
exitShort() => jaw<teeth or jaw<lips or teeth<lips
strategy.entry(id = "Sell", long = false, when = enterShort())
strategy.close(id = "Sell", when = exitShort() )

// === STRATEGY RISK MANAGEMENT EXECUTION ===
// finally, make use of all the earlier values we got prepped
strategy.exit("Exit Buy", from_entry = "Buy", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
strategy.exit("Exit Sell", from_entry = "Sell", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)

// === Backtesting Dates === thanks to Trost

testPeriodSwitch = input(false, "Custom Backtesting Dates")
testStartYear = input(2020, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testStartHour = input(0, "Backtest Start Hour")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,testStartHour,0)
testStopYear = input(2020, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(31, "Backtest Stop Day")
testStopHour = input(23, "Backtest Stop Hour")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,testStopHour,0)
testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
isPeriod = true
// === /END

if not isPeriod
    strategy.cancel_all()
    strategy.close_all()