
Strategi ini menggunakan sinyal silang dari garis cepat dan lambat dari MACD untuk membuat penilaian komprehensif, menggabungkan beberapa indikator lainnya, menangkap sinyal terobosan dari rata-rata bergerak indeks dalam beberapa saat, dan membuat keputusan untuk membeli atau menjual. Strategi ini termasuk dalam strategi perdagangan garis pendek.
Menggunakan MACD garis cepat dan garis lambat yang bersilang sebagai sinyal perdagangan utama. Jika garis cepat melewati garis lambat, masuklah ke dalam dan jika garis cepat melewati garis lambat, masuklah ke dalam.
Dalam kombinasi dengan indikator RSI untuk menentukan apakah ada overbought atau oversold. Jika RSI berada di bawah garis tengah, maka akan terlihat bullish. Jika RSI berada di atas garis tengah, maka akan terlihat bearish.
Perbandingan harga penutupan saat ini dengan rata-rata SMA dalam periode tertentu, bullish saat harga penutupan di bawah SMA, bearish saat harga penutupan di atas SMA.
Menghitung titik Fibonacci 0,5 dari nilai tertinggi dalam periode tertentu, sebagai titik resistensi pada harga. Menghitung titik Fibonacci 0,5 dari nilai terendah dalam periode tertentu, sebagai titik dukungan pada harga.
Ketika memenuhi garis cepat dan harga di bawah titik dukungan, maka beli masuk. Ketika memenuhi garis cepat dan harga di atas titik resistensi, maka beli masuk.
Menggunakan Stop Loss Berkelanjutan. Stop loss di awal setelah masuk ditetapkan sebagai persentase tertentu dari harga pembukaan, dan setelah kerugian mencapai proporsi tertentu, stop loss berubah menjadi stop loss kecil yang dilacak secara bertahap.
Strategi memanfaatkan sinyal silang MACD, yang merupakan sinyal perdagangan indikator teknis klasik dan efektif.
Kombinasi beberapa indikator seperti RSI, SMA dan lain-lain untuk konfirmasi, dapat menyaring sinyal palsu, meningkatkan keandalan sinyal.
Perhitungan dinamis mendukung resistance level, untuk melakukan breakout trading, dapat menangkap trend yang lebih besar.
Stop loss yang bergerak secara bertahap dapat mengunci sebagian besar keuntungan dan mengendalikan risiko.
Strategi trading logikanya jelas, sederhana, mudah dipahami, dan cocok untuk pemula.
Indeks MACD memiliki masalah lag, mungkin akan kehilangan titik jual beli terbaik di pasar.
Pertimbangan kombinasi multi-indikator meningkatkan kompleksitas strategi dan kemungkinan konflik indikator.
Perhitungan dinamis mendukung risiko resistensi yang salah.
Stop loss bergerak dalam situasi besar mungkin berakhir prematur dan tidak dapat menghasilkan keuntungan yang berkelanjutan.
Parameter kebijakan perlu diuji berulang kali untuk dioptimalkan, dan parameter yang tidak sesuai dapat memengaruhi efektivitas kebijakan.
Anda dapat menguji kombinasi parameter yang berbeda untuk mengoptimalkan parameter siklus MACD.
Anda dapat memasukkan lebih banyak indikator, seperti garis Brin, KDJ, dan lain-lain untuk analisis multi-dimensi.
Ada banyak faktor yang dapat digunakan untuk menilai keabsahan resistance support.
Mekanisme stop loss yang lebih canggih dapat dipelajari, seperti stop loss waktu, stop loss getaran, dan lain-lain.
Modul optimasi parameter otomatis dapat ditambahkan, untuk mencapai optimasi parameter otomatis.
Strategi ini menggabungkan beberapa indikator seperti MACD, RSI, SMA, dan lain-lain untuk menangkap sinyal breakout dari indeks moving average dalam waktu sekejap. Strategi ini adalah strategi perdagangan breakout garis pendek yang khas. Strategi ini menghasilkan beberapa keterlambatan, tetapi dapat meningkatkan akurasi dengan mengoptimalkan parameter. Secara keseluruhan, strategi ini memiliki logika perdagangan yang sederhana dan jelas, mudah dikuasai, kinerja yang stabil, dan cocok untuk digunakan oleh sebagian besar orang untuk mempelajari nilai, perlu pengujian dan pengoptimalan lebih lanjut.
/*backtest
start: 2023-11-05 00:00:00
end: 2023-11-09 23:00:00
period: 1m
basePeriod: 1m
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/
// © onurenginogutcu
//@version=4
strategy("R19 STRATEGY", overlay=true, calc_on_every_tick=true , margin_long=100, margin_short=100 , process_orders_on_close=true )
sym = input(title="Symbol", type=input.symbol, defval="BINANCE:BTCUSDT" , group = "SYMBOL")
timeFrame = input(title="Strategy Decision Time Frame", type = input.resolution , defval="60")
adxlen = input(14, title="ADX Smoothing" , group = "ADX")
dilen = input(14, title="ADX DI Length", group = "ADX")
adxemalenght = input(30, title="ADX EMA", group = "ADX")
adxconstant = input(19, title="ADX CONSTANT", group = "ADX")
fibvar = input (title = "Fibo Look Back Canles" , defval = 50 , minval = 0 , group = "FIBO MACD SMA")
smaLookback = input (title = "SMA Look Back Candles" , defval = 30 , minval = 0 , group = "FIBO MACD SMA")
MACDFast = input (title = "MACD Fast Lenght" , defval = 15 , minval = 0 , group = "FIBO MACD SMA")
MACDSlow = input (title = "MACD Slow Lenght" , defval = 30 , minval = 0 , group = "FIBO MACD SMA")
MACDSmooth = input (title = "MACD Signal Smoothing" , defval = 9 , minval = 0 , group = "FIBO MACD SMA")
MACDLookback = input (title = "MACD Look Back Candles" , defval = 100 , minval = 0 , group = "FIBO MACD SMA")
trailingStopLong = input (title = "Trailing Long Stop %" , defval = 2.0 , step = 0.1, group = "TP & SL") * 0.01
trailingStopShort = input (title = "Trailing Short Stop %" , defval = 2.0 , step = 0.1 , group = "TP & SL") * 0.01
LongTrailingProfitStart = input (title = "Long Profit Start %" , defval = 2.0 , step = 0.1 , group = "TP & SL") * 0.01
ShortTrailingProfitStart = input (title = "Short Profit Start %" , defval = 2.0 , step = 0.1, group = "TP & SL") * 0.01
lsl = input(title="Max Long Stop Loss (%)",
minval=0.0, step=0.1, defval=3.0, group = "TP & SL") * 0.01
ssl = input(title="Max Short Stop Loss (%)",
minval=0.0, step=0.1, defval=2.5, group = "TP & SL") * 0.01
longtp = input(title="Long Take Profit (%)",
minval=0.0, step=0.1, defval=100, group = "TP & SL") * 0.01
shorttp = input(title="Short Take Profit (%)",
minval=0.0, step=0.1, defval=100, group = "TP & SL") * 0.01
capperc = input(title="Capital Percentage to Invest (%)",
minval=0.0, maxval=100, step=0.1, defval=95, group = "CAPITAL TO INVEST") * 0.01
symClose = security(sym, timeFrame, close)
symHigh = security(sym, timeFrame, high)
symLow = security(sym, timeFrame, low)
atr = atr (14)
/////////adx code
dirmov(len) =>
up = change(symHigh)
down = -change(symLow)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
truerange = rma(tr, len)
plus = fixnan(100 * rma(plusDM, len) / truerange)
minus = fixnan(100 * rma(minusDM, len) / truerange)
[plus, minus]
adx(dilen, adxlen) =>
[plus, minus] = dirmov(dilen)
sum = plus + minus
adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)
emasig = ema (sig , adxemalenght )
////////adx code over
i = ema (symClose , MACDFast) - ema (symClose , MACDSlow)
r = ema (i , MACDSmooth)
sapust = highest (i , MACDLookback) * 0.729
sapalt = lowest (i , MACDLookback) * 0.729
simRSI = rsi (symClose , 50 )
fibtop = lowest (symLow , fibvar) + ((highest (symHigh , fibvar) - lowest (symLow , fibvar)) * 0.50)
fibbottom = lowest (symLow , fibvar) + ((highest (symHigh , fibvar) - lowest (symLow , fibvar)) * 0.50)
cond1 = 0
cond2 = 0
cond3 = 0
cond4 = 0
longCondition = crossover(i, r) and i < sapalt and sig > adxconstant and symClose < sma (symClose , smaLookback) and simRSI < sma (simRSI , 50) and symClose < fibbottom
shortCondition = crossunder(i, r) and i > sapust and sig > adxconstant and symClose > sma (symClose , smaLookback) and simRSI > sma (simRSI , 50) and symClose > fibtop
//////////////////////probability long/short
if (crossover(i, r) and i < sapalt)
cond1 := 35
else if (crossunder(i, r) and i > sapust)
cond1 := -35
else
cond1 := 0
if (symClose < sma (symClose , smaLookback))
cond2 := 30
else if (symClose > sma (symClose , smaLookback))
cond2 := -30
else
cond2 := 0
if (simRSI < sma (simRSI , 50))
cond3 := 25
else if (simRSI > sma (simRSI , 50))
cond3 := -25
else
cond3 := 0
if (symClose < fibbottom)
cond4 := 10
else if (symClose > fibbottom)
cond4 := -10
else
cond4 := 0
probab = cond1 + cond2 + cond3 + cond4
////////////////////////////////////////////////////////////////
///////////////////////////////////////////STRATEGY ENTRIES AND STOP LOSSES /////
var startTrail = 0
var trailingLongPrice = 0.0
var trailingShortPrice = 0.0
if (longCondition and strategy.position_size == 0)
strategy.entry("Long", strategy.long , qty = capperc * strategy.equity / close )
if (shortCondition and strategy.position_size == 0)
strategy.entry("Short" , strategy.short , qty = capperc * strategy.equity / close )
if (strategy.position_size == 0)
trailingShortPrice := 0.0
trailingLongPrice := 0.0
startTrail := 0
/////////////////////////////////strategy exit
if (strategy.position_size > 0 and close >= strategy.position_avg_price * (1 + LongTrailingProfitStart))
startTrail := 1
if (strategy.position_size < 0 and close <= strategy.position_avg_price * (1 - ShortTrailingProfitStart))
startTrail := -1
trailingLongPrice := if strategy.position_size > 0 and startTrail == 1
stopMeasure = close * (1 - trailingStopLong)
max (stopMeasure , trailingLongPrice [1])
else if strategy.position_size > 0 and startTrail == 0
strategy.position_avg_price * (1 - lsl)
trailingShortPrice := if strategy.position_size < 0 and startTrail == -1
stopMeasure = close * (1 + trailingStopShort)
min (stopMeasure , trailingShortPrice [1])
else if strategy.position_size < 0 and startTrail == 0
strategy.position_avg_price * (1 + ssl)
if (strategy.position_size > 0)
strategy.exit("Exit Long", "Long", stop = trailingLongPrice , limit=strategy.position_avg_price*(1 + longtp))
if (strategy.position_size < 0)
strategy.exit("Exit Short", "Short", stop = trailingShortPrice , limit=strategy.position_avg_price*(1 - shorttp))
////////////////////////vertical colouring signals
bgcolor(color=longCondition ? color.new (color.green , 70) : na)
bgcolor(color=shortCondition ? color.new (color.red , 70) : na)
plot (trailingLongPrice , color = color.green) ///long price trailing stop
plot (trailingShortPrice , color = color.red) /// short price trailing stop
plot (startTrail , color = color.yellow)
plot (probab , color = color.white) ////probability