Trend Bolt yang Menyinari Mengikuti Strategi

Penulis:ChaoZhang, Tarikh: 2024-02-02 17:30:09
Tag:

img

Ringkasan

Strategi ini dinamakan Dazzling Bolts. Ia adalah strategi trend berikut berdasarkan tiga purata bergerak. Ia menggunakan persilangan garis cepat, sederhana dan perlahan untuk menentukan trend harga dan menetapkan sasaran dan berhenti berdasarkan nilai ATR.

Logika Strategi

Strategi ini menggunakan tiga purata bergerak berikut:

  1. Purata bergerak bertingkat 13 tempoh, untuk mengukur trend jangka pendek
  2. Purata bergerak eksponensial 55-period, untuk trend jangka sederhana
  3. Purata bergerak mudah 110 tempoh, untuk trend jangka panjang

Apabila garisan pantas melintasi di atas garisan sederhana dan garisan sederhana melintasi di atas garisan perlahan, ia menandakan aliran menaik. Apabila garisan pantas melintasi di bawah garisan sederhana dan garisan sederhana melintasi di bawah garisan perlahan, ia menandakan aliran menurun.

Untuk menapis beberapa perdagangan bunyi bising, beberapa syarat tambahan ditetapkan:

  1. Harga rendah 5 lilin terakhir berada di atas garis purata.
  2. Harga rendah 2 lilin terakhir jatuh di bawah garis sederhana
  3. Harga penutupan lilin terakhir berada di atas garis purata

Apabila kriteria ini dipenuhi, isyarat panjang atau pendek akan dicetuskan. Ia hanya memegang satu kedudukan setiap kali dan tidak akan masuk lagi sehingga kedudukan sedia ada ditutup atau dihentikan.

Sasaran dan berhenti diletakkan berdasarkan kelipatan tertentu nilai ATR.

Analisis Kelebihan

Kelebihan strategi ini termasuk:

  1. Menggunakan gabungan tiga purata bergerak mengelakkan kemungkinan penilaian yang salah dari satu penunjuk.
  2. Pelbagai keadaan tambahan membantu meningkatkan kualiti isyarat dengan menapis bunyi bising.
  3. Hentikan kerugian ATR dinamik membantu mengawal kerugian perdagangan tunggal.

Analisis Risiko

Risiko strategi ini juga termasuk:

  1. Gabungan purata bergerak boleh memberikan isyarat yang salah, yang memerlukan ujian backtest yang mencukupi.
  2. Tetapan pengganda ATR yang tidak betul boleh menyebabkan perhentian terlalu longgar atau ketat.
  3. Tidak dapat menapis fluktuasi harga secara berkesan daripada peristiwa tiba-tiba.

Untuk mengurangkan risiko, menyesuaikan parameter purata bergerak dengan betul, mengoptimumkan pengganda ATR, menetapkan tempoh pemegang maksimum untuk mengelakkan kerugian perdagangan tunggal yang berlebihan.

Arahan pengoptimuman

Kemungkinan pengoptimuman untuk strategi ini:

  1. Uji purata bergerak panjang atau jenis yang berbeza.
  2. Mengoptimumkan parameter keadaan tambahan.
  3. Cuba penunjuk lain untuk ramalan trend, contohnya MACD, DMI dll.
  4. Masukkan penunjuk jumlah untuk menapis isyarat.

Ringkasan

Strategi Dazzling Bolts umumnya merupakan sistem trend yang berterusan. Ia terutamanya menggunakan persilangan purata bergerak untuk menentukan arah trend, dengan kombinasi penunjuk teknikal tertentu sebagai cara tambahan untuk menapis beberapa bunyi bising. Walaupun terdapat ruang untuk pengoptimuman lanjut, risikonya secara keseluruhan dikawal dan sesuai untuk melabur di sepanjang trend jangka sederhana hingga panjang.


/*backtest
start: 2024-01-02 00:00:00
end: 2024-02-01 00:00:00
period: 2h
basePeriod: 15m
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/
// © greenmask9

//@version=4
strategy("Dazzling Bolts", overlay=true)
//max_bars_back=3000

// 13 SMMA
len = input(10, minval=1, title="SMMA Period")
src = input(close, title="Source")
smma = 0.0
smma := na(smma[1]) ? sma(src, len) : (smma[1] * (len - 1) + src) / len

// 55 EMA
emalength = input(55, title="EMA Period")
ema = ema(close, emalength)

// 100 SMA
smalength = input(110, title="SMA Period")
sma = sma(close, smalength)

emaforce = input(title="Force trend with medium EMA", type=input.bool, defval=true)
offsetemavalue = input(defval = 6)

bullbounce = smma>ema and ema>sma and low[5]>ema and low[2]<ema and close[1]>ema and (ema[offsetemavalue]>sma or (not emaforce))
bearbounce = smma<ema and ema<sma and high[5]<ema and high[2]>ema and close[1]<ema and (ema[offsetemavalue]<sma or (not emaforce))
plotshape(bullbounce,  title= "Purple", location=location.belowbar, color=#ff33cc, transp=0, style=shape.triangleup, size=size.tiny, text="Bolts")
plotshape(bearbounce,  title= "Purple", location=location.abovebar, color=#ff33cc, transp=0, style=shape.triangledown, size=size.tiny, text="Bolts")
strategy.initial_capital = 50000
ordersize=floor(strategy.initial_capital/close)
longs = input(title="Test longs", type=input.bool, defval=true)
shorts = input(title="Test shorts", type=input.bool, defval=true)
atrlength = input(title="ATR length", defval=12)
atrm = input(title="ATR muliplier",type=input.float, defval=2)
atr = atr(atrlength)

target = close + atr*atrm
antitarget = close - (atr*atrm)

//limits and stop do not move, no need to count bars from since

bullbuy = bullbounce and longs and strategy.opentrades==0
bb = barssince(bullbuy)
bearsell = bearbounce and shorts and strategy.opentrades==0
bs = barssince(bearsell)

if (bullbuy)
    strategy.entry("Boltsup", strategy.long, ordersize)
    strategy.exit ("Bolts.close", from_entry="Boltsup", limit=target, stop=antitarget)
if (crossover(smma, sma))
    strategy.close("Boltsup", qty_percent = 100, comment = "Bolts.crossover")

if (bearsell)
    strategy.entry("Boltsdown", strategy.short, ordersize)
    strategy.exit("Bolts.close", from_entry="Boltsdown", limit=antitarget, stop=target)
if (crossunder(smma, sma))
    strategy.close("Boltsdown", qty_percent = 100, comment = "Bolts.crossover")

// if (bb<5)
//     bulltarget = line.new(bar_index[bb], target[bb], bar_index[0], target[bb], color=color.blue, width=2)
//     bullclose = line.new(bar_index[bb], close[bb], bar_index[0], close[bb], color=color.blue, width=2)
//     bullstop = line.new(bar_index[bb], antitarget[bb], bar_index[0], antitarget[bb], color=color.blue, width=2)
// if (bs<5)
//     bulltarget = line.new(bar_index[bs], antitarget[bs], bar_index[0], antitarget[bs], color=color.purple, width=2)
//     bullclose = line.new(bar_index[bs], close[bs], bar_index[0], close[bs], color=color.purple, width=2)
//     bullstop = line.new(bar_index[bs], target[bs], bar_index[0], target[bs], color=color.purple, width=2)


Lebih lanjut