
Strategi ini adalah sistem purata bergerak berdasarkan 4 kitaran yang berbeza SMMA (rata-rata bergerak lancar) dan satu indikator EMA. Ia menggabungkan beberapa alat analisis teknikal sekuriti untuk membentuk strategi perdagangan melalui penilaian trend.
Strategi ini menggunakan 4 parameter yang berbeza SMMA ((3, 6, 9, 50)) dan 1 EMA ((200) untuk membina sistem purata bergerak bertingkat. Indeks SMMA dapat menyaring bunyi pasaran dengan berkesan dan menentukan arah trend. Indeks EMA mengesan trend jangka panjang.
Apabila purata bergerak jangka pendek ((seperti SMMA 3 kitaran) melintasi purata bergerak jangka panjang ((seperti EMA 200 kitaran) menghasilkan isyarat beli. Apabila purata bergerak jangka pendek melintasi purata bergerak jangka panjang (PMA 200 kitaran) menghasilkan isyarat jual. Dengan cara ini, arah trend ditentukan dengan menilai hubungan susunan beberapa purata bergerak.
Selain itu, strategi ini juga menetapkan titik berhenti untuk mengawal risiko.
Strategi ini mempunyai kelebihan berikut:
Struktur purata bergerak bertingkat dapat menentukan arah trend dengan berkesan dan mengurangkan isyarat palsu.
Indeks SMMA menapis bunyi pasaran dengan berkesan, dan EMA mengesan trend garis panjang.
Ia sesuai untuk akaun leverage tinggi, yang dapat meningkatkan keuntungan perdagangan.
Penetapan titik hentian yang berkesan untuk mengawal risiko.
Optimumkan jenis dagangan ((EURUSD) dan kitaran ((15 minit)), menjadikannya lebih unggul.
Strategi ini juga mempunyai risiko:
Banyak menggunakan purata bergerak, mungkin terlepas peluang untuk berpatah balik dalam jangka pendek.
Leverage yang tinggi meningkatkan kerugian dan juga keuntungan.
Apabila purata bergerak memberi isyarat, mungkin keadaan dalam jangka pendek telah bertukar.
EURUSD boleh berubah-ubah dengan ketara, membawa risiko yang lebih besar.
Untuk menghadapi risiko ini, anda boleh menyesuaikan kelipatan leverage, mengoptimumkan parameter purata bergerak, memperkenalkan indikator lain untuk menilai perubahan harga dan sebagainya.
Kaedah utama untuk mengoptimumkan strategi ini ialah:
Penilaian prestasi pelbagai jenis dan kitaran, memilih parameter yang optimum.
Uji gabungan parameter yang berbeza dan jumlah purata bergerak.
Meningkatkan jumlah transaksi atau turun naik untuk menentukan titik balik jangka pendek.
Penyesuaian dinamik untuk meningkatkan stop loss amplitud.
Menyertai Indeks ENU, titik balik.
Dengan pelbagai ujian dan pengoptimuman, anda boleh meningkatkan kestabilan dan keuntungan strategi anda.
Strategi purata bergerak ini mengintegrasikan kelebihan penunjuk garis rata untuk membentuk sistem penghakiman trend yang mantap. Ia mengoptimumkan jenis dan kitaran perdagangan, sangat sesuai untuk perdagangan hari yang tinggi. Dengan penyesuaian parameter dan ujian pengoptimuman, strategi ini boleh menjadi strategi perdagangan algoritma yang cekap dan dipercayai.
/*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)