এই কৌশলটি এন্ট্রি লাইন এবং স্টপ লস লাইন সেট করতে শতাংশ মূল্য পরিবর্তন ব্যবহার করে। এটি যখন দামগুলি এন্ট্রি লাইনটি ভেঙে দেয় এবং যখন দামগুলি স্টপ লস লাইনের নীচে পড়ে তখন অবস্থানগুলি থেকে বেরিয়ে আসে। এর মূল বৈশিষ্ট্যটি হ'ল এটি কেবলমাত্র এক ইউনিট ঝুঁকি নেয়, যার অর্থ পূর্ববর্তী অবস্থানটি পূর্বনির্ধারিত লাভের লক্ষ্যমাত্রায় পৌঁছে যাওয়ার পরে নতুন অবস্থানগুলি যুক্ত করা হবে।
কৌশলটি প্রথমে একটি বেঞ্চমার্ক মূল্য নির্ধারণ করে এবং দামের পরিসীমা হিসাবে সেই দামের 10% ব্যবহার করে - উপরের সীমাটি প্রবেশের রেখা এবং নীচের সীমাটি স্টপ লস লাইন। যখন দামগুলি প্রবেশের রেখাটি অতিক্রম করে, তখন স্থির পরিমাণে কেনা হবে। যখন দামগুলি স্টপ লস লাইনের নীচে পড়ে, পজিশনগুলি বন্ধ হয়ে যাবে। মুনাফা অর্জনের পরে, মুনাফা পরিসীমা প্রসারিত করার জন্য প্রবেশ এবং স্টপ লস লাইনগুলি শতাংশ দ্বারা সামঞ্জস্য করা হবে। এটি কৌশলটিকে প্রবণতা চালানোর অনুমতি দেয়।
কৌশলটির আরেকটি মূল বিষয় হ'ল এটি কেবলমাত্র একটি ইউনিট ঝুঁকি নেয়। অর্থাৎ, বর্তমান অবস্থানটি লাভের লক্ষ্যমাত্রায় পৌঁছে যাওয়ার পরেই নতুন অবস্থান যুক্ত করা হবে। নতুন অবস্থানগুলিও নতুন এন্ট্রি এবং স্টপ লস লাইন অনুসরণ করবে। এটি ঝুঁকি সীমাবদ্ধ করে।
এই কৌশলটি ট্রেলিং স্টপ এবং পজিশনের আকারের সুবিধাগুলি একত্রিত করে, লাভজনক হওয়ার সাথে সাথে কার্যকর ঝুঁকি নিয়ন্ত্রণের অনুমতি দেয়।
এছাড়াও কিছু ঝুঁকি আছেঃ
পরিসরের আকার, এন্ট্রি ফিল্টার ইত্যাদির মতো পরামিতিগুলি সামঞ্জস্য করে এই ঝুঁকিগুলি এড়ানো যায়।
আরও অপ্টিমাইজেশনের সুযোগ রয়েছেঃ
এটি একটি সহজ এবং ব্যবহারিক শতাংশ পরিসীমা ভিত্তিক সিস্টেম। প্যারামিটার টিউনিং এবং মডেল অপ্টিমাইজেশনের মাধ্যমে, এই কৌশলটি একটি নির্ভরযোগ্য প্রবণতা ট্র্যাকিং সরঞ্জাম হয়ে উঠতে পারে, বিনিয়োগকারীদের জন্য স্থিতিশীল পারফরম্যান্স তৈরি করে।
/*backtest start: 2022-11-16 00:00:00 end: 2023-11-22 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © HermanBrummer 4 April 2021 strategy ("The Box Percent Strat", shorttitle="The Box", overlay = true) /// Designed for LONG only on Daily, 2D or 3D Charts /// Uses fixed investment risk amount, meaning you're willing to lose that amount per trade /// Limit buy to not overpay RiskPerTrade = input(10000, "Risk losing this much per trade", tooltip="This calculates how much you will lose based on difference between the entry price and stop loss price") TradeAboveMAFilterPer = input(50, "The System won't trade if price is below this MA") UpBoxSize = (input(10, "Box size in %") * 0.01)+1 // 1.1 == 10% up DnBoxSize = 1-(input(10, "Box size in %") * 0.01) // 0.9 == 10% dn var FirstBar = close > 0 ? close : na var FirstTop = FirstBar * UpBoxSize var FirstBot = FirstBar * DnBoxSize var top = sma(FirstTop, 1) var bot = sma(FirstBot, 1) /// The Box Calcs if high[2] > top top := top * UpBoxSize bot := bot * UpBoxSize if low[1] < bot top := top * DnBoxSize bot := bot * DnBoxSize plot(bot, "Bot", #ff0000) // Green plot(top, "Top", #00ff00) // Red mid = ((top-bot)/2)+bot plot(mid, "Mid", color.gray) TradeAboveMAFilter = sma(close, TradeAboveMAFilterPer) plot(TradeAboveMAFilter, "Trade AboveMAF Filter", color.yellow, 3, style=plot.style_circles) // col = high[1] < top and high >= top ? color.white : na // bgcolor(col) /// Shares RiskRange = close * abs(DnBoxSize - 1) // 0.9 - 1 == 1.10 // 10% abs so you don't get a neg number NB NB Shares = RiskPerTrade / RiskRange //plot(close-RiskRange, "RiskRange", color.fuchsia) Enter = high >= top and close[1] > TradeAboveMAFilter and strategy.opentrades[0] == strategy.opentrades[1] and strategy.opentrades[1] == strategy.opentrades[2] and strategy.opentrades[2] == strategy.opentrades[3] and strategy.opentrades[3] == strategy.opentrades[4] and strategy.opentrades[4] == strategy.opentrades[5] and strategy.opentrades[5] == strategy.opentrades[6] // won't enter if new positon was taken in the last 6 bars // need better code for this. /// Buy & Sell // (new highs) and (Close above moving average filter) and (No new trades were taken receently) if Enter //(high >= top) and (close[1] > TradeAboveMAFilter) and strategy.opentrades[0] == strategy.opentrades[1] strategy.order("En", strategy.long, qty=Shares, limit=top)//, stop=top) //barcolor(strategy.position_size != 0 ? #00ff00 : color.gray) // /// If ONE Position THEN this Stop Because: // if strategy.position_size == 1 // strategy.exit("Ex", "En", stop=bot) /// If it has more than one trad OPEN if strategy.position_size > 0 strategy.exit("Ex", "En", stop=bot[2] ) // puts stop on old bot //plot(strategy.position_avg_price, "Avg Price", color.yellow)