
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.
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.
Strategi ini memiliki keuntungan sebagai berikut:
Struktur rata-rata bergerak bertingkat dapat secara efektif menentukan arah tren dan mengurangi sinyal palsu.
Indikator SMMA secara efektif memfilter kebisingan pasar, sementara indikator EMA mendeteksi tren garis panjang.
Akun leverage tinggi dapat meningkatkan keuntungan trading.
Stop loss yang ditetapkan dapat mengontrol risiko secara efektif.
Optimalisasi varietas perdagangan (EURUSD) dan periode (minit 15) untuk memberikan keuntungan yang lebih besar.
Strategi ini juga memiliki risiko sebagai berikut:
Penggunaan rata-rata bergerak yang berlebihan dapat menyebabkan kehilangan kesempatan untuk berbalik dalam waktu singkat.
Leverage tinggi memperbesar kerugian dan juga memperbesar keuntungan.
Pada saat moving average menghasilkan sinyal, mungkin sudah terjadi pembalikan dalam jangka pendek.
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.
Strategi ini bertujuan untuk mengoptimalkan:
Evaluasi kinerja dari berbagai varietas dan siklus, memilih parameter yang optimal.
Uji kombinasi parameter yang berbeda dan jumlah rata-rata bergerak.
Meningkatkan volume transaksi atau indikator volatilitas untuk menentukan titik balik jangka pendek.
Dimensi Stop Loss Dimensi Stop Loss Dimensi Stop Loss Dimensi Stop Loss Dimensi Stop Loss Dimensi Stop Loss Dimensi Stop Loss Dimensi Stop Loss
Ini adalah titik balik dalam penilaian indikator ENU.
Dengan pengujian dan pengoptimalan multi-dimensi, stabilitas dan profitabilitas strategi dapat ditingkatkan secara signifikan.
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.
/*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)