Strategi pembalikan rata-rata pergerakan empat indikator


Tanggal Pembuatan: 2023-11-27 15:51:01 Akhirnya memodifikasi: 2023-11-27 15:51:01
menyalin: 0 Jumlah klik: 605
1
fokus pada
1617
Pengikut

Strategi pembalikan rata-rata pergerakan empat indikator

Ringkasan

Strategi ini menggunakan EMA Moving Average, RSI Relatively Strong, dan CCI Commodity Channel, tiga indikator utama yang dikombinasikan untuk mengidentifikasi tren harga melalui EMA Average untuk membalikkan atau tidak, dan kemudian menggunakan RSI dan CCI yang telah dibeli dan dijual untuk membuat keputusan tambahan, membentuk sinyal perdagangan.

Prinsip Strategi

  1. Garis rata-rata EMA 4 siklus dan 8 siklus untuk menilai tren harga, 4 siklus cepat menilai, 8 siklus lambat menentukan;

  2. Ketika EMA rata-rata berbalik ke atas, yaitu 4 siklus garis melalui 8 siklus garis, kemudian membantu menilai RSI lebih tinggi dari 65 ((relatif overbought area) dan CCI lebih tinggi dari 0 ((mewakili tidak ada overbought oversold), kepuasan menghasilkan sinyal melakukan plus;

  3. EMA rata-rata berbalik ke bawah, yaitu 4 siklus garis bawah melintasi 8 siklus garis, kemudian membantu menilai RSI di bawah 35 (yang relatif oversold area) dan CCI di bawah 0 (yang mewakili tidak ada overbought oversold), kepuasan menghasilkan sinyal shorting;

  4. Setelah sinyal terbentuk, harga stop loss dan stop stop diatur berdasarkan jarak stop loss dan stop stop yang dimasukkan.

Secara keseluruhan, strategi ini mempertimbangkan tren harga jangka pendek dan jangka pendek dan indikator overbought dan oversold untuk menghindari overbought dan oversold, yang relatif stabil, sementara pengaturan stop loss juga secara efektif mengontrol kerugian maksimum dalam satu transaksi.

Analisis Keunggulan

  1. Pertimbangan komprehensif terhadap beberapa indikator untuk menghindari strategi perdagangan indikator tunggal yang memiliki probabilitas kesalahan;

  2. EMA rata-rata menilai tren utama, menghindari penilaian yang salah oleh fluktuasi jangka pendek; RSI dan CCI menghindar dari zona overbought dan oversold, meningkatkan tingkat kemenangan;

  3. Mengatur secara otomatis stop-loss dan stop-loss untuk mengontrol risiko transaksi tunggal, dan secara efektif mencegah peningkatan kerugian akibat situasi ekstrem;

  4. Strategi ini merupakan strategi perdagangan teknis, tidak dipengaruhi oleh fundamental, dapat digunakan untuk setiap siklus satuan pasar, mudah untuk didistribusikan secara langsung.

Analisis risiko

  1. Indikator-indikator teknis cenderung tidak berfungsi saat terjadi lonjakan keuntungan/berita positif;

  2. Jika harga saham berfluktuasi tajam, stop loss dapat ditembus, dan stop loss harus diamputasi dengan tepat;

  3. Strategi ini termasuk dalam strategi perdagangan frekuensi pendek, dan biaya transaksi akan berdampak pada keuntungan, cocok untuk strategi frekuensi tinggi dengan keuntungan biaya.

Arah optimasi

  1. Menambahkan algoritma pembelajaran mesin untuk menyesuaikan parameter secara otomatis sesuai dengan fundamental saham;

  2. Menambahkan mekanisme penutupan kerusakan adaptif, bukan jarak penutupan yang tetap.

Meringkaskan

Strategi perdagangan ini mengintegrasikan beberapa penilaian indikator, dengan pengaturan parameter yang wajar, dapat memperoleh keuntungan perdagangan jangka pendek dan menengah yang relatif stabil, merupakan strategi teknis yang mudah dideteksi. Namun, juga harus memperhatikan langkah-langkah pencegahan risiko seperti pemberitahuan mendadak yang penting, jarak penghentian yang tepat, ini juga merupakan arah yang dapat dioptimalkan lebih lanjut di masa depan.

Kode 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)