Strategi pembalikan purata bergerak empat penunjuk


Tarikh penciptaan: 2023-11-27 15:51:01 Akhirnya diubah suai: 2023-11-27 15:51:01
Salin: 0 Bilangan klik: 605
1
fokus pada
1617
Pengikut

Strategi pembalikan purata bergerak empat penunjuk

Gambaran keseluruhan

Strategi ini menggunakan EMA purata bergerak, RSI yang agak kuat, dan CCI saluran komoditi. Tiga petunjuk utama digabungkan untuk mengenal pasti trend harga melalui EMA rata-rata untuk berbalik, dan kemudian menggunakan RSI dan CCI yang telah dibeli dan dijual untuk membuat keputusan tambahan, membentuk isyarat perdagangan.

Prinsip Strategi

  1. Garis purata EMA 4 kitaran dan 8 kitaran untuk menentukan trend harga, 4 kitaran cepat untuk menentukan, 8 kitaran perlahan untuk menentukan;

  2. Apabila EMA rata-rata berbalik ke atas, iaitu 4 pusingan garis melalui 8 pusingan garis, kemudian membantu menilai RSI lebih tinggi daripada 65 ((terhadap kawasan overbought) dan CCI lebih tinggi daripada 0 ((mewakili tidak ada overbought overbought), kepuasan akan menghasilkan sinyal melakukan lebih banyak;

  3. Apabila EMA rata-rata berbalik ke bawah, iaitu 4 pusingan di bawah garis pusingan 8, kemudian membantu menilai RSI di bawah 35 (yang mewakili kawasan oversold relatif) dan CCI di bawah 0 (yang mewakili tiada overbought dan oversold), kepuasan menghasilkan isyarat shorting;

  4. Selepas isyarat terbentuk, harga berhenti dan berhenti ditetapkan berdasarkan jarak berhenti dan jarak berhenti input.

Secara keseluruhannya, strategi ini mengambil kira trend harga jangka pendek dan jangka pendek dan penunjuk untuk mengelakkan zona jual beli yang lebih tinggi, yang lebih stabil, sementara penyetempatan stop loss juga dapat mengawal kerugian maksimum dalam satu perdagangan.

Analisis kelebihan

  1. Keputusan komprehensif berbilang indikator untuk mengelakkan strategi perdagangan satu indikator yang mempunyai kebarangkalian yang lebih tinggi untuk membuat kesilapan;

  2. EMA akan menilai trend utama dengan rata-rata untuk mengelakkan penipuan oleh turun naik jangka pendek; RSI dan CCI akan mengelakkan kawasan jual beli yang berlebihan untuk meningkatkan peluang kemenangan;

  3. Pengaturan automatik untuk menghentikan kerugian dan mengawal risiko perdagangan tunggal dengan penangguhan secara automatik untuk mengelakkan kekalahan yang lebih besar daripada keadaan yang melampau;

  4. Strategi ini adalah strategi perdagangan teknikal, tidak dipengaruhi oleh asas, boleh digunakan untuk mana-mana kitaran pasaran, mudah untuk didedahkan.

Analisis risiko

  1. Indikator teknikal mudah terputus apabila terdapat peluang keuntungan besar/berita baik;

  2. Apabila harga saham berubah-ubah dengan ketara, penangguhan boleh ditembusi, dan penangguhan harus dikurangkan dengan sewajarnya;

  3. Strategi ini termasuk dalam strategi perdagangan frekuensi pendek, kos perdagangan akan memberi kesan kepada keuntungan, sesuai dengan strategi frekuensi tinggi yang mempunyai kelebihan kos.

Arah pengoptimuman

  1. Menambah algoritma pembelajaran mesin untuk menyesuaikan parameter secara automatik dengan keadaan asas saham;

  2. Menambah mekanisme penangguhan yang menyesuaikan diri, bukan jarak penangguhan tetap.

ringkaskan

Strategi perdagangan ini menggabungkan beberapa keputusan indikator, dengan parameter yang munasabah, keuntungan perdagangan jangka pendek dan sederhana yang lebih stabil boleh diperolehi, dan ia adalah strategi teknikal yang mudah untuk didedahkan. Tetapi juga harus berhati-hati untuk mengelakkan berita asas yang penting, langkah-langkah perlindungan risiko seperti jarak penangguhan yang sesuai, yang juga merupakan arah yang dapat dioptimumkan pada masa akan datang.

Kod sumber strategi
/*backtest
start: 2023-11-19 00:00:00
end: 2023-11-26 00:00:00
period: 45m
basePeriod: 5m
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/
// © SoftKill21

//@version=4


strategy(title="Moving Average Exponential", shorttitle="EMA", overlay=true)


len4 = input(4, minval=1, title="Length_MA4")
src4 = input(close, title="Source")
offset4 = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500)
out4 = ema(src4, len4)
plot(out4, title="EMA", color=color.blue, offset=offset4)

len8 = input(8, minval=1, title="Length_MA8")
src8 = input(close, title="Source")
offset8 = input(title="Offset", type=input.integer, defval=0, minval=-500, maxval=500)
out8 = ema(src8, len8)
plot(out8, title="EMA", color=color.blue, offset=offset8)


//rsioma
src = close, len = input(14, minval=1, title="Length")
up = rma(max(change(ema(src, len)), 0), len)
down = rma(-min(change(ema(src, len)), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
//plot(rsi, color=color.blue)
//band1 = hline(80)
//band0 = hline(20)
//fill(band1, band0, color=color.purple, transp=90)
//hline(50, color=color.gray, linestyle=plot.style_line)
sig = ema(rsi, 21)
//plot(sig, color=color.purple)

//woodie
cciTurboLength = input(title="CCI Turbo Length", type=input.integer, defval=6, minval=3, maxval=14)
cci14Length = input(title="CCI 14 Length", type=input.integer, defval=14, minval=7, maxval=20)

source = close

cciTurbo = cci(source, cciTurboLength)
cci14 = cci(source, cci14Length)

last5IsDown = cci14[5] < 0 and cci14[4] < 0 and cci14[3] < 0 and cci14[2] < 0 and cci14[1] < 0
last5IsUp = cci14[5] > 0 and cci14[4] > 0 and cci14[3] > 0 and cci14[2] > 0 and cci14[1] > 0
histogramColor = last5IsUp ? color.green : last5IsDown ? color.red : cci14 < 0 ? color.green : color.red


// Exit Condition
// Exit Condition
a = input(12)*10
b = input(15)*10
c = a*syminfo.mintick
d = b*syminfo.mintick


longCondition = crossover(out4, out8) and (rsi >= 65 and cci14>=0)
shortCondition = crossunder(out4, out8) and (rsi <=35 and cci14<=0)


long_stop_level     = float(na)
long_profit_level1  = float(na)
long_profit_level2  = float(na)
long_even_level     = float(na)

short_stop_level    = float(na)
short_profit_level1 = float(na)
short_profit_level2 = float(na)
short_even_level    = float(na)

long_stop_level     := longCondition  ? close - c : long_stop_level     [1]
long_profit_level1  := longCondition  ? close + d : long_profit_level1  [1]
//long_profit_level2  := longCondition  ? close + d : long_profit_level2  [1]
//long_even_level     := longCondition  ? close + 0 : long_even_level     [1]

short_stop_level    := shortCondition ? close + c : short_stop_level    [1]
short_profit_level1 := shortCondition ? close - d : short_profit_level1 [1]
//short_profit_level2 := shortCondition ? close - d : short_profit_level2 [1]
//short_even_level    := shortCondition ? close + 0 : short_even_level    [1] 


//ha
// === Input ===
//ma1_len = input(1, title="MA 01")
//ma2_len = input(40, title="MA 02")

// === MA 01 Filter ===
//o=ema(open,ma1_len)
//cc=ema(close,ma1_len)
//h=ema(high,ma1_len)
//l=ema(low,ma1_len)

// === HA calculator ===
//ha_t = heikinashi(syminfo.tickerid)
//ha_o = security(ha_t, timeframe.period, o)
//ha_c = security(ha_t, timeframe.period, cc)
//ha_h = security(ha_t, timeframe.period, h)
//ha_l = security(ha_t, timeframe.period, l)

// === MA 02 Filter ===
//o2=ema(ha_o, ma2_len)
//c2=ema(ha_c, ma2_len)
//h2=ema(ha_h, ma2_len)
//l2=ema(ha_l, ma2_len)

// === Color def ===
//ha_col=o2>c2 ? color.red : color.lime

// ===  PLOTITING===
//plotcandle(o2, h2, l2, c2, title="HA Smoothed", color=ha_col)

tp=input(120)
sl=input(96)
    
strategy.entry("long", strategy.long, when = longCondition)
//strategy.close("long", when = o2>c2 , comment="ha_long")
strategy.entry("short", strategy.short , when =shortCondition )
//strategy.close("short", when = o2<=c2 , comment = "ha_short" )

//strategy.close("long",when=long_profit_level1 or long_stop_level  , comment="tp/sl")
//strategy.close("short",when=short_profit_level1 or short_stop_level , comment="tp/sl")

strategy.exit("x_long","long",profit = tp, loss = sl) //when = o2>c2)
strategy.exit("x_short","short",profit = tp, loss = sl) //when = o2<c2)