Sistem perdagangan kuning dan hijau EMA berganda


Tarikh penciptaan: 2023-10-26 17:15:46 Akhirnya diubah suai: 2023-10-26 17:15:46
Salin: 0 Bilangan klik: 680
1
fokus pada
1617
Pengikut

Sistem perdagangan kuning dan hijau EMA berganda

Gambaran keseluruhan

Sistem perdagangan EMA berganda adalah sistem perdagangan yang mengikuti trend berdasarkan purata bergerak dua indeks. Sistem ini menggunakan purata EMA dari dua tempoh yang berbeza untuk menilai arah trend semasa dan membuat keputusan perdagangan berdasarkan hubungan harga dengan purata EMA. Sistem ini logiknya mudah, mudah dikendalikan, dapat menangkap trend pasaran dengan baik, sesuai untuk digunakan oleh pelabur garis menengah.

Prinsip Strategi

Strategi ini bergantung kepada dua garis purata EMA, iaitu EMA yang lebih cepat dan EMA yang lebih perlahan. Apabila EMA cepat berada di atas EMA perlahan, ia dianggap sebagai bullish; apabila EMA cepat berada di bawah EMA perlahan, ia dianggap sebagai bearish.

Berdasarkan hubungan harga dengan dua garis rata EMA, garis K boleh dibahagikan kepada zon dagangan yang berbeza:

  • Apabila EMA segera berada di atas EMA perlahan, dan harga di atas EMA pantas ((G1), untuk kawasan pembelian yang kuat, pada masa ini boleh dibeli.

  • Apabila EMA segera berada di bawah EMA perlahan, dan harga berada di bawah EMA pantas (R1), untuk menjual kawasan yang kuat, pada masa ini boleh dijual.

  • Apabila EMA bergerak perlahan, berdasarkan hubungan harga dengan dua EMA, ia boleh dibahagikan kepada kawasan kuning (peringatan) dan oren (tonton). Kedua-dua kawasan ini mewakili kemungkinan perubahan trend yang perlu digabungkan dengan kawasan lain dan penunjuk lain untuk membuat keputusan perdagangan.

Strategi ini akan menghantar isyarat beli dan jual mengikut perubahan harga di kawasan perdagangan yang berbeza. Di kawasan yang kuat G1 dan R1, strategi akan menghasilkan isyarat secara langsung; di kawasan amaran dan pengamatan, indikator lain diperlukan untuk disahkan.

Selain itu, strategi ini juga memperkenalkan StochRSI untuk membantu menentukan masa untuk membeli atau menjual.

Kelebihan Strategik

  • Logik strategi mudah difahami, mudah difahami dan mudah dilaksanakan;

  • Ia juga boleh digunakan untuk menjejaki trend garis tengah dan panjang dengan berkesan.

  • Membezakan antara kawasan yang kuat dan kawasan amaran/wawasan yang bertentangan dengan trend, di mana isyarat dagangan lebih dipercayai;

  • Dengan gabungan StochRSI, anda boleh menentukan masa untuk membeli atau menjual dengan lebih tepat.

Risiko Strategik

  • Sistem trend murni, yang mungkin kurang berkesan dalam pasaran tanpa trend yang jelas;

  • Pengaturan kitaran EMA yang tidak betul boleh menyebabkan isyarat palsu;

  • Perdagangan di kawasan amaran awal dan kawasan berjaga-jaga adalah berisiko tinggi dan perlu dijaga dengan berhati-hati;

  • Tidak mengambil kira risiko penghentian kerugian yang membawa kepada peningkatan kerugian.

Kaedah-kaedah berikut boleh digunakan untuk mengurangkan risiko:

  1. Memilih varieti yang mempunyai trend yang jelas dan menghentikan dagangan apabila trendnya lemah;

  2. Mengoptimumkan parameter kitaran EMA untuk mengurangkan kebarangkalian isyarat palsu;

  3. Memastikan pengenalan penunjuk-penunjuk lain di kawasan amaran awal dan kawasan pemerhatian untuk mengurangkan risiko perdagangan;

  4. Tetapkan titik hentian untuk mengawal kerugian tunggal.

Arah pengoptimuman strategi

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Memperkenalkan lebih banyak penunjuk untuk pengesahan, seperti MACD, KDJ dan lain-lain, untuk meningkatkan kualiti isyarat;

  2. Memperkenalkan syarat penapisan di kawasan dagangan, seperti peningkatan jumlah dagangan dan peningkatan kadar kejayaan dagangan;

  3. Menyesuaikan parameter EMA mengikut keadaan pasaran yang dinamik, menetapkan parameter pengoptimuman;

  4. Meningkatkan strategi hentikan kerugian, berhenti apabila kerugian mencapai peratusan tertentu;

  5. Mengoptimumkan pengurusan dana dan menetapkan pengurusan kedudukan yang munasabah;

  6. Uji optimasi pada pelbagai jenis untuk mencari kombinasi parameter terbaik.

Dengan memperkenalkan lebih banyak penunjuk penilaian tambahan, pengoptimuman parameter dinamik, strategi berhenti kerugian dan lain-lain untuk meningkatkan kestabilan sistem, mengurangkan risiko dari segi pengurusan wang, dan sebagainya, strategi ini dapat memberikan kesan perdagangan yang lebih baik.

ringkaskan

Sistem perdagangan EMA berganda adalah sistem perdagangan trend-tracking berdasarkan perbandingan rata-rata EMA berganda. Ia membezakan antara kawasan perdagangan yang berbeza, menilai arah trend berdasarkan hubungan harga dan rata-rata EMA dan menghasilkan isyarat perdagangan, merupakan sistem trend-tracking yang logiknya jelas dan mudah dilaksanakan.

Kod sumber strategi
/*backtest
start: 2023-01-01 00:00:00
end: 2023-10-25 00:00:00
period: 1d
basePeriod: 1h
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/
// © Vvaz_
//base-on CDC ActionZone By Piriya   a simple 2EMA and is most suitable for use with medium volatility market
//@version=4
strategy(title="Vin's Playzone" ,shorttitle="VPz", overlay=true, margin_long=4, margin_short=2)

//variable
srcf = input(title="Source",type=input.source,defval=close)
tffix = input(title="Fixed Timeframe",type=input.bool,defval=true)
tfn = input(title="Timeframe in",type=input.resolution,defval="D")
ema1 = input(title="Fast EMA",type=input.integer,defval=12)
ema2 = input(title="Slow EMA",type=input.integer,defval=26)
ema3 = input(title="EMA 100",type=input.bool,defval=true)
smooter =input(title="Smoothing period (1 = no smoothing)",type=input.integer,defval=2)
fillbar =input(title="Fill Bar Color",type=input.bool,defval=true)
emasw = input(title="Show EMA",type=input.bool,defval=true)
bssw = input(title="Show Buy-Sell signal",type=input.bool,defval=true)
plotmm = input(title="Show Buy-Sell Momentum",type=input.bool,defval=true)
plotmmsm = input(title="RSI Smoothing",type=input.integer,defval=0,minval=0,maxval=2)

//math
xcross =ema(srcf,smooter)
efast = tffix ?  ema(security(syminfo.tickerid,tfn,ema(srcf,ema1), gaps = barmerge.gaps_off,lookahead = barmerge.lookahead_on),smooter) :ema(xcross,ema1)
eslow = tffix ?  ema(security(syminfo.tickerid,tfn,ema(srcf,ema2), gaps = barmerge.gaps_off,lookahead = barmerge.lookahead_on),smooter) :ema(xcross,ema2)
ema3x = ema(xcross,100)


//Zone
Bull = efast > eslow
Bear = efast < eslow

G1 = Bull and xcross > efast //buy
G2 = Bear and xcross > efast and xcross > eslow //pre-buy1
G3 = Bear and xcross > efast and xcross < eslow //pre-buy2

R1 = Bear and xcross < efast //sell
R2 = Bull and xcross < efast and xcross < eslow //pre-sell1
R3 = Bull and xcross < efast and xcross > eslow //pre-sell2

//color
bcl =   G1 ? color.green :  G2 ? color.yellow : G3 ? color.orange :R1 ? color.red :R2 ? color.orange : R3 ? color.yellow : color.black
barcolor(color=fillbar ? bcl : na )

//plots
line1 = plot(ema3 ? ema3x : na ,"EMA100",color=color.white)
line2 = plot(emasw ? efast : na ,"Fast EMA",color=color.green)
line3 = plot(emasw ? eslow : na ,"Slow EMA",color=color.red)
fillcl = Bull ? color.green : Bear ? color.red : color.black
fill(line2,line3,fillcl)

//actions
buywhen = G1 and G1[1]==0
sellwhen = R1 and R1[1]==0

bullish = barssince(buywhen) < barssince(sellwhen)
bearish = barssince(sellwhen) < barssince(buywhen)

buy = bearish[1] and buywhen
sell = bullish[1] and sellwhen

bullbearcl = bullish ? color.green : bearish ? color.red : color.black

//plot trend
plotshape(bssw ? buy : na ,style=shape.arrowup,title="BUY",location=location.belowbar,color=color.green)
plotshape( bssw ? sell : na ,style=shape.arrowdown ,title="Sell",location=location.abovebar,color=color.red)

// Momentum Signal using StochRSI

smoothK = input(5,"StochRSI smooth K",type=input.integer,minval=1)
smoothD = input(4,"StochRSI smooth D",type=input.integer,minval=1)
RSIlen = input(14,"RSI length",type=input.integer,minval=1)
STOlen = input(14,"Stochastic length",type=input.integer,minval=1)
SRsrc = input(close,"Source for StochasticRSI",type=input.source)
OSlel = input(20,"Oversold Threshold",type=input.float,minval=0.00)
OBlel = input(80,"Oversold Threshold",type=input.float,minval=0.00)
rsil = rsi(SRsrc,RSIlen)
K = sma(stoch(rsil,rsil,rsil,STOlen),smoothK)
D = sma(K,smoothD)

buymore = iff( bullish ,iff(D < OSlel and crossover(K,D),	2,	 iff(D > OSlel and crossover(K,D),	 1,0)),0)
sellmore = iff( bearish,iff(D > OBlel and crossunder(K,D),	2,	 iff(D < OBlel and crossunder(K,D),	 1,0)),0)
//plot momentum
plotshape(plotmm ? buymore > plotmmsm ? buymore : na : na ,"Buy More!" ,style=shape.triangleup,location=location.belowbar,color=color.green)
plotshape(plotmm ? sellmore > plotmmsm ? sellmore : na : na ,"Sell More!" ,style=shape.triangledown,location=location.abovebar,color=color.red)


// === INPUT BACKTEST RANGE ===
FromYear  = input(defval = 2009, title = "From Year", minval = 2009)
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2009)
ToMonth   = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 31, title = "To Day", minval = 1, maxval = 31)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"

//stratgy excuter
strategy.entry("Long",true,when=window() and buy or buymore)
strategy.close("Long",when=window() and sell or sellmore,comment="TP Long")
strategy.entry("Short",false,when=window() and sell or sellmore)
strategy.close("Short",when=window() and buy or buymore,comment="TP Short")