মাল্টি-পিরিয়ড ফ্র্যাক্টাল ব্রেকআউট অর্ডার ব্লক অ্যাডাপটিভ ট্রেডিং কৌশল

OB SD MA ATR
সৃষ্টির তারিখ: 2024-12-27 15:49:16 অবশেষে সংশোধন করুন: 2024-12-27 15:49:16
অনুলিপি: 8 ক্লিকের সংখ্যা: 479
1
ফোকাস
1617
অনুসারী

মাল্টি-পিরিয়ড ফ্র্যাক্টাল ব্রেকআউট অর্ডার ব্লক অ্যাডাপটিভ ট্রেডিং কৌশল

ওভারভিউ

কৌশলটি ফ্র্যাক্টাল তত্ত্ব এবং অর্ডার ব্লক বিশ্লেষণের উপর ভিত্তি করে একটি অভিযোজিত ট্রেডিং সিস্টেম। এটি ফ্র্যাক্টাল ব্রেকআউট সিগন্যাল এবং অর্ডার ব্লক নিশ্চিতকরণের সাথে মিলিত বাজারের কাঠামোর মূল সমর্থন এবং প্রতিরোধের স্তরগুলি সনাক্ত করে উচ্চ-সম্ভাব্যতা ট্রেডিং সুযোগগুলি ক্যাপচার করে। কৌশলটি বাজারের টার্নিং পয়েন্টের সুনির্দিষ্ট অবস্থান এবং ট্রেডিংয়ের সঠিক সময় অর্জনের জন্য ফ্র্যাক্টাল সূচক, গতিশীল অর্ডার ব্লক এবং মূল্য ব্রেকথ্রু নিশ্চিতকরণ সিস্টেম সহ একাধিক প্রযুক্তিগত সূচককে একীভূত করে।

কৌশল নীতি

কৌশলটির মূল যুক্তি তিনটি প্রধান স্তম্ভের উপর নির্মিত: প্রথমত, সম্ভাব্য প্রবণতা বাঁকানো ক্ষেত্রগুলি চিহ্নিত করতে ফ্র্যাক্টাল ক্যালকুলেশন মডিউলের মাধ্যমে বাজারের উচ্চতা এবং নিম্নের ক্রমাগত নিরীক্ষণ, দ্বিতীয়ত, মূল মূল্য স্তরে সরবরাহ এবং চাহিদার ক্ষেত্রগুলি স্থাপনের মাধ্যমে; ; এবং অবশেষে, ব্রেকথ্রু নিশ্চিতকরণ সিস্টেমের মাধ্যমে মূল্য সাফল্যের কার্যকারিতা যাচাই করা। যখন দাম উপরের ফ্র্যাক্টালের মধ্য দিয়ে ভেঙ্গে যায় এবং বৈধ বলে নিশ্চিত করা হয়, তখন সিস্টেমটি নিকটতম লাল মোমবাতি এলাকায় একটি ডিমান্ড জোন অর্ডার ব্লক তৈরি করবে এবং একটি দীর্ঘ অর্ডার খুলবে যখন দাম নিম্ন ফ্র্যাক্টালের মাধ্যমে ভেঙ্গে যায় এবং বৈধ বলে নিশ্চিত করা হয় , সিস্টেম নিকটতম সবুজ মোমবাতি এলাকায় একটি সরবরাহ জোন তৈরি করবে অর্ডার ব্লক এবং একটি ছোট অর্ডার খুলবে। কৌশলটিতে অর্ডার ব্লকের রঙ গতিশীলভাবে আপডেট করার ফাংশনও রয়েছে, যা মূল্য এবং অর্ডার ব্লকের মধ্যে আপেক্ষিক অবস্থানের সম্পর্ক দৃশ্যমানভাবে প্রদর্শন করতে ব্যবহৃত হয়।

কৌশলগত সুবিধা

  1. দৃঢ় অভিযোজনযোগ্যতা: কৌশলটি বাজারের অবস্থা অনুযায়ী অর্ডার ব্লকের অবস্থান এবং আকার গতিশীলভাবে সামঞ্জস্য করতে পারে এবং বিভিন্ন বাজারের পরিবেশের সাথে খাপ খাইয়ে নিতে পারে।
  2. একাধিক নিশ্চিতকরণ প্রক্রিয়া: মিথ্যা সংকেতের ঝুঁকি কমাতে ফ্র্যাক্টাল ব্রেকআউট, অর্ডার ব্লক নিশ্চিতকরণ এবং মূল্য কর্ম বিশ্লেষণকে একত্রিত করে।
  3. উন্নত ঝুঁকি ব্যবস্থাপনা: পরিষ্কার ভিজ্যুয়াল ফিডব্যাক এবং স্ট্যাটাস চেকলিস্ট ট্রেডারদের রিয়েল টাইমে কৌশলগুলির চলমান অবস্থা নিরীক্ষণ করতে সাহায্য করে।
  4. চমৎকার ভিজ্যুয়ালাইজেশন: ফ্র্যাক্টাল মার্কার, অর্ডার ব্লক ডিসপ্লে এবং স্ট্যাটাস চেকলিস্ট সহ একটি স্বজ্ঞাত গ্রাফিক্যাল ইন্টারফেস প্রদান করে।
  5. নমনীয় এবং সামঞ্জস্যযোগ্য পরামিতি: ব্যবহারকারীদের তাদের ব্যক্তিগত ট্রেডিং শৈলী অনুসারে ফ্র্যাক্টাল চক্র এবং যুগান্তকারী প্রকারের মতো মূল পরামিতিগুলি সামঞ্জস্য করার অনুমতি দিন।

কৌশলগত ঝুঁকি

  1. বাজারের অস্থিরতার ঝুঁকি: অত্যন্ত অস্থির বাজারে মিথ্যা যুগান্তকারী সংকেত তৈরি হতে পারে, অতিরিক্ত ফিল্টারিং প্রক্রিয়া প্রয়োজন।
  2. স্লিপেজ ঝুঁকি: অপর্যাপ্ত তারল্য সহ একটি বাজার পরিবেশে, অর্ডার কার্যকর করার মূল্য আদর্শ প্রবেশ বিন্দু থেকে বিচ্যুত হতে পারে।
  3. প্রবণতা নির্ভরতা: কৌশলটি প্রবণতা বাজারের মতো পার্শ্ববর্তী বাজারে তেমন ভাল কাজ নাও করতে পারে।
  4. প্যারামিটার সংবেদনশীলতা: বিভিন্ন ফ্র্যাক্টাল পিরিয়ড সেটিংস উল্লেখযোগ্যভাবে ভিন্ন ট্রেডিং ফলাফলের দিকে নিয়ে যেতে পারে।
  5. কম্পিউটিং রিসোর্স খরচ: জটিল ভিজ্যুয়ালাইজেশন ফাংশন এবং রিয়েল-টাইম গণনা সিস্টেম লোড বাড়াতে পারে।

অপ্টিমাইজেশান দিক

  1. উদ্বায়ীতা ফিল্টার প্রবর্তন: ATR বা অন্যান্য উদ্বায়ীতা সূচকের মাধ্যমে ট্রেডিং সংকেত অপ্টিমাইজ করুন।
  2. প্রবণতা নিশ্চিতকরণ প্রক্রিয়া যোগ করুন: সংকেত নির্ভরযোগ্যতা উন্নত করতে চলমান গড় বা অন্যান্য প্রবণতা সূচকগুলির সাথে একত্রিত করুন।
  3. স্টপ লস মেকানিজম উন্নত করুন: অর্ডার ব্লক কাঠামোর উপর ভিত্তি করে একটি গতিশীল স্টপ লস কৌশল ডিজাইন করুন।
  4. অর্ডার ব্লকের আকার অপ্টিমাইজ করুন: বাজারের অস্থিরতার উপর ভিত্তি করে অর্ডার ব্লকের আকার গতিশীলভাবে সামঞ্জস্য করুন।
  5. ট্রেডিং ভলিউম বিশ্লেষণ যোগ করুন: সাফল্যের কার্যকারিতা যাচাই করতে ট্রেডিং ভলিউম ডেটা একত্রিত করুন।

সারসংক্ষেপ

এটি একটি যৌগিক ট্রেডিং কৌশল যা প্রযুক্তিগত বিশ্লেষণের একাধিক মাত্রাকে একত্রিত করে এটি একটি সম্পূর্ণ ট্রেডিং সিস্টেম তৈরির মূল হিসাবে ফ্র্যাক্টাল তত্ত্ব এবং অর্ডার ব্লক বিশ্লেষণ ব্যবহার করে। কৌশলটির সুবিধাটি এর অভিযোজনযোগ্যতা এবং একাধিক নিশ্চিতকরণ প্রক্রিয়ার মধ্যে রয়েছে, তবে একই সময়ে, কৌশল কর্মক্ষমতার উপর বাজারের পরিবেশের প্রভাবের দিকে মনোযোগ দিতে হবে। প্রস্তাবিত অপ্টিমাইজেশন দিকনির্দেশের মাধ্যমে, কৌশলটির নির্ভরযোগ্যতা এবং স্থিতিশীলতা আরও উন্নত হবে বলে আশা করা হচ্ছে।

কৌশল সোর্স কোড
/*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)