এই কৌশলটির মূল ধারণা হ'ল ইক্যুইটি বক্ররেখার প্রবণতার উপর ভিত্তি করে অবস্থানের আকারকে গতিশীলভাবে সামঞ্জস্য করা - সামগ্রিক ঝুঁকি নিয়ন্ত্রণের জন্য লাভের সময় অবস্থানের আকার বৃদ্ধি এবং ক্ষতির সময় আকার হ্রাস করা। কৌশলটি ট্রেডিং সংকেত সনাক্ত করতে চ্যান্ডে মম্পটম সূচক, সুপারট্রেন্ড সূচক এবং মম্পটম সূচককে একত্রিত করে।
মূলধন কার্ভের উপর ভিত্তি করে গতিশীল পজিশন সাইজিং কৌশল
কৌশলটি শেয়ারের কার্ভটি ডাউনট্রেন্ডে রয়েছে কিনা তা নির্ধারণের জন্য দুটি পদ্ধতি ব্যবহার করেঃ 1) শেয়ারের কার্ভের দ্রুত এবং ধীর সরল চলমান গড় গণনা করুন, যদি দ্রুত এসএমএ ধীরের নীচে থাকে তবে এটি একটি ডাউনট্রেন্ড হিসাবে বিবেচিত হয়; 2) শেয়ারের কার্ভটিকে তার নিজস্ব দীর্ঘমেয়াদী সহজ চলমান গড়ের তুলনায় গণনা করুন, যদি শেয়ারটি চলমান গড় লাইনের নীচে থাকে তবে এটি একটি ডাউনট্রেন্ড হিসাবে বিবেচিত হয়।
যখন ইক্যুইটি কার্ভ ডাউনট্রেন্ড নির্ধারিত হয়, তখন পজিশনের আকার সেটিংসের উপর ভিত্তি করে একটি নির্দিষ্ট শতাংশ হ্রাস বা বৃদ্ধি পাবে। উদাহরণস্বরূপ, যদি 50% হ্রাস সেট করা হয়, তবে মূল 10% পজিশনের আকার 5% এ হ্রাস পাবে। এই প্রক্রিয়াটি সামগ্রিক ঝুঁকি নিয়ন্ত্রণের জন্য মুনাফার সময় পজিশনের আকার বৃদ্ধি করে এবং ক্ষতির সময় আকার হ্রাস করে।
এই কৌশলটির সামগ্রিক যুক্তি স্পষ্ট - এটি ইক্যুইটি কার্ভের উপর ভিত্তি করে গতিশীলভাবে অবস্থানের আকার সামঞ্জস্য করে, যা কার্যকরভাবে ঝুঁকি নিয়ন্ত্রণে সহায়তা করে। আক্রমণাত্মক চালনার ঝুঁকি এড়ানোর জন্য পরামিতি এবং স্টপ লস কৌশলগুলির আরও পরীক্ষা এবং অপ্টিমাইজেশনের প্রয়োজন।
/*backtest start: 2024-01-08 00:00:00 end: 2024-01-15 00:00:00 period: 3m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © shardison //@version=5 //EXPLANATION //"Trading the equity curve" as a risk management method is the //process of acting on trade signals depending on whether a system’s performance //is indicating the strategy is in a profitable or losing phase. //The point of managing equity curve is to minimize risk in trading when the equity curve is in a downtrend. //This strategy has two modes to determine the equity curve downtrend: //By creating two simple moving averages of a portfolio's equity curve - a short-term //and a longer-term one - and acting on their crossings. If the fast SMA is below //the slow SMA, equity downtrend is detected (smafastequity < smaslowequity). //The second method is by using the crossings of equity itself with the longer-period SMA (equity < smasloweequity). //When "Reduce size by %" is active, the position size will be reduced by a specified percentage //if the equity is "under water" according to a selected rule. If you're a risk seeker, select "Increase size by %" //- for some robust systems, it could help overcome their small drawdowns quicker. strategy("Use Trading the Equity Curve Postion Sizing", shorttitle="TEC", default_qty_type = strategy.percent_of_equity, default_qty_value = 10, initial_capital = 100000) //TRADING THE EQUITY CURVE INPUTS useTEC = input.bool(true, title="Use Trading the Equity Curve Position Sizing") defulttraderule = useTEC ? false: true initialsize = input.float(defval=10.0, title="Initial % Equity") slowequitylength = input.int(25, title="Slow SMA Period") fastequitylength = input.int(9, title="Fast SMA Period") seedequity = 100000 * .10 if strategy.equity == 0 seedequity else strategy.equity slowequityseed = strategy.equity > seedequity ? strategy.equity : seedequity fastequityseed = strategy.equity > seedequity ? strategy.equity : seedequity smaslowequity = ta.sma(slowequityseed, slowequitylength) smafastequity = ta.sma(fastequityseed, fastequitylength) equitycalc = input.bool(true, title="Use Fast/Slow Avg", tooltip="Fast Equity Avg is below Slow---otherwise if unchecked uses Slow Equity Avg below Equity") sizeadjstring = input.string("Reduce size by (%)", title="Position Size Adjustment", options=["Reduce size by (%)","Increase size by (%)"]) sizeadjint = input.int(50, title="Increase/Decrease % Equity by:") equitydowntrendavgs = smafastequity < smaslowequity slowequitylessequity = strategy.equity < smaslowequity equitymethod = equitycalc ? equitydowntrendavgs : slowequitylessequity if sizeadjstring == ("Reduce size by (%)") sizeadjdown = initialsize * (1 - (sizeadjint/100)) else sizeadjup = initialsize * (1 + (sizeadjint/100)) c = close qty = 100000 * (initialsize / 100) / c if useTEC and equitymethod if sizeadjstring == "Reduce size by (%)" qty := (strategy.equity * (initialsize / 100) * (1 - (sizeadjint/100))) / c else qty := (strategy.equity * (initialsize / 100) * (1 + (sizeadjint/100))) / c //EXAMPLE TRADING STRATEGY INPUTS CMO_Length = input.int(defval=9, minval=1, title='Chande Momentum Length') CMO_Signal = input.int(defval=10, minval=1, title='Chande Momentum Signal') chandeMO = ta.cmo(close, CMO_Length) cmosignal = ta.sma(chandeMO, CMO_Signal) SuperTrend_atrPeriod = input.int(10, "SuperTrend ATR Length") SuperTrend_Factor = input.float(3.0, "SuperTrend Factor", step = 0.01) Momentum_Length = input.int(12, "Momentum Length") price = close mom0 = ta.mom(price, Momentum_Length) mom1 = ta.mom( mom0, 1) [supertrend, direction] = ta.supertrend(SuperTrend_Factor, SuperTrend_atrPeriod) stupind = (direction < 0 ? supertrend : na) stdownind = (direction < 0? na : supertrend) //TRADING CONDITIONS longConditiondefault = ta.crossover(chandeMO, cmosignal) and (mom0 > 0 and mom1 > 0 and close > stupind) and defulttraderule if (longConditiondefault) strategy.entry("DefLong", strategy.long, qty=qty) shortConditiondefault = ta.crossunder(chandeMO, cmosignal) and (mom0 < 0 and mom1 < 0 and close < stdownind) and defulttraderule if (shortConditiondefault) strategy.entry("DefShort", strategy.short, qty=qty) longCondition = ta.crossover(chandeMO, cmosignal) and (mom0 > 0 and mom1 > 0 and close > stupind) and useTEC if (longCondition) strategy.entry("AdjLong", strategy.long, qty = qty) shortCondition = ta.crossunder(chandeMO, cmosignal) and (mom0 < 0 and mom1 < 0 and close < stdownind) and useTEC if (shortCondition) strategy.entry("AdjShort", strategy.short, qty = qty) plot(strategy.equity) plot(smaslowequity, color=color.new(color.red, 0)) plot(smafastequity, color=color.new(color.green, 0))