কৌশলটি মূলত K-line এর উচ্চ এবং নিম্ন পয়েন্ট দ্বারা গঠিত বাক্সের বিরতি সনাক্ত করে বাজারটির দিক এবং শক্তি বিচার করতে। যখন একটি আপওয়ার্ড বক্স ব্রেকআউট থাকে, তখন কৌশলটি ব্রেকআউট পয়েন্টের চারপাশে একটি দীর্ঘ অবস্থান সেট করবে। যখন একটি ডাউনওয়ার্ড বক্স ব্রেকআউট থাকে, তখন কৌশলটি ব্রেকআউট পয়েন্টের চারপাশে একটি শর্ট অবস্থান সেট করবে। একবার একটি ট্রেডিং সিগন্যাল তৈরি হয়ে গেলে, কৌশলটি খোলা অবস্থানের অর্ডার দেবে এবং ঝুঁকি নিয়ন্ত্রণের জন্য স্টপ লস সেট করবে এবং লাভ নেবে।
কৌশলটি একটি ট্রেডিং সময়সীমা নির্ধারণ করে এবং কেবল সেই সময়ের মধ্যে ট্রেডিংয়ের সুযোগগুলি সন্ধান করে।
প্রতিটি কে-লাইন গঠনের পর, কৌশলটি মূল্যায়ন করে যে পূর্ববর্তী দুটি কে-লাইনের সর্বোচ্চ এবং সর্বনিম্ন মূল্যের মধ্যে উল্লেখযোগ্য অগ্রগতি আছে কিনা।
২.১ যদি ২য় কে-লাইনের সর্বনিম্ন মূল্য ১ম কে-লাইনের সর্বোচ্চ মূল্যের চেয়ে বেশি হয়, তাহলে একটি আপ বাউন্ড বক্স ব্রেকআউট ঘটে।
২.২ যদি ২য় কে-লাইনের সর্বোচ্চ মূল্য ১ম কে-লাইনের সর্বনিম্ন মূল্যের চেয়ে কম হয়, তাহলে নেমে যাওয়া বাক্সের ব্রেকআউট ঘটে।
বক্স ব্রেকআউট সিগন্যালটি নিশ্চিত করার পর, কৌশলটি বর্তমান কে-লাইনের সর্বোচ্চ বা সর্বনিম্ন মূল্যের আশেপাশে একটি দীর্ঘ বা সংক্ষিপ্ত প্রবেশ পয়েন্ট সেট করে।
একবার পজিশনটি খোলা হলে, কৌশলটি প্রবণতা ত্বরণকে ধরার জন্য ব্রেকআউট ব্যাপ্তির দ্বিগুণের ভিত্তিতে লাভ গ্রহণ করে।
এই কৌশলটি হ্রাস ঝুঁকি হ্রাস করার জন্য দ্বিতীয় কে-লাইনের সর্বনিম্ন বা সর্বোচ্চ মূল্যে স্টপ লস সেট করে।
এই কৌশলটির নিম্নলিখিত সুবিধা রয়েছে:
এর যুক্তি সহজ এবং বাস্তবায়ন করা সহজ।
বাজারের দিকনির্দেশনা এবং শক্তি বিচার করতে কে-লাইন বক্স ব্রেকআউট ব্যবহার করা উচ্চ নির্ভুলতা আছে।
ট্রেন্ড ত্বরণ থেকে লাভ নেওয়ার সুযোগ ধরা হয়।
একক ক্ষতি নিয়ন্ত্রণের জন্য একটি পরিষ্কার স্টপ লস লজিক রয়েছে।
কৌশল ধারণাটি নমনীয় এবং ব্যক্তিগত শৈলী অনুযায়ী কাস্টমাইজ করা যেতে পারে।
তবে, এই কৌশলটির কিছু ঝুঁকি রয়েছেঃ
ব্রেকআউট সিগন্যালগুলি মিথ্যা ব্রেকআউট হতে পারে, ক্ষতি সম্পূর্ণরূপে এড়ানো যায় না।
এন্ট্রি পয়েন্টের কাছাকাছি স্টপ লস সহজেই আক্রমণাত্মক বাজার দ্বারা ট্রিগার করা যেতে পারে।
এটি প্রবণতা কাঠামোর বিচার করতে পারে না এবং রেঞ্জ-বান্ধব বাজারে প্রায়শই স্টপগুলি শুরু হতে পারে।
এটি বিভিন্ন পণ্য এবং সময়ের প্রভাব বিবেচনা করে না।
কৌশলটি আরও উন্নত করার জন্য, আমরা নিম্নলিখিত দিকগুলি থেকে উন্নতি করতে পারিঃ
বিভিন্ন পণ্য এবং সময়ের জন্য অভিযোজিত স্টপ লস এবং লাভের পরামিতি সেট করুন।
প্রবণতা মূল্যায়নের জন্য প্রযুক্তিগত সূচক যোগ করুন যাতে ব্যাপ্তি সীমাবদ্ধ বাজারে আটকে না যায়।
ট্রেন্ড রান ট্র্যাক করার জন্য পরবর্তী অ্যাড-অন সুযোগ সেট করুন।
ব্রেকআউট এবং ফিল্টার সংকেতগুলির সত্যতা বিচার করার জন্য ভলিউম সূচকগুলি একত্রিত করুন।
ট্রেন্ডের দিকনির্দেশনা নির্ধারণে সহায়তা করার জন্য মেশিন লার্নিং অ্যালগরিদম যুক্ত করুন।
কৌশলটি সহজ ব্রেকআউট নীতির উপর ভিত্তি করে ডিজাইন করা হয়েছে যাতে অতিরিক্ত রিটার্নের জন্য ব্রেকআউটগুলির পরে ত্বরান্বিত রানগুলি ধরা যায়। এটি ঝুঁকিগুলি নিয়ন্ত্রণ করতে স্টপ এবং মুনাফা ব্যবহার করে। সহজেই বোঝা এবং বাস্তবায়ন কৌশলটি ব্যক্তিগত প্রয়োজন এবং বাজারের পরিবেশ অনুযায়ী কাস্টমাইজ এবং অনুকূলিত করা যেতে পারে, এটি অত্যন্ত ব্যবহারিক করে তোলে।
/*backtest start: 2024-01-07 00:00:00 end: 2024-01-14 00:00:00 period: 3m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © Dvitash //@version=5 strategy("Casper SMC Silver Bullet", shorttitle = "Casper SB", overlay=true, calc_on_order_fills = true) startTime = input(defval = "1000", title = "Start Time") endTime = input(defval = "1600", title = "End Time") contractAmt = input.int(defval = 2, title = "Contract Amount") fvgCol = input.color(defval = color.rgb(63, 61, 179, 41), title = "FVG Color") borderCol = input.color(defval = color.rgb(35, 33, 172, 41), title = "FVG Border Color") fvgExtendLength = input.int(defval = 0, minval = 0, title = "FVG Extend Length") allowedTime = not na(time(timeframe.period, startTime + "-" + endTime +":23456", "America/New_York")) newDay = bool(ta.change(time('D'))) h = hour(time('1'), "America/New_York") var bool fvgDrawn = na var float entryPrice = na var float stopPrice = na var float tpPrice = na if newDay fvgDrawn := false // a_allBoxes = box.all // if array.size(a_allBoxes) > 0 // for i = 0 to array.size(a_allBoxes) - 1 // box.delete(array.get(a_allBoxes, i)) if allowedTime and barstate.isconfirmed and h <= 16 //Long FVG if high[2] < low and not fvgDrawn // box.new(bar_index[2], low, bar_index + fvgExtendLength, high[2], bgcolor = fvgCol, border_color = borderCol) stopPrice := low[2] entryPrice := low tpPrice := entryPrice + (math.abs(low[2] - entryPrice) * 2) // log.info("SL: " + str.tostring(stopPrice) + " Entry: " + str.tostring(entryPrice) + " TP: " + str.tostring(tpPrice)) strategy.entry("long", strategy.long, contractAmt, limit = entryPrice, comment = "Long Entry") fvgDrawn := true if low[2] > high and not fvgDrawn // box.new(bar_index[2], high, bar_index + fvgExtendLength, low[2], bgcolor = fvgCol, border_color = borderCol) stopPrice := high[2] entryPrice := high tpPrice := entryPrice - (math.abs(high[2] - entryPrice) * 2) // log.info("SL: " + str.tostring(stopPrice) + " Entry: " + str.tostring(entryPrice) + " TP: " + str.tostring(tpPrice)) strategy.entry("short", strategy.short, contractAmt, limit = entryPrice, comment = "Short Entry") fvgDrawn := true if h >= 16 strategy.close_all() strategy.cancel_all() strategy.exit("long exit", from_entry = "long", qty = contractAmt, limit = tpPrice, stop = stopPrice, comment = "Long Exit") strategy.exit("short exit", from_entry = "short", qty = contractAmt, limit = tpPrice, stop = stopPrice, comment = "Short Exit")