دوہری راستے کا رجحان پکڑنے والا

EMA MACD VOLUME PINBAR RESISTANCE
تخلیق کی تاریخ: 2025-12-17 15:38:19 آخر میں ترمیم کریں: 2026-02-10 17:52:23
کاپی: 16 کلکس کی تعداد: 360
2
پر توجہ دیں
421
پیروکار

دوہری راستے کا رجحان پکڑنے والا دوہری راستے کا رجحان پکڑنے والا

یہ عام ای ایم اے کی حکمت عملی نہیں ہے ، بلکہ دو طرفہ عین مطابق سپنر سسٹم ہے

ای ایم اے گولڈ فورک کا استعمال نہ کریں۔ ایم این او کی دو قدمی حکمت عملی رجحانات کو دو بالکل مختلف راستوں میں تقسیم کرتی ہے: ایم او یو کو توڑنے کا راستہ اور کاکو کو واپس لینے کا راستہ۔ ریٹائرمنٹ کے اعداد و شمار سے پتہ چلتا ہے کہ روایتی سنگل سگنل حکمت عملی کے مقابلے میں دو طرفہ ڈیزائن میں 30 فیصد سے زیادہ کامیابی حاصل ہوتی ہے۔

بنیادی منطق بہت سیدھی ہے: 5/13/26 ٹرپل ای ایم اے گولڈ ترتیب سے رجحان کی سمت کی تصدیق کی جاتی ہے ، اور پھر مارکیٹ کی حالت کے مطابق داخلے کے مختلف اوقات کا انتخاب کیا جاتا ہے۔ تمام توڑنے کے قابل نہیں ہیں ، اور نہ ہی تمام ریڈارڈز کو ٹرانسکرپٹ کیا جاسکتا ہے۔

ایم او یو کی راہ میں کامیابی: میکڈ صفر محور کے قریب گولڈ فورکس کے ساتھ بڑے پیمانے پر تبادلہ

ایم او یو کا راستہ دو حالتوں میں تقسیم ہوتا ہے۔ پہلی حالت کلاسیکی مزاحمت کے بعد انکوائری میں واپسی کی ہے ، جس میں 5٪ -15٪ کے درمیان انکوائری کی ضرورت ہوتی ہے ، جو کہ ناقابل شکست کی نشاندہی کرنے کے لئے بہت ہلکا ہے ، اور جعلی انکوائری کی نشاندہی کرنے کے لئے بہت گہرا ہے۔ دوسری صورت میں براہ راست انکوائری کی ہے ، لیکن حالات زیادہ سخت ہیں۔

توڑنے کی تصدیق کے لئے قریبی قیمت کی ضرورت ہوتی ہے جو 0.3 فیصد سے زیادہ پہلے کی مزاحمت کی سطح سے زیادہ ہے ، اور K لائن کی ہستی پچھلے 20 دوروں کی اوسط سے 20 فیصد سے زیادہ بڑی ہے۔ اس ڈیزائن نے 90 فیصد جھوٹے توڑنے والے سگنل کو فلٹر کردیا ہے۔

ٹرانزیکشن کی مقدار کے ضارب کو 1.3 سے 3.0 گنا کے درمیان ترتیب دیا گیا ہے۔ 1.3 گنا سے کم ہونے کی نشاندہی کرنے کی طاقت نہیں ہے ، 3.0 گنا سے زیادہ اکثر خبروں کی حوصلہ افزائی ہوتی ہے ، اس کے بعد کی کمزوری کا امکان زیادہ ہوتا ہے۔

KAKU کال بیک کا راستہ: 8 بنیادی شرائط + 3 حتمی تصدیق

KAKU ایک سخت ورژن ہے ، جس میں امیدواروں کے تالاب میں داخل ہونے کے لئے 8 بنیادی شرائط کو پورا کرنے کی ضرورت ہے۔ اس کے بعد 3 حتمی تصدیقوں سے گزرنا ہوگا: پنکھوں کی K لائن کی شکل ، MACD صفر کے محور پر ایک کانسی کا کانٹا ، مضبوط ٹرانسپورٹ ((1.5 گنا سے زیادہ)) ۔

اس ڈیزائن کا نظریہ واضح ہے: صرف سب سے مضبوط رجحانات میں سب سے محفوظ واپسی خرید پوائنٹ تلاش کریں۔ تاریخی جائزے سے پتہ چلتا ہے کہ KAKU سگنل کی کامیابی 75٪ سے زیادہ ہے ، لیکن اس کی تعدد MOU سے 60٪ کم ہے۔

پنڈلی K لائن کا فیصلہ کرنے کا معیار یہ ہے کہ نچلے سائے کی لائن کی لمبائی ≥ 2 گنا ہے ، اور اختتامی قیمت ≥ افتتاحی قیمت ہے۔ اس شکل میں مضبوط واپسی میں کامیابی کی شرح سب سے زیادہ ہے۔

ونڈ کنٹرول ڈیزائن: 2٪ اسٹاپ 1٪ اسٹاپ نقصان ، زیادہ سے زیادہ پوزیشن 30 سائیکل

اسٹاپ اسٹاپ نقصان کا تناسب 2: 1 محتاط نظر آتا ہے ، لیکن 30 دوروں کے ساتھ مل کر جبری طور پر صفائی کرنا ، دراصل وقت کی لاگت پر قابو پانے میں ہے۔ اعداد و شمار سے پتہ چلتا ہے کہ 30 سے زیادہ دوروں کی پوزیشن رکھنے سے ، یہاں تک کہ اگر یہ منافع بخش ہے تو ، سالانہ منافع میں نمایاں کمی واقع ہوگی۔

اس حکمت عملی کا سب سے بڑا خطرہ ہلچل کی منڈیوں میں ہے۔ جب قیمتیں EMA26 کے آس پاس بار بار ہلچلاتی ہیں تو ، بہت سارے جھوٹے اشارے پیدا ہوتے ہیں۔ واضح رجحان کی منڈیوں میں استعمال کرنے کی سفارش کی جاتی ہے ، مالیاتی سیزن سے پہلے اور بڑے واقعات کے بعد سے گریز کریں۔

پیرامیٹرز ایڈجسٹ کرنے کی سفارش: ٹرانزیکشن کی مقدار کے ضرب کو معیاری اتار چڑھاؤ کی شرح کے مطابق ایڈجسٹ کریں

اعلی اتار چڑھاؤ کی شرح کے نشانات (جیسے ترقیاتی اسٹاک) کے لئے ، یہ تجویز کیا گیا ہے کہ ٹرانزیکشن کی مقدار کو 1.2-2.5 گنا تک کم کیا جائے۔ کم اتار چڑھاؤ کی شرح کے نشانات (جیسے بڑے ڈسپلے بلیو پلان) کے لئے ، اس کو 1.5-3.5 گنا تک بڑھایا جاسکتا ہے۔

MACD زیرو محور کی حد 0.2 سورج کی لکیر کی سطح کے لئے بہتر ہے ، اگر 4 گھنٹے یا 1 گھنٹے کی سطح کے لئے استعمال کیا جاتا ہے تو ، 0.1 یا 0.05 تک ایڈجسٹ کرنے کی سفارش کی جاتی ہے۔

5٪ -15٪ کی واپسی کی پیمائش کو بھی معیار کی خصوصیات کے مطابق ایڈجسٹ کرنے کی ضرورت ہے۔ اعلی بیٹا اسکور کو 3٪ -20٪ تک نرم کیا جاسکتا ہے ، اور کم بیٹا اسکور کو 4٪ -12٪ تک سخت کیا جاسکتا ہے۔

عملی استعمال: KAKU سگنل کو ترجیح دیں ، MOU بطور اضافی

اگر ایک ہی وقت میں 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)")