کنیکٹیکٹ کی کچھی کا نظام

مصنف:چاؤ ژانگ، تاریخ: 2023-11-06 10:23:12
ٹیگز:

img

جائزہ

یہ حکمت عملی مشہور کچھی ٹریڈنگ سسٹم پر مبنی ہے اور جتنا ممکن ہو سکے اصل قوانین پر عمل کرنے کی کوشش کرتی ہے۔ یہ ایک رجحان کی پیروی کرنے والا نظام ہے جو ڈبل چلتی اوسط کا استعمال کرتے ہوئے انٹری اور آؤٹ سگنل تیار کرتا ہے۔

تجارتی منطق

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

فوائد کا تجزیہ

اس حکمت عملی کے فوائد:

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

خطرے کا تجزیہ

کچھ خطرات بھی ہیں:

  • جب رجحان الٹ جاتا ہے تو بروقت باہر نکلنے میں ناکام، جس سے بڑے نقصانات ہوتے ہیں۔
  • بہت زیادہ pyramiding تجارت کی تعدد میں اضافہ.
  • غلط پیرامیٹر ٹوننگ نظام کو بہت جارحانہ یا بہت قدامت پسند بنا دیتا ہے۔
  • بیک ٹیسٹ تعصب، حقیقی کارکردگی کم کارکردگی کا مظاہرہ کر سکتے ہیں.

خطرات کو کم کیا جا سکتا ہے:

  • نقصانات کو کم کرنے کے لئے 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)




مزید