Strategi FX Berdasarkan Gelombang Fraktal dan SMMA

Penulis:ChaoZhang, Tarikh: 2023-11-13 16:39:41
Tag:

img

Ringkasan

Strategi ini menggabungkan teori gelombang fraktal dan SMMA untuk mengenal pasti peluang trend, dan menggunakan stop loss dan trailing stop yang betul untuk mengawal risiko untuk memaksimumkan keuntungan.

Logika Strategi

  • Menggunakan SMMA untuk mengira harga purata dan menapis bunyi pasaran untuk arah trend
  • Mengenal pasti titik pembalikan trend menggunakan harga tertinggi / terendah dalam tempoh tertentu sebagai gelombang fraktal
  • Pergi pendek apabila gelombang harga pecah di atas SMMA, pergi panjang apabila pecah di bawah
  • Tetapkan stop loss dan trailing stop berdasarkan ATR untuk mengawal risiko
  • Hanya berdagang dalam sesi tertentu, mengelakkan turun naik hujung minggu dan intraday

Analisis Kelebihan

  • Teori gelombang fraktal dengan tepat mengenal pasti titik pembalikan trend, digabungkan dengan SMMA untuk arah trend
  • Stop loss dan ATR trailing stop secara berkesan mengehadkan kerugian setiap perdagangan
  • Hanya perdagangan semasa sesi cair mengelakkan pergeseran dan turun naik yang berlebihan
  • Mengikuti SAR parabolik ketat untuk keluar pada isyarat pembalikan memaksimumkan keuntungan

Analisis Risiko

  • Gelombang fraktal yang tidak tepat boleh menyebabkan whipsaws dalam tempoh bukan trend
  • Kelewatan SMMA mungkin terlepas titik pembalikan trend yang ideal
  • Stop loss terlalu ketat boleh berhenti dengan mudah, terlalu longgar boleh menimbulkan kerugian yang lebih besar
  • Keuntungan tetap tidak dapat disesuaikan dengan keadaan pasaran yang berbeza

Penyelesaian:

  • Mengoptimumkan parameter untuk tempoh fraktal dan SMMA
  • Tambah Stochastics untuk mengesahkan isyarat pembalikan
  • Dinamis mengoptimumkan stop loss, sasaran keuntungan

Arahan pengoptimuman

  • Mengoptimumkan tempoh fraktal dan parameter SMMA
  • Tambah penunjuk Stochastics untuk menapis pecah palsu
  • Percubaan dengan stop loss dinamik dan mengambil keuntungan
  • Memperluas stop loss untuk mengelakkan berhenti keluar
  • Mengoptimumkan parameter untuk produk dan sesi dagangan yang berbeza

Ringkasan

Strategi ini mengintegrasikan teori gelombang fraktal dan SMMA untuk mengenal pasti titik trend dan pembalikan perdagangan, dengan stop loss dan mengambil keuntungan yang betul. Ia boleh ditingkatkan lagi dengan mengoptimumkan parameter dan menambah penunjuk pengesahan untuk kestabilan dan keuntungan yang lebih tinggi.


/*backtest
start: 2022-11-12 00:00:00
end: 2023-11-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("FX Strategy Based on Fractals and SMMA", overlay=true)

// パラメータ
SMMAPeriod1 = input(30, title="SMMA Period")
StopLoss1 = input(7, title="Stop Loss %")
TrailingStopCoef1 = input(2.7, title="Trailing Stop Coefficient")
fractalPeriod = input(5, title="Fractal Period")

// SMMAの計算関数
smma(src, length) =>
    var float smma = na
    if na(smma[1])
        smma := sma(src, length)
    else
        smma := (smma[1] * (length - 1) + src) / length
    smma

// フラクタルの近似
highFractal = high[2] > high[1] and high[2] > high[3] and high[2] > high[4] and high[2] > high
lowFractal = low[2] < low[1] and low[2] < low[3] and low[2] < low[4] and low[2] < low

// エントリー条件
longEntrySignal = lowFractal and close[1] < smma(close, SMMAPeriod1)
shortEntrySignal = highFractal and close[1] > smma(close, SMMAPeriod1)

// エントリー実行
if (longEntrySignal)
    strategy.entry("Long", strategy.long)

if (shortEntrySignal)
    strategy.entry("Short", strategy.short)

// トレーリングストップの計算
atrValue = atr(10)
longStopPrice = close - atrValue * TrailingStopCoef1
shortStopPrice = close + atrValue * TrailingStopCoef1

// トレーリングストップの設定
strategy.exit("Exit Long", "Long", stop=longStopPrice)
strategy.exit("Exit Short", "Short", stop=shortStopPrice)

// バックテスト期間の設定(MetaTraderのバックテストと同じ期間)
startYear = 2007
startMonth = 05
startDay = 01
endYear = 2022
endMonth = 04
endDay = 01

startDate = timestamp(startYear, startMonth, startDay, 00, 00)
endDate = timestamp(endYear, endMonth, endDay, 23, 59)

// バックテスト期間内でのみトレードを実行
if (time >= startDate and time <= endDate)
    if (longEntrySignal)
        strategy.entry("Long", strategy.long)
    if (shortEntrySignal)
        strategy.entry("Short", strategy.short)


Lebih lanjut