कनेक्टिकट समुद्री कछुआ प्रणाली


निर्माण तिथि: 2023-11-06 10:23:12 अंत में संशोधित करें: 2023-11-06 10:23:12
कॉपी: 1 क्लिक्स: 663
1
ध्यान केंद्रित करना
1617
समर्थक

कनेक्टिकट समुद्री कछुआ प्रणाली

अवलोकन

यह रणनीति प्रसिद्ध समुद्री डाकू व्यापार प्रणाली पर आधारित है और यथासंभव मूल नियमों का पालन करती है। यह एक प्रवृत्ति-अनुसरण प्रणाली है, जिसमें प्रवेश और बाहर निकलने के संकेतों को दोहरे समानांतर के माध्यम से बनाया जाता है।

रणनीति सिद्धांत

  • N1 और N2 डेली लाइनों का उपयोग करके अधिकतम मूल्य की गणना करें (डिफ़ॉल्ट रूप से 20 और 55 दिन) एक द्वि-समान रेखा बनाने के लिए।
  • N3 और N4 (डिफ़ॉल्ट रूप से 10 और 20) के लिए न्यूनतम मूल्य की गणना के साथ एक द्वि-समान रेखा का निर्माण करें।
  • जब समापन मूल्य N2 दिन रेखा से अधिक हो, तो अधिक करें; जब समापन मूल्य N4 दिन रेखा से कम हो, तो बराबरी करें।
  • अधिक के बाद, प्रत्येक जमा एक N-गुना ATR ((डिफ़ॉल्ट 1 गुना), एक बार जमा, अधिकतम 5 बार जमा।
  • एक निश्चित स्टॉप सेट करें, डिफ़ॉल्ट रूप से प्रवेश मूल्य से N गुना कम एटीआर (डिफ़ॉल्ट 2 गुना) ।
  • नए पदों पर प्रवेश की अनुमति केवल तभी दी जाती है जब पिछले व्यापार को जीत लिया गया हो।

श्रेष्ठता विश्लेषण

इस रणनीति के निम्नलिखित फायदे हैं:

  • ट्रेडिंग के सिद्धांतों का पालन करते हुए, ट्रेडर्स को मध्यम और दीर्घकालिक रुझानों को पकड़ने में सक्षम होना चाहिए।
  • द्वि-समानता फ़िल्टर की स्थिति बनाता है, जो अक्सर उतार-चढ़ाव के दौरान व्यापार करने से बचाता है।
  • ट्रैक स्टॉप को उचित रूप से सेट करें और स्टॉप को बहुत ढीला या बहुत संकीर्ण होने से बचें।
  • सिस्टम के जोखिम-लाभ विशेषताओं को समायोजित करने के लिए पैरामीटर सेटिंग्स का उपयोग करना।
  • इस प्रकार, ट्रेडों में अधिक लाभ प्राप्त करने के लिए स्टॉक में अधिक निवेश की अनुमति है।

जोखिम विश्लेषण

इस रणनीति के कुछ जोखिम भी हैं:

  • ट्रेड रिवर्स होने पर समय पर स्टॉप-ऑफ न होने से नुकसान हो सकता है।
  • कई बार जमा करने से ओवर-ट्रेडिंग का खतरा हो सकता है।
  • गलत पैरामीटर सेट करने से सिस्टम को अति-कठोर या अति-रक्षाशील बनाया जा सकता है।
  • रिटर्निंग डेटा फिट जोखिम, रीयल-टाइम प्रभाव शायद रिटर्निंग की तुलना में कमजोर है।

जोखिम को निम्न तरीकों से कम किया जा सकता हैः

  • प्रतिगमन संकेतों को बढ़ाने के लिए, जैसे कि MACD विचलन, प्रतिगमन हानि को कम करना।
  • पैरामीटर को अनुकूलित करें ताकि सिस्टम के पैरामीटर को मजबूत बनाया जा सके।
  • पोजीशन साइज़िंग को बढ़ाएं। बड़े नुकसान होने पर स्थिति को कम करें।

अनुकूलन दिशा

इस रणनीति को निम्नलिखित पहलुओं से अनुकूलित किया जा सकता हैः

  • इस रणनीति के तहत, ट्रेडर्स को अपने ट्रेडों को कम करने के लिए अपने ट्रेडों को कम करने की आवश्यकता होती है, और ट्रेडों को कम करने के लिए अपने ट्रेडों को कम करने की आवश्यकता होती है।
  • स्टॉपलाइन ऑप्टिमाइज़ेशन मॉड्यूल जोड़ा गया है ताकि स्टॉपलाइन को कीमतों के उतार-चढ़ाव के साथ उचित रूप से समायोजित किया जा सके।
  • स्थिति प्रबंधन मॉड्यूल को जोड़ें और प्रत्येक स्थिति के आकार को अनुकूलित करें।
  • प्रवृत्ति सूचकांक जैसे कि एडीएक्स के साथ प्रवृत्ति को मजबूत या कमजोर करने के लिए, गलत व्यापार से बचें।
  • एक बेहतर लाभ वक्र प्राप्त करने के लिए पैरामीटर का अनुकूलन करें।
  • लेन-देन की लागत जैसे कि स्लाइड पॉइंट्स, शुल्क आदि को ध्यान में रखते हुए।

संक्षेप

इस रणनीति के ट्रेंड ट्रैकिंग के माध्यम से लाभ प्राप्त करने के लिए कुछ लाभ है, लेकिन वास्तविक समय प्रभाव अभी भी परीक्षण की जरूरत है, और अधिक स्थिरता पैरामीटर अनुकूलित करने के लिए, रोकथाम और स्थिति प्रबंधन मॉड्यूल में सुधार करने की जरूरत है, ताकि रणनीति वास्तविक समय व्यापार के लिए अधिक उपयुक्त हो। कुल मिलाकर, इस रणनीति के विचार तर्कसंगत है, और बहुत सुधार की क्षमता है।

रणनीति स्रोत कोड
/*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)