متحرک پوزیشن ایڈجسٹمنٹ ٹرینڈ ٹریکنگ سسٹم


تخلیق کی تاریخ: 2024-01-26 14:41:08 آخر میں ترمیم کریں: 2024-01-26 14:41:08
کاپی: 0 کلکس کی تعداد: 616
1
پر توجہ دیں
1617
پیروکار

متحرک پوزیشن ایڈجسٹمنٹ ٹرینڈ ٹریکنگ سسٹم

جائزہ

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

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

اس حکمت عملی میں دو ذیلی حکمت عملی شامل ہیں: رجحان سازی اور توڑنے کی حکمت عملی.

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

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

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

سٹاپ نقصان کی بنیاد پر حقیقی طول موج کے ضربی سیٹ کریں۔ ٹریکنگ سٹاپ نقصان کی بنیاد پر سب سے زیادہ قیمت اور کم از کم قیمت کی نقل و حرکت کی واپسی۔

طاقت کا تجزیہ

یہ حکمت عملی مندرجہ ذیل فوائد رکھتی ہے:

  1. رجحانات کی پیروی اور دو ذیلی حکمت عملیوں کو توڑنے کے ساتھ مل کر، مختلف مارکیٹ کے ماحول میں انکولی سوئچنگ کی اجازت دیتا ہے، جس میں مضبوط استحکام ہے.

  2. اعلی درجے کی پوزیشن مینجمنٹ اور رسک کنٹرول ٹکنالوجی کا اطلاق ، پوزیشنوں کو متحرک طور پر ایڈجسٹ کرنے اور خطرے کو مؤثر طریقے سے کنٹرول کرنے کے لئے۔

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

  4. قیمتوں میں حقیقی اتار چڑھاو کی بنیاد پر اسٹاپ نقصان کی پوزیشن کا تعین ، اسٹاپ نقصان کے میدان سے غیر ضروری چھوٹے نقصانات کو مؤثر طریقے سے روک سکتا ہے۔

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

خطرے کا تجزیہ

اس حکمت عملی کے اہم خطرات یہ ہیں:

  1. پیرامیٹرز کی اصلاح پر منحصر ہے ، حکمت عملی کی کارکردگی پر مختلف پیرامیٹرز کا زیادہ اثر پڑتا ہے ، بہترین پیرامیٹرز حاصل کرنے کے لئے مکمل جانچ کی ضرورت ہوتی ہے۔

  2. ٹریکنگ سٹاپ زلزلہ کے رجحان میں زیادہ بار بار اسٹاپ آؤٹ فیلڈ ہوسکتا ہے۔ اسٹاپ نقصان کی حد کو مناسب طریقے سے نرمی دی جاسکتی ہے ، اسٹاپ نقصان کے طریقہ کار کو بہتر بنایا جاسکتا ہے۔

  3. پوزیشن مینجمنٹ اور رسک کنٹرول ٹکنالوجی ابتدائی فنڈ اور ٹرانزیکشن لاگت کے لئے زیادہ حساس ہے۔ ابتدائی فنڈ کا بہت کم ہونا اور ٹرانزیکشن لاگت کا بہت زیادہ ہونا حکمت عملی کی منافع بخش صلاحیت کو متاثر کرسکتا ہے۔

  4. حکمت عملی کا سالانہ خطرے کے اہداف اور زیادہ سے زیادہ بیعانہ کا تعین درست اندازہ لگانے والے اشارے کی اتار چڑھاؤ پر منحصر ہے۔ اتار چڑھاؤ کا غلط اندازہ لگانے سے پوزیشن زیادہ یا کم ہوسکتی ہے۔

اصلاح کی سمت

اس حکمت عملی کے اہم اصلاحات میں شامل ہیں:

  1. زیادہ سے زیادہ پیرامیٹرز کا مجموعہ تلاش کریں۔ زیادہ سے زیادہ تاریخی اعداد و شمار کی بازیافت کے ذریعے ، زیادہ سے زیادہ پیرامیٹرز کی ترتیب تلاش کی جاسکتی ہے۔

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

  3. پوزیشن اور رسک مینجمنٹ کو بہتر بنائیں۔ بہترین رسک ریٹرن پورٹیبل تلاش کرنے کے لئے مختلف رسک اہداف کی جانچ کی جاسکتی ہے۔ مختلف لیورج کی سطح کے اثرات کی جانچ کی جاسکتی ہے۔

  4. دیگر معاون اشارے آزمائیں۔ سگنل کی درستگی اور حکمت عملی کی استحکام کو بہتر بنانے کے لئے مزید تکنیکی اشارے شامل کیے جاسکتے ہیں۔

  5. مختلف ہولڈنگ سائیکلوں کی جانچ کریں۔ ہولڈنگ کی ترتیب کی درستگی کو بہتر بنانے کے لئے اعلی سائیکل معاون فیصلوں کا استعمال کرنے کی کوشش کی جاسکتی ہے۔

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
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 Turtle and Trend System", shorttitle="Turtle Trend", overlay=true, slippage=10, pyramiding=1, precision = 4, calc_on_order_fills = false, calc_on_every_tick = false, default_qty_value = 0.1, initial_capital = 1000, commission_value = 0.06, process_orders_on_close = true)

// Inputs and Parameters
src = input(close, 'Source', group='Strategy Settings')
length = input.int(title="Lookback period for fast EMA", defval=10, minval=2, group='Strategy Settings', tooltip='This sets the lookback period for the fast exponential moving average. The slow EMA is 5x the fast EMA length')
blength = input.int(title="Lookback period for Breakout", defval=20, minval=5, step=5, group='Strategy Settings')

long = input(true, 'Long', inline='08', group='Strategy toggle')
short = input(true, 'Short', inline='08', group='Strategy toggle', tooltip='Toggle long/short strategy on/off')

EMAwt = input(false, 'Trend', inline='01', group='Strategy toggle')
breakwt = input(true, 'Breakout', inline='01', group='Strategy toggle', tooltip='Toggle trend/breakout strategy on/off')

stopMultiple = input.float(2, 'Stop multiple', step=0.5, group='Risk Management Settings', tooltip='Multiple for ATR, setting hard stop loss from entry price')
trail = input.int(10, 'Trail lookback', step=5, group='Risk Management Settings', tooltip='Lookback period for the trailing stop')
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(15, 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(true, '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 = time >= start and time <= finish

// Breakout strategy
lower = ta.lowest(low[1], blength)
upper = ta.highest(high[1], blength)
basis = math.avg(upper, lower)
signal = 20*(close - basis) / (upper - lower)

// Trend strategy
fEMA = ta.ema(close[1], length)
sEMA = ta.ema(close[1], length*5)
emadiff = fEMA - sEMA
nemadiff = 5*emadiff/(ta.stdev(close - close[1], 252))

//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

// Trailing stop
tlower = ta.lowest(low[1], trail)
tupper = ta.highest(high[1], trail)
tbasis = math.avg(tupper, tlower)
tsignal = 20*(close - tbasis) / (tupper - tlower)

// Strategy Rules
if EMAwt
    if long
        longCondition2 = (nemadiff >2 and nemadiff[1] <2) and window
        exitlong = tsignal <= -10
        if (longCondition2)
            strategy.entry('Trend Long!', strategy.long, qty=shares)
        if strategy.position_size > 0    
            strategy.exit('Stop Long', from_entry = 'Trend Long!', stop=(strategy.opentrades.entry_price(0) - (openN * stopMultiple)))
        if (exitlong)
            strategy.close('Trend Long!', immediately = true)

    if short
        shortCondition2 = (nemadiff <-1 and nemadiff[1] >-1) and window
        exitshort = tsignal >= 10
        if (shortCondition2)
            strategy.entry('Trend Short!', strategy.short, qty=shares)
        if strategy.position_size < 0   
            strategy.exit('Stop Short', from_entry = 'Trend Short!', stop=(strategy.opentrades.entry_price(0) + (openN * stopMultiple)))
        if (exitshort)
            strategy.close('Trend Short!', immediately = true)

if breakwt
    if long
        longCondition1 = (signal >= 10) and window
        exitlong = tsignal <= -10
        if (longCondition1)
            strategy.entry('Break Long!', strategy.long, qty=shares)
        if strategy.position_size > 0    
            strategy.exit('Stop Long', from_entry = 'Break Long!', stop=(strategy.opentrades.entry_price(0) - (openN * stopMultiple)))
        if (exitlong)
            strategy.close('Break Long!', immediately = true)

    if short
        shortCondition1 = (signal <= -10) and window
        exitshort = tsignal >= 10
        if (shortCondition1)
            strategy.entry('Break Short!', strategy.short, qty=shares)
        if strategy.position_size < 0   
            strategy.exit('Stop Short', from_entry = 'Break Short!', stop=(strategy.opentrades.entry_price(0) + (openN * stopMultiple)))
        if (exitshort)
            strategy.close('Break Short!', immediately = true)

// Visuals of trend and direction
plot(nemadiff, title='EMA Forecast', color=color.black, display=display.none)
plot(ta.sma(ta.median(math.sqrt(math.pow(nemadiff,2)), 700), 350), 'Forecast mean', color=color.rgb(245, 0, 0), display=display.none)

MAColor = fEMA > sEMA ? #00ff00 : #ff0000
MA1 = plot(fEMA, title='Fast EMA', color=MAColor)
MA2 = plot(sEMA, title='Slow EMA', color=MAColor)
fill(MA1, MA2, title='Band Filler', color=MAColor)