
Strategi Sistem Garis Garis Dua Berjaya Berjaya adalah strategi analisis teknikal yang berdasarkan pada titik tinggi dan rendah pada purata bergerak indeks 32 kitaran ((EMA)). Gagasan utama strategi ini adalah untuk mengesahkan arah trend dengan mengenal pasti harga dengan titik persilangan 32 kitaran EMA dan bentuk “tanpa sentuhan” yang khusus, dan memasuki perdagangan setelah penembusan harga penting. Strategi ini direka khusus untuk jangka masa 5 minit, membolehkan pedagang menangkap peluang yang dibawa oleh perubahan trend jangka pendek melalui syarat masuk yang ketat dan peraturan keluar yang jelas.
Strategi ini beroperasi berdasarkan beberapa langkah penting berikut:
Logik utama strategi ini adalah bahawa ia tidak hanya memerlukan harga untuk bersalin dengan EMA, tetapi juga perlu memfilter isyarat palsu melalui “bumbung tanpa sentuhan” dan pengesahan terobosan untuk meningkatkan ketepatan perdagangan. Mekanisme pengesahan berganda ini berkesan mengurangkan risiko masuk salah dalam pasaran yang disusun.
Dengan analisis kod yang mendalam, strategi ini mempunyai kelebihan yang ketara:
Walaupun strategi ini direka dengan baik, terdapat risiko yang berpotensi:
Berdasarkan analisis kod, berikut adalah beberapa arah utama di mana strategi ini boleh dioptimumkan:
Arahan pengoptimuman ini bertujuan untuk meningkatkan ketangguhan dan adaptasi strategi dan mengurangkan kerugian dalam keadaan pasaran yang tidak menguntungkan.
Strategi Sistem Dua Garis Persamaan Berjatuhan adalah sistem perdagangan analisis teknikal yang dirancang dengan baik untuk mengenal pasti peluang perdagangan berkemungkinan tinggi melalui pelbagai mekanisme seperti 32 EMA, harga silang, tiub tanpa sentuhan dan pengesahan terobosan. Strategi ini berfungsi dengan baik di pasaran yang jelas trend, dengan pengesahan masuk yang ketat dan peraturan keluar yang jelas, secara berkesan mengurangkan risiko masuk yang salah.
Walau bagaimanapun, strategi perdagangan apa pun mempunyai batasan, dan ia mungkin menghadapi cabaran dalam pasaran yang berlainan arah atau yang bergelombang tinggi. Strategi ini dapat meningkatkan lagi kestabilan dan kesesuaian dengan memperkenalkan langkah-langkah pengoptimuman seperti penapisan kekuatan trend, penyesuaian parameter dinamik, analisis pelbagai bingkai masa.
Sebagai sistem perdagangan garis pendek dalam jangka masa 5 minit, strategi ini sangat sesuai untuk peniaga hari dan peniaga garis pendek. Akhirnya, pengurusan risiko yang baik sentiasa menjadi kunci untuk berjaya menerapkan strategi perdagangan apa pun.
/*backtest
start: 2024-03-26 00:00:00
end: 2025-03-25 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/
//@version=5
strategy("TrophyFighter 32 EMA HL", overlay=true)
// 32 EMA for high and low
ema_high_32 = ta.ema(high, 32)
ema_low_32 = ta.ema(low, 32)
// Detect crossover and crossunder
cross_above_high_ema = ta.crossover(close, ema_high_32)
cross_below_low_ema = ta.crossunder(close, ema_low_32)
// Identify no-touch candles
no_touch_green = close > open and low > ema_high_32
no_touch_red = close < open and high < ema_low_32
// Track the high and low of no-touch candles
var float first_green_high = na
var float first_red_low = na
var bool waiting_for_long = false
var bool waiting_for_short = false
var bool in_long_trade = false // Whether a long trade is active
var bool in_short_trade = false // Whether a short trade is active
var bool first_no_touch_green_shown = false // First green diamond shown
var bool first_no_touch_red_shown = false // First red diamond shown
if (cross_above_high_ema and not in_long_trade and not in_short_trade)
first_green_high := na
waiting_for_long := true
first_no_touch_green_shown := false // Reset
if (cross_below_low_ema and not in_long_trade and not in_short_trade)
first_red_low := na
waiting_for_short := true
first_no_touch_red_shown := false // Reset
if (no_touch_green and waiting_for_long and ta.valuewhen(cross_above_high_ema, bar_index, 0) > ta.valuewhen(no_touch_green, bar_index, 1))
first_green_high := high
first_no_touch_green_shown := true // Set first green diamond
if (no_touch_red and waiting_for_short and ta.valuewhen(cross_below_low_ema, bar_index, 0) > ta.valuewhen(no_touch_red, bar_index, 1))
first_red_low := low
first_no_touch_red_shown := true // Set first red diamond
// Identify breakout (on the previous candle) - using na() function
long_breakout_check = high > ta.valuewhen(not na(first_green_high), first_green_high, 0) and not na(first_green_high) and waiting_for_long
short_breakout_check = low < ta.valuewhen(not na(first_red_low), first_red_low, 0) and not na(first_red_low) and waiting_for_short
// Buy and sell conditions (on the next same-colored candle)
long_condition = long_breakout_check[1] and close > open and not in_long_trade and not in_short_trade // Next green candle
short_condition = short_breakout_check[1] and close < open and not in_long_trade and not in_short_trade // Next red candle
// Breakout check (only on the signal candle)
long_breakout = long_condition // Blue square only for signal
short_breakout = short_condition // White square only for signal
// Signal for the first no-touch candle
first_no_touch_green = no_touch_green and not first_no_touch_green_shown and waiting_for_long and ta.valuewhen(cross_above_high_ema, bar_index, 0) > ta.valuewhen(no_touch_green, bar_index, 1)
first_no_touch_red = no_touch_red and not first_no_touch_red_shown and waiting_for_short and ta.valuewhen(cross_below_low_ema, bar_index, 0) > ta.valuewhen(no_touch_red, bar_index, 1)
// When a trade starts
if (long_condition)
waiting_for_long := false
in_long_trade := true // Start long trade
if (short_condition)
waiting_for_short := false
in_short_trade := true // Start short trade
// New exit rules
long_exit = close < ema_low_32 and in_long_trade // Price drops below EMA low
short_exit = close > ema_high_32 and in_short_trade // Price rises above EMA high
// Reset when trade closes
if (long_exit)
in_long_trade := false
if (short_exit)
in_short_trade := false
// Plot EMA and levels (cross style)
plot(ema_high_32, color=color.green, title="EMA High 32")
plot(ema_low_32, color=color.red, title="EMA Low 32")
plot(first_green_high, color=color.yellow, style=plot.style_cross, linewidth=1, title="First Green High")
plot(first_red_low, color=color.orange, style=plot.style_cross, linewidth=1, title="First Red Low")
// Debugging signals
plotshape(cross_above_high_ema, title="Cross Above EMA", location=location.belowbar, color=color.yellow, style=shape.circle, size=size.tiny)
plotshape(cross_below_low_ema, title="Cross Below EMA", location=location.abovebar, color=color.orange, style=shape.circle, size=size.tiny)
plotshape(first_no_touch_green, title="No Touch Green", location=location.belowbar, color=color.lime, style=shape.diamond, size=size.tiny)
plotshape(first_no_touch_red, title="No Touch Red", location=location.abovebar, color=color.purple, style=shape.diamond, size=size.tiny)
plotshape(long_breakout, title="Long Breakout", location=location.belowbar, color=color.blue, style=shape.square, size=size.tiny)
plotshape(short_breakout, title="Short Breakout", location=location.abovebar, color=color.white, style=shape.square, size=size.tiny)
plotshape(long_condition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small)
plotshape(short_condition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)
// Execute trades
if (long_condition)
strategy.entry("Long", strategy.long)
if (short_condition)
strategy.entry("Short", strategy.short)
if (long_exit)
strategy.close("Long", comment="Long Exit")
if (short_exit)
strategy.close("Short", comment="Short Exit")