वैकल्पिक व्यापारिक विचार--के-लाइन क्षेत्र व्यापारिक रणनीति

लेखक:लिडिया, बनाया गयाः 2023-11-06 13:33:17, अद्यतन किया गयाः 2024-01-01 12:20:19

img

इस लेख में, हम अवधारणा का पता लगाएंगे और स्क्रिप्ट को लागू करने का प्रयास करेंगे।

के-लाइन क्षेत्र की रणनीति का मुख्य विचार

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

के-लाइन क्षेत्र की रणनीति का सिद्धांत

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

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

के-लाइन क्षेत्र की रणनीति के फायदे

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

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

के-लाइन क्षेत्र की रणनीति का जोखिम

यद्यपि के-लाइन क्षेत्र की रणनीति में कुछ फायदे हैं, लेकिन इसमें कुछ जोखिम भी हैं, जिनमें शामिल हैंः

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

के-लाइन क्षेत्र की रणनीति का अनुकूलन दिशा

के-लाइन क्षेत्र की रणनीति को अनुकूलित करने के लिए, निम्नलिखित दिशाओं पर विचार करें:

  • मापदंड अनुकूलन: विभिन्न बाजार स्थितियों और व्यापारिक आवश्यकताओं के अनुकूल होने के लिए लगातार सीमा मानों और KDJ संकेतक मापदंडों को समायोजित और अनुकूलित करें।
  • जोखिम प्रबंधनः हानि के जोखिम को कम करने के लिए स्टॉप-लॉस और लाभ लेने के नियमों सहित प्रभावी जोखिम प्रबंधन रणनीतियों को लागू करें।
  • बहु-रणनीति संयोजनः व्यापक व्यापारिक रणनीतियों के प्रदर्शन में सुधार के लिए अन्य रणनीतियों के साथ के-लाइन क्षेत्र रणनीति को मिलाएं।
  • वास्तविक समय में निगरानी और समायोजनः रणनीतियों के प्रदर्शन की नियमित निगरानी करें, वास्तविक स्थितियों के आधार पर समायोजन और सुधार करें।

जावास्क्रिप्ट का उपयोग करके रणनीति लागू करें

  • के-लाइन क्षेत्रफल की गणना करें

  • लंबी स्थिति खोलने का संकेतः

    (1) घटती प्रवृत्ति का K-लाइन क्षेत्र सीमा तक पहुँच जाता है, इसे पूर्व निर्धारित किया जा सकता है।

    (2) KDJ सूचक का मान 80 से अधिक है।

  • शॉर्ट पोजीशन खोलने का संकेतः

    (1) ऊपर की ओर बढ़ने वाले रुझान का K-लाइन क्षेत्र सीमा तक पहुँच जाता है, इसे पहले से निर्धारित किया जा सकता है।

    (2) KDJ संकेतक का मान 20 से कम है।

  • लंबे/लघु पदों के लिए बाहर निकलनाः एटीआर के पीछे स्टॉप लॉस और लाभ लेना।

कोड कार्यान्वयन

// Parameter
var maPeriod = 30
var threshold = 50000
var amount = 0.1

// Global variable
let c = KLineChart({})
let openPrice = 0
let tradeState = "NULL"  // NULL BUY SELL

function calculateKLineArea(r, ma) {
    var lastCrossUpIndex = null
    var lastCrossDownIndex = null
    for (var i = r.length - 1 ; i >= 0 ; i--) {
        if (ma[i] !== null && r[i].Open < ma[i] && r[i].Close > ma[i]) {
            lastCrossUpIndex = i
            break
        } else if (ma[i] !== null && r[i].Open > ma[i] && r[i].Close < ma[i]) {
            lastCrossDownIndex = i
            break
        }

        if (i >= 1 && ma[i] !== null && ma[i - 1] !== null && r[i - 1].Close < ma[i - 1] && r[i].Close > ma[i]) {
            lastCrossUpIndex = i
            break
        } else if (i >= 1 && ma[i] !== null && ma[i - 1] !== null && r[i - 1].Close > ma[i - 1] && r[i].Close < ma[i]) {
            lastCrossDownIndex = i
            break
        }
    }

    var area = 0
    if (lastCrossDownIndex !== null) {
        for (var i = r.length - 1 ; i >= lastCrossDownIndex ; i--) {
            area -= Math.abs(r[i].Close - ma[i])
        }
    } else if (lastCrossUpIndex !== null) {
        for (var i = r.length - 1 ; i >= lastCrossUpIndex ; i--) {
            area += Math.abs(r[i].Close - ma[i])
        }
    }

    return [area, lastCrossUpIndex, lastCrossDownIndex]
}

function onTick() {
    var r = _C(exchange.GetRecords)
    if (r.length < maPeriod) {
        LogStatus(_D(), "Insufficient number of K-line")
        return 
    }
    var ma = TA.MA(r, maPeriod)
    var atr = TA.ATR(r)
    var kdj = TA.KDJ(r)
    var lineK = kdj[0]
    var lineD = kdj[1]
    var lineJ = kdj[2]
    var areaInfo = calculateKLineArea(r, ma)
    var area = _N(areaInfo[0], 0)
    var lastCrossUpIndex = areaInfo[1]
    var lastCrossDownIndex = areaInfo[2]
    
    r.forEach(function(bar, index) {
        c.begin(bar)
        c.plotcandle(bar.Open, bar.High, bar.Low, bar.Close, {overlay: true})
        let maLine = c.plot(ma[index], "ma", {overlay: true})
        let close = c.plot(bar.Close, 'close', {overlay: true})
        c.fill(maLine, close, {color: bar.Close > ma[index] ? 'rgba(255, 0, 0, 0.1)' : 'rgba(0, 255, 0, 0.1)'})
        if (lastCrossUpIndex !== null) {
            c.plotchar(bar.Time, {char: '$:' + area, overlay: true})
        } else if (lastCrossDownIndex !== null) {
            c.plotchar(bar.Time, {char: '$:' + area, overlay: true})
        }
        c.plot(lineK[index], "K")
        c.plot(lineD[index], "D")
        c.plot(lineJ[index], "J")

        c.close()
    })
    
    if (tradeState == "NULL" && area < -threshold && lineK[lineK.length - 1] > 70) {
        // long
        let tradeInfo = $.Buy(amount)
        if (tradeInfo) {
            openPrice = tradeInfo.price
            tradeState = "BUY"
        }
    } else if (tradeState == "NULL" && area > threshold && lineK[lineK.length - 1] < 30) {
        // short
        let tradeInfo = $.Sell(amount)
        if (tradeInfo) {
            openPrice = tradeInfo.price
            tradeState = "SELL"
        }
    }
    
    let stopBase = tradeState == "BUY" ? Math.max(openPrice, r[r.length - 2].Close) : Math.min(openPrice, r[r.length - 2].Close)
    if (tradeState == "BUY" && r[r.length - 1].Close < stopBase - atr[atr.length - 2]) {
        // cover long
        let tradeInfo = $.Sell(amount)
        if (tradeInfo) {
            tradeState = "NULL"
            openPrice = 0
        }        
    } else if (tradeState == "SELL" && r[r.length - 1].Close > stopBase + atr[atr.length - 2]) {
        // cover short 
        let tradeInfo = $.Buy(amount)
        if (tradeInfo) {
            tradeState = "NULL"
            openPrice = 0
        }        
    }

    LogStatus(_D(), "area:", area, ", lineK[lineK.length - 2]:", lineK[lineK.length - 2])
}


function main() {    
    if (exchange.GetName().includes("_Futures")) {
        throw "not support Futures"
    }
    while (true) {
        onTick()
        Sleep(1000)
    }
}

रणनीति का तर्क बहुत सरल हैः

  1. सबसे पहले, कुछ वैश्विक चर और मापदंडों को परिभाषित किया गया है, जिनमें निम्नलिखित शामिल हैंः

रणनीतिक मापदंड

  • maPeriod: चलती औसत की अवधि।
  • थ्रेसहोल्डः खरीद या बिक्री के समय को निर्धारित करने के लिए उपयोग की जाने वाली थ्रेसहोल्ड।
  • मात्राः प्रत्येक लेनदेन के लिए मात्रा।

वैश्विक चर

  • c: एक K-लाइन चार्ट ऑब्जेक्ट, जिसका उपयोग चार्ट खींचने के लिए किया जाता है।
  • openPrice: उद्घाटन मूल्य को रिकॉर्ड करता है।
  • tradeState: व्यापार की स्थिति दर्ज करता है, जो NULL (खाली स्थिति), BUY या SELL हो सकती है।

कार्य गणना करें

  • calculateKLineArea फंक्शन: इसका उपयोग एक निश्चित अवधि के दौरान K-लाइन चार्ट पर मूल्य और चलती औसत रेखा के बीच के क्षेत्र की गणना करने के लिए किया जाता है, और क्षेत्र मूल्य, अंतिम ऊपर की ओर क्रॉसिंग K-लाइन का सूचकांक और अंतिम नीचे की ओर क्रॉसिंग K-लाइन का सूचकांक लौटाता है। इन मूल्यों का उपयोग बाद के निर्णयों में किया जाता है कि कब खरीदना और बेचना है।

मुख्य लूप फ़ंक्शन

  • onTick फ़ंक्शन: यह मुख्य रणनीति निष्पादन फ़ंक्शन है, और यहाँ फ़ंक्शन के भीतर संचालन हैंः

    a. नवीनतम के-लाइन डेटा प्राप्त करें और सुनिश्चित करें कि के-लाइनों की संख्या maPeriod से कम नहीं है, अन्यथा स्थिति और रिटर्न रिकॉर्ड करें।

    b. चलती औसत रेखा ma और एटीआर संकेतक atr, साथ ही केडीजे संकेतक की गणना करें।

    c. areaInfo से क्षेत्र की जानकारी प्राप्त करें, अंतिम क्रॉस-ओवर K-लाइन सूचकांक, और अंतिम क्रॉस-अंडर K-लाइन सूचकांक।

    d. मूल्य के चलती औसत रेखा से संबंध के आधार पर विभिन्न रंगों में भरते हुए K-लाइन चार्ट ऑब्जेक्ट c का उपयोग करके K-लाइन और संकेतक लाइनें खींचें।

    ई. शर्तों के अनुसार खरीद या बिक्री का समय निर्धारित करें:

    यदि tradeState NULL है, और क्षेत्र -सीमा से कम है, और KDJ का K मान 70 से अधिक है, तो एक खरीद ऑपरेशन निष्पादित करें। यदि tradeState NULL है, और क्षेत्र सीमा से अधिक है, और KDJ का K मान 30 से कम है, तो एक बेचने का कार्य निष्पादित करें। f. स्टॉप लॉस और लाभ लेने की शर्तें निर्धारित करें। यदि ये शर्तें पूरी हो जाती हैं, तो पदों को बंद करेंः

    यदि यह ख़रीदने की स्थिति में है, जब कीमत पिछले ट्रेडिंग दिन की समापन कीमत से घटाकर पिछले दिनों के एटीआर (औसत सच्ची सीमा) से नीचे गिर जाती है, तो बंद स्थिति। यदि यह बिकने की स्थिति में है, तो जब कीमत पिछले ट्रेडिंग दिन की समापन मूल्य और पिछले दिनों के एटीआर (औसत सच्ची सीमा) से ऊपर बढ़ जाती है, तो स्थिति बंद हो जाती है।

    main function: यह मुख्य निष्पादन प्रविष्टि बिंदु के रूप में कार्य करता है। यह जांचता है कि क्या एक्सचेंज नाम में _Futures शामिल है। यदि ऐसा है, तो एक अपवाद फेंक दिया जाएगा; अन्यथा यह एक अनंत लूप में प्रवेश करता है जहां onTick फ़ंक्शन हर सेकंड निष्पादित होता है।

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

परFMZ.COM, जावास्क्रिप्ट भाषा का उपयोग करने के लिए कोड की कई पंक्तियों की आवश्यकता नहीं थी, इसके बजाय, इस मॉडल को आसानी से लागू किया गया था। और KLineChart फ़ंक्शन की मदद से K-लाइन चार्ट क्षेत्र का ग्राफिकल प्रतिनिधित्व भी आसानी से प्राप्त किया गया था। टेम्पलेट के भीतर कैप्सुलेटेड फ़ंक्शंस के माध्यम से ऑर्डर देने के लिए डिजिटल करेंसी स्पॉट ट्रेडिंग लाइब्रेरी टेम्पलेट का उपयोग करके रणनीति डिजाइन क्रिप्टोक्यूरेंसी स्पॉट बाजारों की ओर जाता है, जो इसे बहुत सरल और समझने और उपयोग करने में आसान बनाता है।

रणनीति बैकटेस्टिंग

img

img

मैंने यादृच्छिक रूप से एक बैकटेस्टिंग अवधि का चयन किया। हालांकि मैंने पैसा नहीं खोया, मैंने लगातार लाभ भी नहीं जमा किया, और निकासी का मुद्दा काफी महत्वपूर्ण है। रणनीति के लिए अन्य दिशाओं और अनुकूलन के लिए जगह होनी चाहिए। जो लोग रुचि रखते हैं वे रणनीति को अपग्रेड करने की कोशिश कर सकते हैं।

img img

रणनीति के माध्यम से, हमने न केवल एक अपरंपरागत व्यापारिक विचार सीखा, बल्कि आरेखों को प्लॉट करने का तरीका भी सीखा; K-लाइन और चलती औसत रेखा द्वारा संलग्न क्षेत्र का प्रतिनिधित्व करना; KDJ संकेतकों को प्लॉट करना आदि।

सारांश

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


अधिक