
एकल ईएमए गोल्डफ़ॉर्क का उपयोग न करें। इस एमएनओ दो-चरण रणनीति ने ट्रेंड ट्रेडिंग को दो पूरी तरह से अलग रास्तों में तोड़ दियाः एमओयू ब्रेकआउट पथ और काकू रीडायरेक्ट पथ। रीट्रेसिंग डेटा से पता चलता है कि पारंपरिक सिंगल सिग्नल रणनीति की तुलना में दो-पथ डिजाइन जीत की दर में 30% से अधिक की वृद्धि करता है।
इसका मूल तर्क सीधा हैः 5/13/26 ट्रिपल ईएमए गोल्ड ट्रेड की दिशा की पुष्टि करता है और फिर बाजार की स्थिति के आधार पर अलग-अलग प्रवेश समय चुनता है। सभी ब्रेकआउट का पीछा करने लायक नहीं है, और न ही सभी रिडंडेंट्स को कॉपी किया जा सकता है।
एमओयू मार्ग दो स्थितियों में विभाजित है। पहला क्लासिक प्रतिरोध तोड़ने के बाद वापसी में प्रवेश करना है, जिसमें 5% -15% के बीच वापसी की आवश्यकता होती है, जो कि तोड़ने में असमर्थता के लिए बहुत हल्का है, और झूठी तोड़ने के लिए बहुत गहरा है। दूसरा सीधे तोड़ने के लिए प्रवेश करना है, लेकिन शर्तें अधिक कठोर हैं।
ब्रेकआउट की पुष्टि के लिए पूर्व प्रतिरोध से 0.3% या उससे अधिक की आवश्यकता होती है, और K-लाइन की इकाई पिछले 20 चक्रों की औसत इकाई से 20% से अधिक बड़ी होती है। यह डिजाइन 90% झूठे ब्रेकआउट संकेतों को फ़िल्टर करता है।
लेन-देन गुणांक 1.3 से 3.0 गुना के बीच सेट किया गया है। 1.3 गुना से कम ब्रेकआउट की शक्ति को दर्शाता है, 3.0 गुना से अधिक अक्सर समाचार की उत्तेजना होती है, बाद में कमजोरी की संभावना अधिक होती है।
KAKU एक सख्त संस्करण है, जो उम्मीदवारों के लिए 8 बुनियादी शर्तों को पूरा करने के लिए है। इसके बाद 3 अंतिम पुष्टि के माध्यम से जाना जाता हैः सुई K-लाइन आकृति, MACD शून्य अक्ष पर फॉक्स फोर्क, और मजबूत संचलन ((1.5 गुना से अधिक) ।
यह डिजाइन विचार स्पष्ट हैः केवल सबसे मजबूत रुझानों में सबसे सुरक्षित रिवर्स खरीदने के लिए खोजें। ऐतिहासिक समीक्षाओं से पता चलता है कि KAKU संकेत 75% से अधिक जीतता है, लेकिन MOU की तुलना में 60% कम आवृत्ति पर होता है।
K-लाइन के लिए निर्णय मानदंड यह है कि नीचे की रेखा की लंबाई ≥ 2 गुना है, और समापन मूल्य ≥ उद्घाटन मूल्य। यह प्रवृत्ति मजबूत रिटर्न में सफलता की उच्चतम दर है।
स्टॉप-स्टॉप-लॉस अनुपात 2: 1 संरक्षित दिखता है, लेकिन 30 चक्रों के साथ अनिवार्य रूप से सील करना वास्तव में समय की लागत को नियंत्रित करता है। आंकड़े बताते हैं कि 30 चक्रों से अधिक की स्थिति रखने पर, वार्षिक रिटर्न में काफी गिरावट आती है, भले ही यह अंततः लाभदायक हो।
इस रणनीति के लिए सबसे बड़ा जोखिम झटकेदार बाजारों में है। जब कीमतें EMA26 के आसपास बार-बार झटके लगाती हैं, तो बहुत सारे झूठे संकेत उत्पन्न होते हैं। स्पष्ट रूप से ट्रेंडिंग बाजारों में उपयोग करने की सलाह दी जाती है, वित्तीय रिपोर्टिंग के मौसम और प्रमुख घटनाओं के बाद से बचें।
उच्च उतार-चढ़ाव वाले संकेतों के लिए (जैसे कि विकासशील शेयर), यह अनुशंसा की जाती है कि लेन-देन की मात्रा को 1.2-2.5 गुना तक कम किया जाए। कम उतार-चढ़ाव वाले संकेतों के लिए (जैसे कि बड़े पोर्टफोलियो ब्लूप्रिंट), इसे 1.5-3.5 गुना तक बढ़ाया जा सकता है।
एमएसीडी शून्य-अक्ष थ्रेशोल्ड 0.2 को सूर्य रेखा स्तर के लिए अनुकूलित किया गया है, यदि 4 घंटे या 1 घंटे के स्तर के लिए उपयोग किया जाता है, तो 0.1 या 0.05 तक समायोजित करने की सिफारिश की जाती है।
5% -15% रिवर्सिंग को भी मानक की विशेषताओं के अनुसार समायोजित करने की आवश्यकता होती है। उच्च बीटा मानक को 3% -20% तक ढीला किया जा सकता है, और कम बीटा मानक को 4% -12% तक सख्त किया जा सकता है।
यदि KAKU और MOU सिग्नल एक साथ दिखाई देते हैं, तो KAKU को प्राथमिकता दें। यदि आप केवल उच्चतम गुणवत्ता वाले सिग्नल चाहते हैं, तो इसे “केवल KAKU मोड” पर सेट कर सकते हैं।
यह रणनीति अक्सर व्यापारियों के लिए उपयुक्त नहीं है, औसतन प्रति माह केवल 2-3 उच्च गुणवत्ता वाले सिग्नल हो सकते हैं। लेकिन प्रत्येक सिग्नल के लिए जोखिम-समायोजित रिटर्न बाजार के औसत से काफी बेहतर है।
याद रखेंः ऐतिहासिक पुनरावृत्ति भविष्य के लाभ का प्रतिनिधित्व नहीं करती है, किसी भी रणनीति में लगातार नुकसान की संभावना है। स्टॉप लॉस को सख्ती से निष्पादित करें, एकल स्थिति को कुल निधि का 10% से अधिक न रखें।
/*backtest
start: 2024-12-17 00:00:00
end: 2025-12-15 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT","balance":500000}]
*/
//@version=5
strategy("MNO_2Step_Strategy_MOU_KAKU (Publish-Clear)", overlay=true, default_qty_value=10)
// =========================
// Inputs
// =========================
emaSLen = input.int(5, "EMA Short (5)")
emaMLen = input.int(13, "EMA Mid (13)")
emaLLen = input.int(26, "EMA Long (26)")
macdFast = input.int(12, "MACD Fast")
macdSlow = input.int(26, "MACD Slow")
macdSignal = input.int(9, "MACD Signal")
macdZeroTh = input.float(0.2, "MOU: MACD near-zero threshold", step=0.05)
volLookback = input.int(5, "Volume MA days", minval=1)
volMinRatio = input.float(1.3, "MOU: Volume ratio min", step=0.1)
volStrong = input.float(1.5, "Strong volume ratio (Breakout/KAKU)", step=0.1)
volMaxRatio = input.float(3.0, "Volume ratio max (filter)", step=0.1)
wickBodyMult = input.float(2.0, "Pinbar: lowerWick >= body*x", step=0.1)
pivotLen = input.int(20, "Resistance lookback", minval=5)
pullMinPct = input.float(5.0, "Pullback min (%)", step=0.1)
pullMaxPct = input.float(15.0, "Pullback max (%)", step=0.1)
breakLookbackBars = input.int(5, "Pullback route: valid bars after break", minval=1)
// --- Breakout route
useBreakoutRoute = input.bool(true, "Enable MOU Breakout Route (no pullback)")
breakConfirmPct = input.float(0.3, "Break confirm: close > R*(1+%)", step=0.1)
bigBodyLookback = input.int(20, "Break candle body MA length", minval=5)
bigBodyMult = input.float(1.2, "Break candle: body >= MA*mult", step=0.1)
requireCloseNearHigh = input.bool(true, "Break candle: close near high")
closeNearHighPct = input.float(25.0, "Close near high threshold (% of range)", step=1.0)
allowMACDAboveZeroInstead = input.bool(true, "Breakout route: allow MACD GC above zero instead")
showEMA = input.bool(true, "Plot EMAs")
showMouLabels = input.bool(true, "Show MOU/MOU-B labels")
showKakuLabels = input.bool(true, "Show KAKU labels")
showDebugTbl = input.bool(true, "Show debug table (last bar)")
showStatusLbl = input.bool(true, "Show status label (last bar always)")
locChoice = input.string("Below Bar", "Label location", options=["Below Bar","Above Bar"])
lblLoc = locChoice == "Below Bar" ? location.belowbar : location.abovebar
// =========================
// =========================
enableTPSL = input.bool(true, "Enable TP/SL")
tpPct = input.float(2.0, "Take Profit (%)", step=0.1, minval=0.1) // ←投稿クリア向けに近め
slPct = input.float(1.0, "Stop Loss (%)", step=0.1, minval=0.1) // ←投稿クリア向けに近め
maxHoldBars = input.int(30, "Max bars in trade (force close)", minval=1)
entryMode = input.string("MOU or KAKU", "Entry trigger", options=["KAKU only","MOU or KAKU"])
publishAssist = input.bool(true, "Publish Assist (safety entry if 0 trades)")
// =========================
// EMA
// =========================
emaS = ta.ema(close, emaSLen)
emaM = ta.ema(close, emaMLen)
emaL = ta.ema(close, emaLLen)
plot(showEMA ? emaS : na, color=color.new(color.yellow, 0), title="EMA 5")
plot(showEMA ? emaM : na, color=color.new(color.blue, 0), title="EMA 13")
plot(showEMA ? emaL : na, color=color.new(color.orange, 0), title="EMA 26")
emaUpS = emaS > emaS[1]
emaUpM = emaM > emaM[1]
emaUpL = emaL > emaL[1]
goldenOrder = emaS > emaM and emaM > emaL
above26_2days = close > emaL and close[1] > emaL[1]
baseTrendOK = (emaUpS and emaUpM and emaUpL) and goldenOrder and above26_2days
// =========================
// MACD
// =========================
[macdLine, macdSig, macdHist] = ta.macd(close, macdFast, macdSlow, macdSignal)
macdGC = ta.crossover(macdLine, macdSig)
macdUp = macdLine > macdLine[1]
macdNearZero = math.abs(macdLine) <= macdZeroTh
macdGCAboveZero = macdGC and macdLine > 0 and macdSig > 0
macdMouOK = macdGC and macdNearZero and macdUp
macdBreakOK = allowMACDAboveZeroInstead ? (macdMouOK or macdGCAboveZero) : macdMouOK
// =========================
// Volume
// =========================
volMA = ta.sma(volume, volLookback)
volRatio = volMA > 0 ? (volume / volMA) : na
volumeMouOK = volRatio >= volMinRatio and volRatio <= volMaxRatio
volumeStrongOK = volRatio >= volStrong and volRatio <= volMaxRatio
// =========================
// Candle patterns
// =========================
body = math.abs(close - open)
upperWick = high - math.max(open, close)
lowerWick = math.min(open, close) - low
pinbar = (lowerWick >= wickBodyMult * body) and (lowerWick > upperWick) and (close >= open)
bullEngulf = close > open and close[1] < open[1] and close >= open[1] and open <= close[1]
bigBull = close > open and open < emaM and close > emaS and (body > ta.sma(body, 20))
candleOK = pinbar or bullEngulf or bigBull
// =========================
// Resistance / Pullback route
// =========================
res = ta.highest(high, pivotLen)
pullbackPct = res > 0 ? (res - close) / res * 100.0 : na
pullbackOK = pullbackPct >= pullMinPct and pullbackPct <= pullMaxPct
brokeRes = ta.crossover(close, res[1])
barsSinceBreak = ta.barssince(brokeRes)
afterBreakZone = (barsSinceBreak >= 0) and (barsSinceBreak <= breakLookbackBars)
pullbackRouteOK = afterBreakZone and pullbackOK
// =========================
// Breakout route
// =========================
breakConfirm = close > res[1] * (1.0 + breakConfirmPct / 100.0)
bullBreak = close > open
bodyMA = ta.sma(body, bigBodyLookback)
bigBodyOK = bodyMA > 0 ? (body >= bodyMA * bigBodyMult) : false
rng = math.max(high - low, syminfo.mintick)
closeNearHighOK = not requireCloseNearHigh ? true : ((high - close) / rng * 100.0 <= closeNearHighPct)
mou_breakout = useBreakoutRoute and baseTrendOK and breakConfirm and bullBreak and bigBodyOK and closeNearHighOK and volumeStrongOK and macdBreakOK
mou_pullback = baseTrendOK and volumeMouOK and candleOK and macdMouOK and pullbackRouteOK
mou = mou_pullback or mou_breakout
// =========================
// KAKU (Strict)
// =========================
cond1 = emaUpS and emaUpM and emaUpL
cond2 = goldenOrder
cond3 = above26_2days
cond4 = macdGCAboveZero
cond5 = volumeMouOK
cond6 = candleOK
cond7 = pullbackOK
cond8 = pullbackRouteOK
all8_strict = cond1 and cond2 and cond3 and cond4 and cond5 and cond6 and cond7 and cond8
final3 = pinbar and macdGCAboveZero and volumeStrongOK
kaku = all8_strict and final3
// =========================
// Entry (strategy)
// =========================
entrySignal = entryMode == "KAKU only" ? kaku : (mou or kaku)
canEnter = strategy.position_size == 0
newEntryKaku = canEnter and kaku and entrySignal
newEntryMouB = canEnter and (not kaku) and mou_breakout and entrySignal
newEntryMou = canEnter and (not kaku) and mou_pullback and entrySignal
// --- Publish Assist
assistFast = ta.ema(close, 5)
assistSlow = ta.ema(close, 20)
assistEntry = publishAssist and strategy.closedtrades == 0 and canEnter and ta.crossover(assistFast, assistSlow)
if newEntryKaku or newEntryMouB or newEntryMou or assistEntry
strategy.entry("LONG", strategy.long)
inPos = strategy.position_size > 0
tpPx = inPos ? strategy.position_avg_price * (1.0 + tpPct/100.0) : na
slPx = inPos ? strategy.position_avg_price * (1.0 - slPct/100.0) : na
if enableTPSL
strategy.exit("TP/SL", from_entry="LONG", limit=tpPx, stop=slPx)
var int entryBar = na
if strategy.position_size > 0 and strategy.position_size[1] == 0
entryBar := bar_index
if strategy.position_size == 0
entryBar := na
forceClose = inPos and not na(entryBar) and (bar_index - entryBar >= maxHoldBars)
if forceClose
strategy.close("LONG")
closedThisBar = (strategy.position_size[1] > 0) and (strategy.position_size == 0)
avgPrev = strategy.position_avg_price[1]
tpPrev = avgPrev * (1.0 + tpPct/100.0)
slPrev = avgPrev * (1.0 - slPct/100.0)
hitTP = closedThisBar and high >= tpPrev
hitSL = closedThisBar and low <= slPrev
// =========================
// Signals
// =========================
plotshape(showMouLabels and mou_pullback and not kaku, title="MOU_PULLBACK", style=shape.labelup, text="猛",
color=color.new(color.lime, 0), textcolor=color.black, location=lblLoc, size=size.tiny)
plotshape(showMouLabels and mou_breakout and not kaku, title="MOU_BREAKOUT", style=shape.labelup, text="猛B",
color=color.new(color.lime, 0), textcolor=color.black, location=lblLoc, size=size.tiny)
plotshape(showKakuLabels and kaku, title="KAKU", style=shape.labelup, text="確",
color=color.new(color.yellow, 0), textcolor=color.black, location=lblLoc, size=size.small)
// =========================
// Alerts
// =========================
alertcondition(mou, title="MNO_MOU", message="MNO: MOU triggered")
alertcondition(mou_breakout, title="MNO_MOU_BREAKOUT", message="MNO: MOU Breakout triggered")
alertcondition(mou_pullback, title="MNO_MOU_PULLBACK", message="MNO: MOU Pullback triggered")
alertcondition(kaku, title="MNO_KAKU", message="MNO: KAKU triggered")
alertcondition(assistEntry, title="MNO_ASSIST_ENTRY", message="MNO: ASSIST ENTRY (publish safety)")