60 पंक्तियों के कोड के साथ एक विचार को साकार करें - अनुबंध तल मछली पकड़ने की रणनीति

लेखक:लिडिया, बनाया गयाः 2022-11-08 15:30:01, अद्यतन किया गयाः 2023-09-20 09:05:08

img

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

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

तेजी से विकासFMZ.COM

इस विचार को लागू करने के लिए कोड वास्तव में सरल है, प्लेटफॉर्म की लचीलापन, इंटरफ़ेस इन्कैप्सुलेशन, शक्तिशाली बैकटेस्टिंग सिस्टम आदि के लिए धन्यवाद। पूर्ण कोड में केवल 60 पंक्तियाँ हैं (कोड लेखन विनिर्देश के लिए, उनमें से कई संक्षिप्त नहीं हैं) ।

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

रणनीति स्रोत कोडः

function cancelAll() {
    while (true) {
        var orders = _C(exchange.GetOrders)
        if (orders.length == 0) { 
            break 
        }
        for (var i = 0 ; i < orders.length ; i++) {
            exchange.CancelOrder(orders[i].Id, orders[i])
            Sleep(interval)
        }
    }
}

function getLong(arr, kind) {
    var ret = null 
    for (var i = 0 ; i < arr.length ; i++) {
        if (arr[i].Type == (kind == "pos" ? PD_LONG : ORDER_TYPE_BUY)) {
            ret = arr[i]
        }
    }
    return ret
}

function pendingBidOrders(firstPrice) {
    var index = 0
    var amount = baseAmount
    while (true) {
        var pos = _C(exchange.GetPosition)
        var price = firstPrice - index * baseSpacing
        amount *= ratio
        index++
        exchange.SetDirection("buy")
        exchange.Buy(price, amount)        
        if (pos.length != 0) {
            var longPos = getLong(pos, "pos")
            if (longPos) {
                exchange.SetDirection("closebuy")
                exchange.Sell(longPos.Price + profitTarget, longPos.Amount)
            }
        }
        while (true) {
            Sleep(interval)
            if (!getLong(_C(exchange.GetOrders), "orders")) {
                cancelAll()
                break
            }
            if (!getLong(_C(exchange.GetPosition), "pos")) {
                cancelAll()
                return 
            }
        }
    }
}

function main() {
    exchange.SetContractType(symbol)
    while (true) {
        pendingBidOrders(_C(exchange.GetTicker).Last)
    }
}

पैरामीटर डिजाइन भी बहुत सरल हैः

img

केवल इन 6 मापदंडों के साथ।

बैकटेस्टिंग परिणाम को देखो

बैकटेस्टिंग समय सीमा को यादृच्छिक रूप से सेट करेंः

img

बैकटेस्टः

img

img

img

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

रणनीति संहिता केवल अध्ययन और अनुसंधान प्रयोजनों के लिए है।


संबंधित

अधिक