Strategi Perdagangan Dwi Landasan Purata Pergerakan


Tarikh penciptaan: 2024-02-29 14:54:25 Akhirnya diubah suai: 2024-02-29 14:54:25
Salin: 1 Bilangan klik: 668
1
fokus pada
1617
Pengikut

Strategi Perdagangan Dwi Landasan Purata Pergerakan

Gambaran keseluruhan

Strategi perdagangan dua arah rata-rata bergerak adalah strategi perdagangan trend yang mengesan isyarat persilangan dua rata-rata bergerak. Strategi ini menggunakan rata-rata bergerak indeks ((EMA) dan rata-rata bergerak berat ((WMA) secara serentak sebagai petunjuk isyarat perdagangan.

Prinsip Strategi

Sumber isyarat perdagangan untuk strategi ini adalah EMA jangka pendek dengan 10 EMA dan WMA jangka panjang dengan 20 WMA. Apabila EMA jangka pendek di atas WMA jangka panjang, menunjukkan pergerakan berbalik dari bawah ke atas, melakukan lebih banyak; Apabila EMA jangka pendek di bawah WMA jangka panjang, menunjukkan pergerakan berbalik dari atas ke bawah, melakukan kosong.

Strategi pertama menentukan arah perdagangan, menetapkan stop loss di bawah atau di atas 1 ATR kitaran, dan menetapkan dua tempat berhenti, berhenti pertama di atas atau di bawah 1 ATR harga masuk, berhenti kedua di atas atau di bawah 2 ATR harga masuk. Apabila berhenti pertama dicetuskan, 50% dari kedudukan seterusnya dihentikan dengan berhenti kedua dan berhenti bergerak.

Logik stop loss bergerak adalah, asalkan harga tertinggi atau harga terendah menyentuh titik berhenti pertama, ia akan dihidupkan dan disempurnakan secara langsung mengikut garis K. Stop loss akan dipindahkan ke antara nilai maksimum keuntungan dan harga masuk sebagai pencegahan stop loss, untuk mengunci keuntungan.

Kelebihan

Strategi ini menggunakan fungsi penghapusan bunyi ganda rata-rata bergerak, yang dapat menghapuskan pergerakan rawak dalam pasaran, mengenali isyarat trend di garisan tengah dan panjang, dan mengelakkan penangkapan. Dengan menetapkan dua halangan sekumpulan pada masa yang sama, strategi ini meningkatkan ruang keuntungan dan memaksimumkan keuntungan.

Risiko

Rata-rata bergerak itu sendiri mempunyai keterlambatan yang kuat, dan mungkin menimbulkan risiko kehilangan isyarat; Persaingan rata-rata bergerak berganda boleh menghasilkan banyak isyarat palsu di beberapa pasaran, membawa kerugian. Tetapan berhenti adalah bahagian penting dalam strategi, jika berhenti terlalu kecil mudah untuk dipecahkan dan menyebabkan kerugian, jika berhenti terlalu besar mungkin tidak dapat mengawal risiko dengan berkesan.

Di samping itu, stop loss bergerak mungkin tidak dapat melindungi anda dengan baik semasa turun naik pasaran.

Arah pengoptimuman

  1. EMA dan WMA yang berbeza boleh diuji untuk mencari kombinasi parameter terbaik. EMA yang terlalu pendek atau WMA yang terlalu panjang boleh mempengaruhi prestasi strategi.

  2. Peningkatan ATR atau penangguhan titik tetap boleh dipilih mengikut ciri-ciri varieti dan gaya perdagangan yang berbeza.

  3. Anda boleh menguji kesan berhenti bergerak sebahagian dan berhenti bergerak keseluruhan.

  4. Anda boleh menilai isyarat penapisan dengan memperkenalkan petunjuk lain, membantu EMA dan WMA, dan meningkatkan kualiti isyarat.

ringkaskan

Strategi perdagangan dua hala rata-rata bergerak secara keseluruhan lebih kukuh dan lebih baik dalam keadaan trend. Dengan pengoptimuman parameter, pengoptimuman hentikan kerugian dan peningkatan kualiti isyarat, anda dapat meningkatkan lagi prestasi strategi di lapangan. Ini adalah strategi yang berpotensi untuk dikaji dan dimasukkan ke dalam lapangan.

Kod sumber strategi
/*backtest
start: 2024-01-29 00:00:00
end: 2024-02-28 00:00:00
period: 3h
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/
// © gpadihar

//@version=4
strategy("SL1 Pips after TP1 (MA)", commission_type=strategy.commission.cash_per_order, overlay=true)

// Strategy
Buy  = input(true)
Sell = input(true)

// Date Range
start_year    = input(title='Start year'   ,defval=2020)
start_month   = input(title='Start month'  ,defval=1)
start_day     = input(title='Start day'    ,defval=1)
start_hour    = input(title='Start hour'   ,defval=0)
start_minute  = input(title='Start minute' ,defval=0)
end_time      = input(title='set end time?',defval=false)
end_year      = input(title='end year'     ,defval=3019)
end_month     = input(title='end month'    ,defval=12)
end_day       = input(title='end day'      ,defval=31)
end_hour      = input(title='end hour'     ,defval=23)
end_minute    = input(title='end minute'   ,defval=59)

// MA
ema_period = input(title='EMA period',defval=10)
wma_period = input(title='WMA period',defval=20)
ema        = ema(close,ema_period)
wma        = wma(close,wma_period)

// Entry Condition
buy =
 crossover(ema,wma) and
 nz(strategy.position_size) == 0 and Buy and
 time > timestamp(start_year, start_month, start_day, start_hour, start_minute) and
 (end_time?(time < timestamp(end_year, end_month, end_day, end_hour, end_minute)):true)
 
sell =
 crossunder(ema,wma) and
 nz(strategy.position_size) == 0 and Sell and
 time > timestamp(start_year, start_month, start_day, start_hour, start_minute) and
 (end_time?(time < timestamp(end_year, end_month, end_day, end_hour, end_minute)):true)

// Pips
pip = input(20)*10*syminfo.mintick

// Trading parameters //
var bool  LS  = na
var bool  SS  = na
var float EP  = na
var float TVL = na
var float TVS = na
var float TSL = na
var float TSS = na
var float TP1 = na
var float TP2 = na
var float SL1 = na
var float SL2 = na

if buy or sell and strategy.position_size == 0
    EP  := close
    SL1 := EP - pip     * (sell?-1:1)
    SL2 := EP - pip     * (sell?-1:1)
    TP1 := EP + pip     * (sell?-1:1)
    TP2 := EP + pip * 2 * (sell?-1:1) 
   
// current trade direction    
LS := buy  or strategy.position_size > 0
SS := sell or strategy.position_size < 0

// adjust trade parameters and trailing stop calculations
TVL := max(TP1,open) - pip[1]
TVS := min(TP1,open) + pip[1]
TSL := open[1] > TSL[1] ? max(TVL,TSL[1]):TVL 
TSS := open[1] < TSS[1] ? min(TVS,TSS[1]):TVS

if LS and high > TP1
    if open <= TP1
        SL2:=min(EP,TSL)
    
if SS and low < TP1
    if open >= TP1
        SL2:=max(EP,TSS)

// Closing conditions
close_long  = LS and open < SL2
close_short = SS and open > SL2

// Buy
strategy.entry("buy"  , strategy.long, when=buy and not SS)
strategy.exit ("exit1", from_entry="buy", stop=SL1, limit=TP1, qty_percent=50)
strategy.exit ("exit2", from_entry="buy", stop=SL2, limit=TP2)

// Sell
strategy.entry("sell" , strategy.short, when=sell and not LS)
strategy.exit ("exit3", from_entry="sell", stop=SL1, limit=TP1, qty_percent=50)
strategy.exit ("exit4", from_entry="sell", stop=SL2, limit=TP2)

// Plots
a=plot(strategy.position_size >  0 ? SL1 : na, color=#dc143c, style=plot.style_linebr)
b=plot(strategy.position_size <  0 ? SL1 : na, color=#dc143c, style=plot.style_linebr) 
c=plot(strategy.position_size >  0 ? TP1 : na, color=#00ced1, style=plot.style_linebr) 
d=plot(strategy.position_size <  0 ? TP1 : na, color=#00ced1, style=plot.style_linebr) 
e=plot(strategy.position_size >  0 ? TP2 : na, color=#00ced1, style=plot.style_linebr) 
f=plot(strategy.position_size <  0 ? TP2 : na, color=#00ced1, style=plot.style_linebr) 
g=plot(strategy.position_size >= 0 ? na  : EP, color=#ffffff, style=plot.style_linebr) 
h=plot(strategy.position_size <= 0 ? na  : EP, color=#ffffff, style=plot.style_linebr) 

plot(ema,title="ema",color=#fff176)
plot(wma,title="wma",color=#00ced1)