
यह रणनीति फ्रैक्टल सिद्धांत और ऑर्डर ब्लॉक विश्लेषण पर आधारित एक अनुकूली व्यापार प्रणाली है। यह फ्रैक्टल ब्रेकआउट संकेतों और ऑर्डर ब्लॉक पुष्टियों के साथ मिलकर बाजार संरचना में प्रमुख समर्थन और प्रतिरोध स्तरों की पहचान करके उच्च-संभाव्यता वाले व्यापारिक अवसरों को पकड़ता है। यह रणनीति फ्रैक्टल संकेतकों, गतिशील ऑर्डर ब्लॉकों और मूल्य सफलता पुष्टि प्रणालियों सहित कई तकनीकी संकेतकों को एकीकृत करती है, ताकि बाजार के मोड़ बिंदुओं की सटीक स्थिति और ट्रेडिंग अवसरों की सटीक समझ हासिल की जा सके।
रणनीति का मूल तर्क तीन मुख्य स्तंभों पर आधारित है: पहला, संभावित प्रवृत्ति मोड़ क्षेत्रों की पहचान करने के लिए फ्रैक्टल गणना मॉड्यूल के माध्यम से बाजार के उच्च और निम्न स्तर की निरंतर निगरानी; दूसरा, ऑर्डर ब्लॉक विश्लेषण के माध्यम से, प्रमुख मूल्य स्तरों पर आपूर्ति और मांग क्षेत्रों की स्थापना करना ; और अंत में, ब्रेकआउट पुष्टिकरण प्रणाली के माध्यम से मूल्य सफलताओं की वैधता को सत्यापित करने के लिए। जब कीमत ऊपरी फ्रैक्टल से टूटती है और वैध होने की पुष्टि होती है, तो सिस्टम निकटतम लाल मोमबत्ती क्षेत्र में एक मांग क्षेत्र ऑर्डर ब्लॉक बनाएगा और एक लंबा ऑर्डर खोलेगा; जब कीमत निचले फ्रैक्टल से टूटती है और वैध होने की पुष्टि होती है , सिस्टम निकटतम हरे मोमबत्ती क्षेत्र ऑर्डर ब्लॉक में एक आपूर्ति क्षेत्र बनाएगा और एक छोटा ऑर्डर खोलेगा। इस रणनीति में ऑर्डर ब्लॉक रंग के लिए एक गतिशील अद्यतन फ़ंक्शन भी शामिल है, जिसका उपयोग मूल्य और ऑर्डर ब्लॉक के बीच सापेक्ष स्थिति संबंध को सहज रूप से प्रदर्शित करने के लिए किया जाता है।
यह एक जटिल ट्रेडिंग रणनीति है जो तकनीकी विश्लेषण के कई आयामों को एकीकृत करती है। यह फ्रैक्टल सिद्धांत और ऑर्डर ब्लॉक विश्लेषण को कोर के रूप में लेकर एक संपूर्ण ट्रेडिंग सिस्टम बनाता है। रणनीति के लाभ इसकी अनुकूलनशीलता और बहु पुष्टि तंत्र में निहित हैं, लेकिन साथ ही, हमें रणनीति के प्रदर्शन पर बाजार के माहौल के प्रभाव पर भी ध्यान देने की आवश्यकता है। अनुशंसित अनुकूलन निर्देशों के माध्यम से, रणनीति की विश्वसनीयता और स्थिरता में और सुधार होने की उम्मीद है।
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Supply and Demand - Order Block Strategy", format=format.price, precision=0, overlay=true)
// Input options for customization
changeColor = input(false, title="Change Box Colors?")
breakType = input.string("Wick+Body", title="Fractal Break Type:", options=["Wick+Body", "Body"])
n = input.int(title="Periods", defval=2, minval=1, tooltip="Number of periods for fractal lookback")
if n <= 0
runtime.error("Periods input must be greater than zero.")
transGreenClr = input.color(color.new(color.green, 80), title="Bg:", inline="a_1")
greenClr = input.color(color.new(color.green, 0), title="Border:", inline="a_1")
transRedClr = input.color(color.new(color.red, 80), title="Bg:", inline="b_1")
redClr = input.color(color.new(color.red, 0), title="Border:", inline="b_1")
// --- Fractal Calculation ---
upFractal = high[n] == ta.highest(high, 2 * n + 1)
downFractal = low[n] == ta.lowest(low, 2 * n + 1)
// --- End Fractal Calculation ---
var float topValue = na
var float bottomValue = na
var int lastRedIndex = na
var float lastRedLow = na
var float lastRedHigh = na
var int lastGreenIndex = na
var float lastGreenLow = na
var float lastGreenHigh = na
var line topLine = na
var line bottomLine = na
var box demandBox = na
var box supplyBox = na
var topBreakBlock = false
var bottomBreakBlock = false
var isLongBreak = false
var isShortBreak = false
topBreakCheckSource = breakType == "Wick+Body" ? high : close
bottomBreakCheckSource = breakType == "Wick+Body" ? low : close
// Last Red Check
if close < open
lastRedIndex := bar_index
lastRedLow := low
lastRedHigh := high
// Last Green Check
if close > open
lastGreenIndex := bar_index
lastGreenLow := low
lastGreenHigh := high
// Top break
if ta.crossover(topBreakCheckSource, topValue) and not topBreakBlock
topBreakBlock := true
isLongBreak := true
// line.set_x2(topLine, bar_index)
// demandBox := box.new(lastRedIndex - 1, lastRedHigh, lastRedIndex + 1, lastRedLow, bgcolor=transGreenClr, border_color=greenClr)
if strategy.position_size <= 0
strategy.entry("Long", strategy.long)
// Bottom break
if ta.crossunder(bottomBreakCheckSource, bottomValue) and not bottomBreakBlock
bottomBreakBlock := true
isShortBreak := true
// line.set_x2(bottomLine, bar_index)
// supplyBox := box.new(lastGreenIndex - 1, lastGreenHigh, lastGreenIndex + 1, lastGreenLow, bgcolor=transRedClr, border_color=redClr)
if strategy.position_size >= 0
strategy.entry("Short", strategy.short)
// New up fractal
if upFractal
topBreakBlock := false
isLongBreak := false
topValue := high[n]
// topLine := line.new(bar_index[n], topValue, bar_index, topValue, color=color.teal, style=line.style_dotted, width=2)
// if not isLongBreak[1]
// line.delete(topLine[1])
// New down fractal
if downFractal
bottomBreakBlock := false
isShortBreak := false
bottomValue := low[n]
// bottomLine := line.new(bar_index[n], bottomValue, bar_index, bottomValue, color=color.maroon, style=line.style_dotted, width=2)
// if not isShortBreak[1]
// line.delete(bottomLine[1])
// Box state update
// activeBoxes = box.all
// if array.size(activeBoxes) > 0 and changeColor
// for i = 0 to array.size(activeBoxes) - 1
// boxId = array.get(activeBoxes, i)
// bVal = box.get_bottom(boxId)
// tVal = box.get_top(boxId)
// if close < bVal
// box.set_bgcolor(boxId, transRedClr)
// box.set_border_color(boxId, redClr)
// if close > tVal
// box.set_bgcolor(boxId, transGreenClr)
// box.set_border_color(boxId, greenClr)
//PLOTS
plotshape(downFractal ,style=shape.triangleup, location=location.belowbar, offset=-n, color=color.new(color.gray,80), size = size.tiny)
plotshape(upFractal, style=shape.triangledown, location=location.abovebar, offset=-n, color=color.new(color.gray,80), size = size.tiny)
// --- Checklist Table ---
// var table checklistTable = table.new(position.bottom_right, 2, 8, bgcolor=color.new(color.gray, 80), border_width=1)
// if barstate.islast
// table.cell(checklistTable, 0, 0, "Condition", text_color=color.white, text_size=size.small, bgcolor=color.teal)
// table.cell(checklistTable, 1, 0, "Status", text_color=color.white, text_size=size.small, bgcolor=color.teal)
// table.cell(checklistTable, 0, 1, "Up Fractal", text_size=size.small)
// table.cell(checklistTable, 1, 1, upFractal ? "✅" : "❌", text_color=upFractal ? color.green : color.red, text_size=size.small)
// table.cell(checklistTable, 0, 2, "Down Fractal", text_size=size.small)
// table.cell(checklistTable, 1, 2, downFractal ? "✅" : "❌", text_color=downFractal ? color.green : color.red, text_size=size.small)
// table.cell(checklistTable, 0, 3, "Top Break", text_size=size.small)
// table.cell(checklistTable, 1, 3, isLongBreak ? "✅" : "❌", text_color=isLongBreak ? color.green : color.red, text_size=size.small)
// table.cell(checklistTable, 0, 4, "Bottom Break", text_size=size.small)
// table.cell(checklistTable, 1, 4, isShortBreak ? "✅" : "❌", text_color=isShortBreak ? color.green : color.red, text_size=size.small)
// table.cell(checklistTable, 0, 5, "Last Red Candle", text_size=size.small)
// table.cell(checklistTable, 1, 5, close < open ? "✅" : "❌", text_color=close < open ? color.green : color.red, text_size=size.small)
// table.cell(checklistTable, 0, 6, "Last Green Candle", text_size=size.small)
// table.cell(checklistTable, 1, 6, close > open ? "✅" : "❌", text_color=close > open ? color.green : color.red, text_size=size.small)
// table.cell(checklistTable, 0, 7, "Box Color Change Active", text_size=size.small)
// table.cell(checklistTable, 1, 7, changeColor ? "✅" : "❌", text_color=changeColor ? color.green : color.red, text_size=size.small)