Strategi sistem rata-rata bergerak yang solid dan kuat


Tanggal Pembuatan: 2023-11-24 15:11:18 Akhirnya memodifikasi: 2023-11-24 15:11:18
menyalin: 0 Jumlah klik: 589
1
fokus pada
1621
Pengikut

Strategi sistem rata-rata bergerak yang solid dan kuat

Ringkasan

Strategi ini adalah sistem moving average SMMA (smooth moving average) yang didasarkan pada 4 periode yang berbeda dan satu indikator EMA. Ini menggabungkan beberapa alat analisis teknis sekuritas untuk membentuk strategi perdagangan melalui penilaian tren. Strategi ini terutama berlaku untuk perdagangan intraday obligasi EURUSD 15 menit di akun leverage tinggi.

Prinsip Strategi

Strategi ini menggunakan 4 parameter berbeda SMMA ((3,6,9,50) dan 1 EMA ((200) untuk membangun sistem moving average multi-level. Indikator SMMA dapat secara efektif menyaring kebisingan pasar dan menentukan arah tren. Indikator EMA mendeteksi tren jangka panjang.

Sebuah sinyal beli dihasilkan ketika rata-rata bergerak periode pendek (misalnya SMMA 3 periode) melintasi rata-rata bergerak periode yang lebih panjang (misalnya EMA 200 periode). Sebuah sinyal jual dihasilkan ketika rata-rata bergerak periode pendek melintasi rata-rata bergerak periode yang lebih panjang (misalnya EMA 200 periode). Dengan demikian, arah tren ditentukan dengan menilai hubungan susunan beberapa rata-rata bergerak.

Selain itu, strategi juga menetapkan titik stop loss untuk mengendalikan risiko.

Analisis Keunggulan

Strategi ini memiliki keuntungan sebagai berikut:

  1. Struktur rata-rata bergerak bertingkat dapat secara efektif menentukan arah tren dan mengurangi sinyal palsu.

  2. Indikator SMMA secara efektif memfilter kebisingan pasar, sementara indikator EMA mendeteksi tren garis panjang.

  3. Akun leverage tinggi dapat meningkatkan keuntungan trading.

  4. Stop loss yang ditetapkan dapat mengontrol risiko secara efektif.

  5. Optimalisasi varietas perdagangan (EURUSD) dan periode (minit 15) untuk memberikan keuntungan yang lebih besar.

Analisis risiko

Strategi ini juga memiliki risiko sebagai berikut:

  1. Penggunaan rata-rata bergerak yang berlebihan dapat menyebabkan kehilangan kesempatan untuk berbalik dalam waktu singkat.

  2. Leverage tinggi memperbesar kerugian dan juga memperbesar keuntungan.

  3. Pada saat moving average menghasilkan sinyal, mungkin sudah terjadi pembalikan dalam jangka pendek.

  4. EURUSD dapat mengalami fluktuasi yang sangat besar, yang membawa risiko yang lebih besar.

Untuk menghadapi risiko-risiko ini, Anda dapat menyesuaikan kelipatan leverage, mengoptimalkan parameter moving average, mengintegrasikan indikator lain untuk menentukan perubahan harga dan sebagainya.

Arah optimasi

Strategi ini bertujuan untuk mengoptimalkan:

  1. Evaluasi kinerja dari berbagai varietas dan siklus, memilih parameter yang optimal.

  2. Uji kombinasi parameter yang berbeda dan jumlah rata-rata bergerak.

  3. Meningkatkan volume transaksi atau indikator volatilitas untuk menentukan titik balik jangka pendek.

  4. Dimensi Stop Loss Dimensi Stop Loss Dimensi Stop Loss Dimensi Stop Loss Dimensi Stop Loss Dimensi Stop Loss Dimensi Stop Loss Dimensi Stop Loss

  5. Ini adalah titik balik dalam penilaian indikator ENU.

Dengan pengujian dan pengoptimalan multi-dimensi, stabilitas dan profitabilitas strategi dapat ditingkatkan secara signifikan.

Meringkaskan

Strategi moving average ini mengintegrasikan keunggulan dari indikator moving average untuk membentuk sistem penilaian tren yang kuat. Strategi ini mengoptimalkan varietas dan siklus perdagangan, sangat cocok untuk perdagangan dalam hari dengan leverage tinggi. Dengan penyesuaian parameter dan pengujian optimasi, strategi ini dapat menjadi strategi perdagangan algoritmik yang efisien dan andal.

Kode Sumber Strategi
/*backtest
start: 2023-10-24 00:00:00
end: 2023-11-23 00:00:00
period: 1h
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/
// © SoftKill21

//@version=4
strategy("Money maker EURUSD 15min" )
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2000, title = "From Year", minval = 1970)
 
// To Date Inputs
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 8, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)
 


startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)




len = input(3, minval=1, title="Length")
src = input(hl2, title="Source")
smma = 0.0
sma1 = sma(src, len)
smma := na(smma[1]) ? sma1 : (smma[1] * (len - 1) + src) / len

len2 = input(6, minval=1, title="Length")
src2 = input(hl2, title="Source")
smma2 = 0.0
sma2 = sma(src2, len2)
smma2 := na(smma2[1]) ? sma2 : (smma2[1] * (len2 - 1) + src2) / len2

len3 = input(9, minval=1, title="Length")
src3 = input(hl2, title="Source")
smma3 = 0.0
sma3 = sma(src3, len3)
smma3 := na(smma3[1]) ? sma3 : (smma3[1] * (len3 - 1) + src3) / len3

len4 = input(50, minval=1, title="Length")
src4 = input(close, title="Source")
smma4 = 0.0
sma4 = sma(src4, len4)
smma4 := na(smma4[1]) ? sma4  : (smma4[1] * (len4 - 1) + src4) / len4

len5 = input(200, minval=1, title="Length")
src5 = input(close, title="Source")
out5 = ema(src5, len5)

timeinrange(res, sess) => time(res, sess) != 0
london=timeinrange(timeframe.period, "0300-1045")
londonEntry=timeinrange(timeframe.period, "0300-0845")

extraEntry =timeinrange(timeframe.period, "0745-1030")

time_cond = true
//time_cond2 = time >= startDate and time <= finishDate and extraEntry

//

longCond = close > out5 and close > smma4 and close > smma3 and close > smma2 and close > smma  and smma > smma2 and smma2>smma3 and smma3>smma4 and smma4>out5 and time_cond
shortCond = close < out5 and close < smma4 and close < smma3 and close < smma2 and close < smma  and smma < smma2 and smma2<smma3 and smma3<smma4 and smma4<out5 and time_cond


//longCond = close > out5 and close > smma4 and close > smma3 and close > smma2 and close > smma  and smma > smma2 and smma2>smma3 and smma3>smma4 and smma4>out5 and time_cond2
//shortCond = close < out5 and close < smma4 and close < smma3 and close < smma2 and close < smma  and smma < smma2 and smma2<smma3 and smma3<smma4 and smma4<out5 and time_cond2

//longCond2 = crossover(close,out5) and crossover(close,smma4) and crossover(close,smma3) and crossover(close,smma2) and crossover(close,smma) and time_cond
//shortCond2 = crossunder(close,out5) and crossunder(close,smma4) and crossunder(close,smma3) and crossunder(close,smma2) and crossunder(close,smma) and time_cond



tp=input(300,title="tp")
sl=input(300,title="sl")

strategy.initial_capital  = 50000

//MONEY MANAGEMENT--------------------------------------------------------------
balance = strategy.netprofit + strategy.initial_capital //current balance
floating = strategy.openprofit          //floating profit/loss
risk = input(1,type=input.float,title="Risk %")/100           //risk % per trade


    //Calculate the size of the next trade
temp01 = balance * risk     //Risk in USD
temp02 = temp01/sl        //Risk in lots
temp03 = temp02*100000      //Convert to contracts
size = temp03 - temp03%1000 //Normalize to 1000s (Trade size)
if(size < 1000)
    size := 1000           //Set min. lot size

dataL = (close-out5)*100000
dataS = (out5-close)*100000

minDistanceL = (smma4 - out5)*100000
minDistanceS= (out5 - smma4)*100000


strategy.entry("long",1,1,when=longCond )
strategy.exit("closelong","long", profit=tp,loss=sl)
    
strategy.entry("short",0,1,when=shortCond )
strategy.exit("closeshort","short", profit=tp,loss=sl)



strategy.close_all(when = not london, comment="london finish")
//strategy.close_all(when = not extraEntry, comment="london finish")



// maxEntry=input(2,title="max entries")
// strategy.risk.max_intraday_filled_orders(maxEntry)