Strategi ini menggabungkan penggunaan garis rata-rata ganda, indikator acak, dan indikator MACD untuk mengidentifikasi peluang perdagangan garis pendek, yang merupakan strategi perdagangan garis pendek yang lebih klasik.
Strategi ini didasarkan pada prinsip-prinsip berikut:
Menggunakan 50 siklus dan 100 siklus EMA rata-rata garis, untuk menilai arah tren. EMA rata-rata garis memiliki periode yang lebih pendek, dapat dengan cepat menanggapi perubahan harga. 50 siklus garis melewati 100 siklus garis mewakili masuk lebih banyak; 50 siklus garis bawah melewati 100 siklus garis mewakili masuk kosong.
Menggunakan MACD indikator deviasi nilai untuk menentukan waktu jual beli. Ketika deviasi dari atas memakai 0 menunjukkan peningkatan kekuatan multihead, melakukan lebih banyak; Ketika deviasi dari bawah memakai 0 peningkatan kekuatan head kosong, melakukan kosong.
Dalam kombinasi dengan Stochastic RSI untuk menentukan apakah ada overbought atau oversold. Indikator ini menggabungkan keuntungan dari indikator KDJ dan RSI untuk menunjukkan kondisi overbought dan oversold di pasar. Ketika indikator berada di bawah 20 maka oversold, ditambah dengan indikator lain. Ketika indikator lebih tinggi dari 80 maka oversold, ditambah dengan indikator lain.
Setelah menentukan arah posisi, posisi dapat dibuka jika 4 dari 5 garis K terakhir memiliki harga penutupan yang menyentuh garis rata-rata, yang menunjukkan adanya dukungan atau tekanan di dekat garis rata-rata.
Menggunakan Stop Loss Point Manajemen Risiko.
Strategi ini memiliki keuntungan sebagai berikut:
Kombinasi multi-indikator, penggunaan garis rata-rata secara komprehensif, indikator overbought dan oversold dan indikator energi, meningkatkan peluang perdagangan.
Siklus rata-rata lebih pendek, dapat dengan cepat menangkap tren dan membalikkannya. Optimasi parameter MACD, mengidentifikasi waktu jual beli dengan tepat.
Parameter indikator RSI Stokastik telah dioptimalkan untuk mengidentifikasi fenomena overbought dan oversold.
Menggunakan tekanan pendukung di dekat garis rata-rata untuk mengontrol ritme dan menghindari terkunci dalam terobosan tidak efektif.
Stop loss yang masuk akal dan pengendalian risiko transaksi tunggal yang efektif.
Strategi ini juga memiliki beberapa risiko:
Namun, kerugian yang ditimbulkan oleh penembakan palsu masih belum dapat sepenuhnya dihindari.
Kombinasi multi-indikator dapat terjadi deviasi yang menyebabkan sinyal perdagangan tidak konsisten.
Stop loss yang tetap mungkin tidak dapat beradaptasi dengan perubahan pasar.
Implementasi kode yang lebih kompleks, banyak parameter, dan tidak mudah dioptimalkan.
Solusi untuk menghadapi risiko adalah sebagai berikut:
Optimalkan parameter, meningkatkan kualitas sinyal, dan mengurangi probabilitas penembusan palsu.
Menetapkan prioritas di antara indikator untuk menghindari konflik sinyal.
Mengaktifkan Stop Stop Loss Tracking, mengatur Stop Stop Loss Range berdasarkan indikator seperti ATR.
Mempermudah logika kode, ekstraksi parameter inti untuk pengujian dan optimalisasi.
Strategi ini dapat dioptimalkan dari beberapa arah:
Uji siklus rata-rata dan parameter MACD untuk menemukan kombinasi parameter yang optimal.
Uji coba berbagai indikator overbought dan oversold sebagai alternatif Stochastic RSI.
Cobalah stop loss yang dinamis, stop loss yang bergerak, dan lain-lain untuk membuat manajemen kerugian lebih cerdas.
Menambahkan kondisi penyaringan, seperti peningkatan volume transaksi, untuk meningkatkan kualitas sinyal.
Optimalkan logika pembukaan posisi untuk mencegah terjadinya penembusan yang tidak efektif.
Tetapkan batasan stop loss untuk ukuran dana akun, jumlah transaksi per hari, dan lain-lain untuk mengontrol risiko keseluruhan.
Strategi ini mengintegrasikan berbagai indikator yang memiliki keunggulan dan memiliki kepraktisan yang kuat dalam perdagangan garis pendek. Dengan terus mengoptimalkan parameter, logika posisi terbuka yang ketat, dan meningkatkan strategi manajemen kerugian, Anda dapat meningkatkan stabilitas dan profitabilitas strategi. Strategi ini cocok untuk digunakan oleh pedagang garis pendek dengan dasar tertentu, tetapi perlu memperhatikan kontrol risiko, agar tidak terjadi kerugian yang lebih besar.
/*backtest
start: 2023-01-01 00:00:00
end: 2023-10-08 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="Forex scalper 2xEMA + SRSI + MACD", shorttitle="Forex scalper 5-15min", overlay=true)
src = input(title="Source", type=input.source, defval=close)
src_0 = src[0]
src_1 = src[1]
src_2 = src[2]
src_3 = src[3]
src_4 = src[4]
len50 = input(50, minval=1, title="Length")
src50 = input(close, title="Source")
out50 = ema(src50, len50)
len100 = input(100)
src100 = input(close, title="Source")
out100 = ema(src100, len100)
len1 = input(1, minval=1, title="Length")
src1 = input(close, title="Source")
out1 = sma(src1, len1)
length = input(4, minval=1)
OverBought = input(80)
OverSold = input(20)
smoothK = 3
smoothD = 3
k = sma(stoch(close, high, low, length), smoothK)
d = sma(k, smoothD)
cu = crossover(k,OverSold)
co = crossunder(k,OverBought)
sma_down = crossunder(out1, out50)
sma_up = crossover(out1,out50)
//if (not na(k) and not na(d))
// if (co and k < OverSold)
// strategy.entry("StochLE", strategy.long, comment="StochLE")
//if (cu and k > OverBought)
// strategy.entry("StochSE", strategy.short, comment="StochSE")
crossCandle_4 = crossover(src[4],out50)
crossCandleUnder_4= cross(src[4],out50)
crossCandle_3 = crossover(src[3],out50)
crossCandleUnder_3= crossunder(src[3],out50)
crossCandle_2 = crossover(src[2],out50)
crossCandleUnder_2= crossunder(src[2],out50)
crossCandle_1 = crossover(src[1],out50)
crossCandleUnder_1= crossunder(src[1],out50)
crossCandle_0 = crossover(src[0],out50)
crossCandleUnder_0= crossunder(src[0],out50)
conditionOver = (crossCandle_4 or crossCandle_3 or crossCandle_2 or crossCandle_1 or crossCandle_0)
conditionUnder =(crossCandleUnder_4 or crossCandleUnder_3 or crossCandleUnder_2 or crossCandleUnder_1 or crossCandleUnder_0)
touch4 = (cross(low[4],out50) or cross(high[4],out50))
touch3 = (cross(low[3],out50) or cross(high[3],out50))
touch2 = (cross(low[2],out50) or cross(high[2],out50))
touch1 = (cross(low[1],out50) or cross(high[1],out50))
touch = touch1 or touch2 or touch3 or touch4
//and sma_up
//and sma_down
// Getting inputs
fast_length = input(title="Fast Length", type=input.integer, defval=12)
slow_length = input(title="Slow Length", type=input.integer, defval=26)
src_macd = input(title="Source", type=input.source, defval=close)
signal_length = input(title="Signal Smoothing", type=input.integer, minval = 1, maxval = 50, defval = 10)
sma_source = input(title="Simple MA(Oscillator)", type=input.bool, defval=false)
sma_signal = input(title="Simple MA(Signal Line)", type=input.bool, defval=false)
// Plot colors
col_grow_above = #26A69A
col_grow_below = #FFCDD2
col_fall_above = #B2DFDB
col_fall_below = #EF5350
col_macd = #0094ff
col_signal = #ff6a00
// Calculating
fast_ma = sma_source ? sma(src_macd, fast_length) : ema(src_macd, fast_length)
slow_ma = sma_source ? sma(src_macd, slow_length) : ema(src_macd, slow_length)
macd = fast_ma - slow_ma
signal = sma_signal ? sma(macd, signal_length) : ema(macd, signal_length)
hist = macd - signal
//plot(hist, title="Histogram", style=plot.style_columns, color=(hist>=0 ? (hist[1] < hist ? col_grow_above : col_fall_above) : (hist[1] < hist ? col_grow_below : col_fall_below) ), transp=0 )
//plot(macd, title="MACD", color=col_macd, transp=0)
//plot(signal, title="Signal", color=col_signal, transp=0)
// plot((conditionOver or conditionUnder or touch) and src[0] >= out50 and close >= out50 and (cu) and out50 > out100 and hist>=0 , title="Buy", style=columns, color=lime)
// plot((conditionOver or conditionUnder or touch) and src[0] <= out50 and close <= out50 and (co) and out50< out100 and hist<=0 , title="sell", style=columns, color=red)
long_cond = ((conditionOver or conditionUnder or touch) and src[0] >= out50 and close > out50 and (cu) and out50 > out100 and hist>=0)
short_cond = ((conditionOver or conditionUnder or touch) and src[0] <= out50 and close < out50 and (co) and out50< out100 and hist<=0)
tp=input(200)
sl=input(200)
strategy.entry("long",strategy.long, when=long_cond)
strategy.entry("short",strategy.short, when=short_cond)
strategy.exit("X_long", "long", profit=tp, loss=sl, when=touch )
strategy.exit("x_short", "short",profit=tp, loss=sl,when = touch )