کنیکٹیکٹ سی ٹرٹل سسٹم


تخلیق کی تاریخ: 2023-11-06 10:23:12 آخر میں ترمیم کریں: 2023-11-06 10:23:12
کاپی: 1 کلکس کی تعداد: 663
1
پر توجہ دیں
1617
پیروکار

کنیکٹیکٹ سی ٹرٹل سسٹم

جائزہ

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

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

  • N1 اور N2 دن لائنوں (ڈیفالٹ 20th اور 55th) کی تعمیر کے لئے دوہری مساوی لائنوں کا استعمال کرتے ہوئے سب سے زیادہ قیمت کا حساب لگایا گیا ہے.
  • کم از کم قیمت کا حساب لگانے کے لئے N3 اور N4 دن لائنوں (ڈیفالٹ 10 اور 20 دن) کا استعمال کرتے ہوئے ڈبل مساوی لائنوں کی تعمیر کریں۔
  • جب اختتامی قیمت N2 ڈے لائن سے زیادہ ہو تو ، زیادہ کام کریں۔ جب اختتامی قیمت N4 ڈے لائن سے کم ہو تو ، نچلی پوزیشن۔
  • زیادہ کرنے کے بعد ، ہر جمع پر ایک N گنا اے ٹی آر ((پہلے سے طے شدہ 1 گنا) ، ایک بار جمع کرو ، زیادہ سے زیادہ 5 بار جمع کرو
  • ایک فکسڈ اسٹاپ سیٹ کریں ، جس میں پہلے سے طے شدہ داخلہ قیمت سے N گنا ATR ((پہلے سے طے شدہ 2 گنا) ۔
  • نئی پوزیشنوں میں داخل ہونے کی اجازت صرف اس وقت ہوتی ہے جب پچھلی تجارت جیتنے والی ہو۔

طاقت کا تجزیہ

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

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

خطرے کا تجزیہ

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

  • ٹرینڈ کی تبدیلی کے وقت وقت میں روکنے میں ناکامی ، بڑے نقصانات کا سبب بن سکتی ہے۔
  • بہت زیادہ ذخیرہ اندوزی سے زیادہ تجارت کا خطرہ ہوتا ہے۔
  • پیرامیٹرز کی غلط ترتیب سے نظام کو زیادہ شدت پسند یا قدامت پسند بنا دیا جاسکتا ہے۔
  • ریٹرننگ کے اعداد و شمار کے مماثلت کا خطرہ ہے ، اور ریٹرننگ کے مقابلے میں ریڈ ڈسک کا اثر کم ہوسکتا ہے۔

خطرے کو کم کرنے کے لئے، مندرجہ ذیل اقدامات کریں:

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

اصلاح کی سمت

اس حکمت عملی کو مندرجہ ذیل پہلوؤں سے بہتر بنایا جاسکتا ہے:

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

خلاصہ کریں۔

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

حکمت عملی کا ماخذ کوڈ
/*backtest
start: 2022-10-30 00:00:00
end: 2023-11-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title="Turtle", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=10, commission_type=strategy.commission.percent, commission_value=0.1, pyramiding=5)

stopInput = input(2.0, "Stop N", step=.5)
pyramidInput = input(1, "Pyramid N", step=.5)
l1LongInput = input(20, "L1 Long", minval=5)
l2LongInput = input(55, "L2 Long", minval=5)
l1LongExitInput = input (10, "L1 Long Exit", minval=5)
l2LongExitInput = input (20, "L2 Long Exit", minval=5)

FromYear = input(2000, "From Year", minval=1900),   FromMonth = input(1, "From Month", minval=1, maxval=12),    FromDay = input(1, "From Day", minval=1, maxval=31)
ToYear = input(9999, "To Year", minval=1900),       ToMonth = input(1, "To Month", minval=1, maxval=12),        ToDay = input(1, "To Day", minval=1, maxval=31)
FromDate = timestamp(FromYear, FromMonth, FromDay, 00, 00),     ToDate = timestamp(ToYear, ToMonth, ToDay, 23, 59)
TradeDateIsAllowed() => time >= FromDate and time <= ToDate
l1Long = highest(l1LongInput)
l1LongExit = lowest(l1LongExitInput)
l2Long = highest(l2LongInput)
l2LongExit = lowest(l2LongExitInput)

// 
// ADX, +-DI
// https://www.tradingview.com/script/rlMJ05yl-ADX-and-DI-pine-script-3-0/
//
len = 14
th = 20
TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0
SmoothedTrueRange = 0.0
SmoothedTrueRange := nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/len) + TrueRange
SmoothedDirectionalMovementPlus = 0.0
SmoothedDirectionalMovementPlus := nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/len) + DirectionalMovementPlus
SmoothedDirectionalMovementMinus = 0.0
SmoothedDirectionalMovementMinus := nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/len) + DirectionalMovementMinus

DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100
DX = abs(DIPlus-DIMinus) / (DIPlus+DIMinus)*100
ADX = sma(DX, len)

// Back to Turtle

filter = true // not (DIPlus < ADX and DIMinus < ADX) and DIPlus > DIMinus
var win = false
var totalPrice = 0.0
var buyPrice = 0.0
var avgPrice = 0.0
var nextBuyPrice = 0.0
var stopPrice = 0.0
var totalBuys = 0

var bool inBuy = false
var float l1LongPlot = highest(l1LongInput)
var float l2LongPlot = highest(l2LongInput)

n = atr(14)

var mode = 'L1'
string longLevel = na

if not inBuy 
    l1LongPlot := highest(l1LongInput)[1]
    l2LongPlot := highest(l2LongInput)[1]
    
    if (close > l2Long[1] and filter)
        mode := 'L2'
        if TradeDateIsAllowed() 
            strategy.close_all()
            strategy.entry("long", strategy.long, comment="L2")
            longLevel := 'L2'

        win := false
        buyPrice := close
        totalBuys := 1
        totalPrice := buyPrice
        avgPrice := buyPrice
        stopPrice := close-(stopInput*n)
        nextBuyPrice := high+(pyramidInput*n)
        inBuy := true
    else 
        if (close > l1Long[1] and filter)
            mode := 'L1'
            if not win
                if TradeDateIsAllowed()
                    strategy.close_all()
                    strategy.entry("long", strategy.long, comment="L1")
                    longLevel := 'L1'
            win := false
            buyPrice := close
            totalBuys := 1
            totalPrice := buyPrice
            avgPrice := buyPrice
            stopPrice := close-(stopInput*n)
            nextBuyPrice := high+(pyramidInput*n)
            inBuy := true
        else 
            inBuy := false

else
    l1LongPlot := l1LongPlot[1]
    l2LongPlot := l2LongPlot[1]
    
    if close > nextBuyPrice and TradeDateIsAllowed() and totalBuys < 6
        strategy.entry("long", strategy.long, comment="LP")
        longLevel := 'P'
        stopPrice := close-(stopInput*n)
        nextBuyPrice := high+(pyramidInput*n)
        totalBuys := totalBuys + 1
        totalPrice := totalPrice + buyPrice
        avgPrice := totalPrice / totalBuys

    if (close < stopPrice) 
        inBuy := false
        if TradeDateIsAllowed()
            if (close >= avgPrice)
                longLevel := 'SG'
            else 
                longLevel := 'SR'
            strategy.close("long", strategy.long)
        win := false
        buyPrice := 0
        avgPrice := 0
    else
        if (mode == 'L1' and close > l2Long[1] and filter)
            if win
                inBuy := true
                win := false
                mode := 'L2'
                if TradeDateIsAllowed()
                    strategy.close_all()
                    longLevel := 'L2'
                    strategy.entry("long", strategy.long, comment="L2")
                buyPrice := close
                totalBuys := 1
                totalPrice := buyPrice
                avgPrice := buyPrice
                stopPrice := close-(stopInput*n)
                nextBuyPrice := close+(pyramidInput*n)
        else
            if (close < l1LongExit[1] or close < l2LongExit[1])
                inBuy := false
                if TradeDateIsAllowed()
                    strategy.close("long", strategy.long)
                if close < avgPrice
                    longLevel := 'SR'
                    win := false
                else
                    longLevel := 'SG'
                    win := true
                buyPrice := 0

plot(l1LongPlot, title="l1 long", linewidth=3, style=plot.style_stepline, color=color.green)
plot(l1LongExit[1], title="l1 exit", linewidth=3, style=plot.style_stepline, color=color.red)

plot(l2LongPlot, title="l2 long", linewidth=2, style=plot.style_stepline, color=color.green)
plot(l2LongExit[1], title="l2 exit", linewidth=2, style=plot.style_stepline, color=color.red)

plot(stopPrice, title="stop", linewidth=2, style=plot.style_stepline, color=color.purple)

plotarrow(longLevel == 'L1' ? 1 : 0, colordown=color.black, colorup=color.green, transp=40)
plotarrow(longLevel == 'L2' ? 1 : 0, colordown=color.black, colorup=color.purple, transp=40)
plotarrow(longLevel == 'SR' ? -1 : 0, colordown=color.red, colorup=color.purple, transp=40)
plotarrow(longLevel == 'SG' ? -1 : 0, colordown=color.green, colorup=color.purple, transp=40)