
Strategi ini menghasilkan sinyal perdagangan dengan menghitung indeks pergerakan dua arah DI +, DI - dan indeks arah rata-rata ADX, yang dikombinasikan dengan EMA rata-rata bergerak indeks. Sinyal beli dihasilkan ketika DI + di atas DI + dan ADX lebih tinggi dari 20; Sinyal jual dihasilkan ketika DI + di bawah DI + dan ADX lebih tinggi dari 25. Sinyal stop loss dihasilkan ketika DI + di atas DI + dan ADX lebih tinggi dari 30.
Menghitung DI+, DI- dan ADX
Menghitung Indeks Moving Average EMA
Sinyal perdagangan dihasilkan
Stop loss transaksi
Secara keseluruhan, strategi ini mengintegrasikan indikator pergerakan dan indikator tren, menghasilkan sinyal perdagangan ketika harga cenderung kuat.
Hal ini dapat dioptimalkan dengan memperluas stop loss, menyesuaikan kombinasi parameter, atau menambahkan kondisi penyaringan tambahan untuk meningkatkan frekuensi perdagangan.
Strategi ini mengintegrasikan indikator momentum dengan indikator analisis tren untuk menghasilkan sinyal perdagangan ketika harga cenderung kuat. Mengatur risiko pengendalian kondisi stop loss yang ketat. Efektivitas strategi dapat ditingkatkan lebih lanjut dengan mengoptimalkan parameter, menambahkan filter sinyal, dan memperluas stop loss dengan tepat.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Tamil_FNO_Trader
//@version=5
strategy("Overlay Signals by TFOT", overlay=true)
// Calculate DMI
len = input.int(14, minval=1, title="DI Length")
lensig = input.int(14, title="ADX Smoothing", minval=1, maxval=50)
[diplus, diminus, adx] = ta.dmi(len, lensig)
// Get EMA
emalen = input.int(26, minval=1, title = "EMA Length")
emasrc = input.source(close, title = "EMA Source")
my_ema(src, length) =>
alpha = 2 / (length + 1)
sum = 0.0
sum := na(sum[1]) ? src : alpha * src + (1 - alpha) * nz(sum[1])
EMA2 = my_ema(emasrc, emalen)
// Variables
var bool buycondition1 = false
var bool sellcondition1 = false
var int firstbuybar = na
var int firstsellbar = na
var int buyexitbar = na
var int sellexitbar = na
var bool buyexit1 = false
var bool sellexit1 = false
// Buy & Sell Conditions
buycondition1 := (ta.crossover(diplus, diminus)) and (adx > 20) and (close > EMA2) and na(firstbuybar)
sellcondition1 := (ta.crossover(diminus, diplus)) and (adx > 25) and (close < EMA2) and na(firstsellbar)
buyexit1 := ta.crossover(diminus, diplus) and (adx > 30) and na(buyexitbar)
sellexit1 := ta.crossover(diplus, diminus) and (adx > 30) and na(sellexitbar)
if buycondition1
if(na(firstbuybar))
firstbuybar := bar_index
buyexitbar := na
firstsellbar := na
strategy.entry("Buy", strategy.long)
if sellcondition1
if(na(firstsellbar))
firstsellbar := bar_index
sellexitbar := na
firstbuybar := na
strategy.entry("Sell", strategy.short)
if buyexit1 and not na(firstbuybar)
if(na(buyexitbar))
buyexitbar := bar_index
firstbuybar := na
firstsellbar := na
strategy.close("Buy")
if sellexit1 and not na(firstsellbar)
if(na(sellexitbar))
sellexitbar := bar_index
firstsellbar := na
firstbuybar := na
strategy.close("Sell")
// Plot signals on chart
hl = input.bool(defval = true, title = "Signal Labels")
plotshape(hl and buycondition1 and bar_index == firstbuybar ? true : na, "Buy", style = shape.labelup, location = location.belowbar, color = color.green, text = "Buy", textcolor = color.white, size = size.tiny)
plotshape(hl and sellcondition1 and bar_index == firstsellbar ? true : na, "Sell", style = shape.labeldown, location = location.abovebar, color = color.red, text = "Sell", textcolor = color.white, size = size.tiny)
plotshape(hl and buyexit1 and bar_index == buyexitbar ? true : na, "Buy Exit", style = shape.labelup, location = location.belowbar, color = color.red, text = "Buy X", textcolor = color.white, size = size.tiny)
plotshape(hl and sellexit1 and bar_index == sellexitbar ? true : na, "Sell Exit", style = shape.labeldown, location = location.abovebar, color = color.red, text = "Sell X", textcolor = color.white, size = size.tiny)