حکمت عملی کے بعد متحرک اتار چڑھاؤ کو ایڈجسٹ کرنے کا رجحان


تخلیق کی تاریخ: 2024-01-24 11:13:39 آخر میں ترمیم کریں: 2024-01-24 11:13:39
کاپی: 0 کلکس کی تعداد: 325
1
پر توجہ دیں
1179
پیروکار

حکمت عملی کے بعد متحرک اتار چڑھاؤ کو ایڈجسٹ کرنے کا رجحان

جائزہ

یہ منفرد باقاعدگی سے منظم تجارتی حکمت عملی رجحانات کی پیروی کی قسم میں آتی ہے۔ اس میں اسٹاک کی قیمتوں کے بجائے براہ راست قیمتوں کی یکساں قیمتوں کا سلسلہ استعمال کیا جاتا ہے تاکہ تجارتی سگنل پیدا کیے جاسکیں۔ اس حکمت عملی میں اعلی درجے کی پوزیشن ایڈجسٹمنٹ اور رسک مینجمنٹ تکنیک کا استعمال کیا جاتا ہے ، جو عام طور پر صرف ادارہ جاتی پورٹ فولیو مینجمنٹ میں استعمال ہوتا ہے ، جیسے کہ کموڈٹی ٹریڈنگ ایڈوائزر (سی ٹی اے) اور فیوچر فنڈز کے انتظام میں پوزیشن ایڈجسٹمنٹ کی توثیق۔

حکمت عملی کا اصول

یکساں قیمتوں کا کنڈوم قیمتوں کی پوری ٹائم سیریز کے حساب سے حاصل ہونے والی اتار چڑھاؤ کی شرح سے ایڈجسٹ ہونے والی قیمتوں کی جمع دن کی آمدنی ہے۔ اتار چڑھاؤ کی شرح ایڈجسٹمنٹ ونڈو کی مدت صارف کے ذریعہ طے کی گئی ہے۔ ہل کی متحرک اوسط کی حساب کتاب یکساں قیمتوں کی بنیاد پر کی جاتی ہے ، اور اس رجحان کا فیصلہ کرنے والے اہم اشارے کے طور پر استعمال کیا جاتا ہے۔ ہل کی متحرک اوسط ونڈو کی مدت بھی صارف کے ذریعہ طے شدہ ہے ، 100 دن کی طے شدہ ، تاکہ رجحانات کے فیصلے کی حساسیت کو یقینی بنایا جاسکے ، جبکہ بہت زیادہ تجارت سے بچنے کے لئے۔

ٹریڈنگ کی حکمت عملی کا بنیادی حصہ بہت آسان ہے ، جس میں درجہ بندی کی قیمتوں میں اضافہ ہوتا ہے جو ہل کی متحرک اوسط سے زیادہ ہوتا ہے ، اور نیچے سے زیادہ ہوتا ہے۔ نئے ٹریڈنگ سگنل فعال طور پر پرانے ریورس پوزیشنوں کو ختم کردیں گے۔

پوزیشن کا سائز حالیہ قیمت میں اتار چڑھاو اور صارف کی طرف سے بیان کردہ سالانہ رسک ہدف پر مبنی ہے۔ پوزیشن کا سائز بنیادی طور پر اتار چڑھاؤ کی شرح پر مبنی ہے۔ پوزیشن کا سائز کم اتار چڑھاؤ کے ساتھ زیادہ ہے اور زیادہ اتار چڑھاؤ کے ساتھ کم ہے۔ حالیہ اتار چڑھاؤ کی شرح 14 دن کی قیمت کے متضاد منافع کی معیاری خرابی ہے ، جو ایک سال کے لئے متوقع اتار چڑھاؤ کی شرح کو آگے بڑھاتا ہے۔ پھر صارف کے ذریعہ طے شدہ سالانہ رسک ہدف کے مطابق پوزیشن کی پوزیشن کو ایڈجسٹ کریں۔ ڈیفالٹ رسک ہدف 10٪ قدامت پسند ہے۔ ابتدائی فنڈ کو نقصان اٹھانے کے لئے ایک ہی زیادہ سے زیادہ فنڈ کے طور پر مقرر کیا جانا چاہئے (مثال کے طور پر ، مجموعی سرمایہ 100،000 یوآن ، ایک ہی نقصان 10٪ پر کنٹرول ہے ، ابتدائی فنڈ 10،000 یوآن پر مقرر کیا گیا ہے) ۔

سٹاپ نقصان کی بنیاد پر حالیہ اوسط قیمتوں میں حقیقی اتار چڑھاو کی وسعت کے ضارب کی ترتیب ، صارف تشکیل دے سکتا ہے۔

اسٹریٹجک فوائد

  • جعلی سگنل کے امکانات کو کم کرنے کے لئے قیمت کی یکسانیت کا استعمال
  • پوزیشنوں کی متحرک ایڈجسٹمنٹ ، خطرے کو مؤثر طریقے سے کنٹرول کرنا
  • ریئل ٹائم اسٹاپ نقصان مزید بڑے نقصانات سے بچنے کے لئے
  • ٹریڈنگ کی حکمت عملی سادہ، بدیہی اور آسانی سے سمجھنے کے قابل ہے

اسٹریٹجک رسک

  • ہل منتقل اوسط کے طور پر اہم اشارے، کچھ پیچھے رہ گیا ہے
  • اتار چڑھاؤ کی شرح کا استعمال کرتے ہوئے پوزیشن کو کنٹرول کرنے کے ساتھ ساتھ ممکنہ طور پر منافع کی گنجائش کو محدود کرنا
  • نقصانات کو روکنے کے لئے بہت قریب ممکن ہے کہ نقصانات کو توڑنے کے لئے

خطرے کو کنٹرول کرنے کے اقدامات میں مختلف متحرک اوسط کا مجموعہ استعمال کرنا ، پوزیشن کے خطرے کے اہداف کو ایڈجسٹ کرنا وغیرہ شامل ہیں۔

حکمت عملی کی اصلاح

  • مختلف اقسام کے متحرک اوسط کے اثرات کی جانچ کرنا
  • متحرک اوسط پیرامیٹرز کو بہتر بنائیں
  • زیادہ کام کرنے کی کوشش کریں یا کچھ بھی نہ کریں۔
  • سٹاپ نقصان کی حد کو ایڈجسٹ کریں اور بہترین نقطہ نظر تلاش کریں
  • نقصان کو روکنے کے لئے دیگر طریقوں کی جانچ

خلاصہ کریں۔

اس حکمت عملی میں متعدد تکنیکی کنٹرول کے خطرات کو مربوط کیا گیا ہے ، جیسے قیمتوں کی یکسانیت ، متحرک ہینڈلنگ ، اسٹاپ نقصان ، وغیرہ۔ تجارت کے لئے سادہ رجحان کے اصولوں کا استعمال کریں۔ مارکیٹ اور انفرادی حالات کے مطابق پیرامیٹرز کو ایڈجسٹ اور بہتر بنایا جاسکتا ہے۔ یہ مزید جانچ اور تصدیق کے قابل ہے ، جس میں عملی اطلاق کی صلاحیت ہے۔

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2023-01-17 00:00:00
end: 2024-01-23 00:00:00
period: 1d
basePeriod: 1h
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/
// © Crunchster1

//@version=5
strategy(title="Crunchster's Normalised Trend Strategy", shorttitle="Normalised Trend Strategy", overlay=false )

// Inputs and Parameters
src = input(close, 'Source', group='Strategy Settings')
length = input.int(title="Lookback period for price normalisation filter", defval=14, minval=2, group='Strategy Settings', tooltip='This sets the lookback period for the volatility adjustment of returns, which is used to transform the price series into the "real price"')
hlength = input.int(title="Lookback period for Hull Moving Average", defval=100, minval=2, group='Strategy Settings')
offset = input.int(title="HMA Offset", defval=0, minval=0, group='Strategy Settings')
long = input(true, 'Long', inline='08', group='Strategy Settings')
short = input(true, 'Short', inline='08', group='Strategy Settings', tooltip='Toggle long/short strategy on/off')

stopMultiple = input.float(1, 'Stop multiple', step=0.25, group='Risk Management Settings', tooltip='Multiple for ATR, setting hard stop loss from entry price')
lev = input.float(1, 'Max Leverage', step=0.5, group='Risk Management Settings', tooltip='Max leverage sets maximum allowable leverage of total capital (initial capital + any net profit), capping maximum volatility adjusted position size')
riskT = input.float(10, maxval=75, title='Annualised Volatility Target %', group='Risk Management Settings', tooltip='Specify annual risk target, used to determine volatility adjusted position size. Annualised daily volatility is referenced to this value and position size adjusted accordingly')
comp = input(false, 'Compounding', inline='09', group='Risk Management Settings')
Comppct = input.float(50, '%', step=5, inline='09', group='Risk Management Settings', tooltip='Toggle compounding of profit, and set % of profit to compound')

// Backtesting period
FromDay = input.int(defval=1, title='From Day', minval=1, maxval=31, inline='04', group='Backtest range')
FromMonth = input.int(defval=1, title='From Mon', minval=1, maxval=12, inline='04', group='Backtest range')
FromYear = input.int(defval=2018, title='From Yr', minval=1900, inline='04', group='Backtest range', tooltip='Set start of backtesting period')
ToDay = input.int(defval=1, title='To Day', minval=1, maxval=31, inline='05', group='Backtest range')
ToMonth = input.int(defval=1, title='To Mon', minval=1, maxval=12, inline='05', group='Backtest range')
ToYear = input.int(defval=9999, title='To Yr', minval=1900, inline='05', group='Backtest range', tooltip='Set end of backtesting period')

start = timestamp(FromYear, FromMonth, FromDay, 00, 00)
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)
window = true

// Normalised returns calculation
nRet = (src - src[1]) / ta.stdev((src - src[1]), length)

nPrice = ta.cum(nRet)

//Hull Moving Average - using normalised price series
fHMA = ta.wma(2 * ta.wma(nPrice[offset], hlength / 2) - ta.wma(nPrice[offset], hlength), math.round(math.sqrt(hlength)))

//Risk Management formulae
strategy.initial_capital = 50000
tr = math.max(high - low, math.abs(high - close), math.abs(low - close)) //True range
stopL = ta.sma(tr, 14) //Average true range
stdev = ta.stdev(close-close[1], 14) //volatility of recent returns
maxcapital = strategy.initial_capital+strategy.netprofit //Maximum capital available to invest - initial capital net of profit
annvol = 100*math.sqrt(365)*stdev/close //converts recent volatility of returns into annualised volatility of returns - assumes daily timeframe

risk = 1.1
if comp
    risk := (strategy.initial_capital+(Comppct*strategy.netprofit/100))//adjust investment capital to include compounding
else
    risk := strategy.initial_capital

shares = (risk * (riskT/annvol)) / close //calculates volatility adjusted position size, dependent on user specified annualised risk target
if ((shares*close) > lev*maxcapital) //ensures position size does not exceed available capital multiplied by user specified maximum leverage
    shares := lev*maxcapital/close

//To set the price at the entry point of trade
Posopen() =>
    math.abs(strategy.position_size[1]) <= 0 and math.abs(strategy.position_size) > 0

var float openN = na
if Posopen()
    openN := stopL

// Strategy Rules
if long
    longCondition = ta.crossover(nPrice, fHMA) and window
    exitlong = ta.crossunder(nPrice, fHMA)
    if (longCondition)
        strategy.entry('Go Long!', strategy.long, qty=shares)
    if strategy.position_size > 0    
        strategy.exit('Stop Long', from_entry = 'Go Long!', stop=(strategy.opentrades.entry_price(0) - (openN * stopMultiple)))
    if (exitlong)
        strategy.close('Go Long!', immediately = true)

if short
    shortCondition = ta.crossunder(nPrice, fHMA) and window
    exitshort = ta.crossover(nPrice, fHMA)
    if (shortCondition)
        strategy.entry('Go Short!', strategy.short, qty=shares)
    if strategy.position_size < 0   
        strategy.exit('Stop Short', from_entry = 'Go Short!', stop=(strategy.opentrades.entry_price(0) + (openN * stopMultiple)))
    if (exitshort)
        strategy.close('Go Short!', immediately = true)

// Visuals of trend and direction
plot(nPrice, title='Real Price', color=color.black)

MAColor = fHMA > fHMA[3] ? #00ff00 : #ff0000
MA1 = plot(fHMA, title='Hull MA', color=MAColor)
MA2 = plot(fHMA[3], title='Hull MA Offset', color=MAColor)
fill(MA1, MA2, title='Band Filler', color=MAColor)