संसाधन लोड हो रहा है... लोड करना...

एफएमजेड सिमुलेशन स्तर बैकटेस्ट तंत्र की व्याख्या

लेखक:अच्छाई, बनाया गयाः 2020-06-04 09:46:50, अद्यतन किया गयाः 2023-11-01 20:32:27

img

बैकटेस्ट आर्किटेक्चर

एफएमजेड प्लेटफॉर्म बैकटेस्ट प्रोग्राम एक पूर्ण नियंत्रण प्रक्रिया है, और कार्यक्रम एक निश्चित आवृत्ति के अनुसार नॉन-स्टॉप पोलिंग कर रहा है। प्रत्येक बाजार और ट्रेडिंग एपीआई द्वारा लौटाए गए डेटा कॉल समय के अनुसार वास्तविक चलने के समय का भी अनुकरण करता है। यहonTickस्तर, नहींonBarअन्य बैकटेस्ट सिस्टम के स्तर पर।Tickerडेटा (अधिक परिचालन आवृत्ति वाली रणनीतियाँ) ।

सिमुलेशन स्तर बैकटेस्ट और वास्तविक बाजार स्तर बैकटेस्ट के बीच का अंतर

  • सिमुलेशन स्तर का बैकटेस्ट

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

  • वास्तविक बाजार स्तर का बैकटेस्ट

वास्तविक बाजार स्तर बैकटेस्ट वास्तविक टिकर स्तर डेटा हैBarवास्तविक बाजार स्तर पर बैकटेस्ट वास्तविक बाजार स्तर पर बैकटेस्ट वास्तविक रिकॉर्ड किए गए डेटा हैं, सिमुलेटेड नहीं।

सिमुलेशन स्तर बैकटेस्ट तंत्र-नीचे की रेखा K

वास्तविक बाजार बैकटेस्ट के लिए कोई निचला K-लाइन विकल्प नहीं है (क्योंकि टिकर डेटा वास्तविक है, उत्पादन का अनुकरण करने के लिए किसी निचले K-लाइन की आवश्यकता नहीं है) ।

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

नीचे की K पंक्ति के लिए टिकर डेटा कैसे उत्पन्न करें

निचले K लाइन पर अनुकरणीय टिकर उत्पन्न करने का तंत्र प्रसिद्ध ट्रेडिंग सॉफ्टवेयर मेटाट्रेडर 4 के समान है

img img img img

टिकर डेटा उत्पन्न करने के लिए एल्गोरिथ्म कोड

नीचे के-लाइन डेटा से टिक डेटा का अनुकरण करने के लिए विशिष्ट एल्गोरिथ्मः

function recordsToTicks(period, num_digits, records) {
    // http://www.metatrader5.com/en/terminal/help/tick_generation
    if (records.length == 0) {
        return []
    }
    var ticks = []
    var steps = [0, 2, 4, 6, 10, 12, 16, 18, 23, 25, 27, 29]
    var pown = Math.pow(10, num_digits)

    function pushTick(t, price, vol) {
        ticks.push([Math.floor(t), Math.floor(price * pown) / pown, vol])
    }

    for (var i = 0; i < records.length; i++) {
        var T = records[i][0]
        var O = records[i][1]
        var H = records[i][2]
        var L = records[i][3]
        var C = records[i][4]
        var V = records[i][5]
        if (V > 1) {
            V = V - 1
        }
        if ((O == H) && (L == C) && (H == L)) {
            pushTick(T, O, V)
        } else if (((O == H) && (L == C)) || ((O == L) && (H == C))) {
            pushTick(T, O, V)
        } else if ((O == C) && ((O == L) || (O == H))) {
            pushTick(T, O, V / 2)
            pushTick(T + (period / 2), (O == L ? H : L), V / 2)
        } else if ((C == H) || (C == L)) {
            pushTick(T, O, V / 2)
            pushTick(T + (period * 0.382), (C == L ? H : L), V / 2)
        } else if ((O == H) || (O == L)) {
            pushTick(T, O, V / 2)
            pushTick(T + (period * 0.618), (O == L ? H : L), V / 2)
        } else {
            var dots = []
            var amount = V / 11
            pushTick(T, O, amount)
            if (C > O) {
                dots = [
                    O - (O - L) * 0.75,
                    O - (O - L) * 0.5,
                    L,
                    L + (H - L) / 3.0,
                    L + (H - L) * (4 / 15.0),
                    H - (H - L) / 3.0,
                    H - (H - L) * (6 / 15.0),
                    H,
                    H - (H - C) * 0.75,
                    H - (H - C) * 0.5,
                ]
            } else {
                dots = [
                    O + (H - O) * 0.75,
                    O + (H - O) * 0.5,
                    H,
                    H - (H - L) / 3.0,
                    H - (H - L) * (4 / 15.0),
                    H - (H - L) * (2 / 3.0),
                    H - (H - L) * (9 / 15.0),
                    L,
                    L + (C - L) * 0.75,
                    L + (C - L) * 0.5,
                ]
            }
            for (var j = 0; j < dots.length; j++) {
                pushTick(T + period * (steps[j + 1] / 30.0), dots[j], amount)
            }
        }
        pushTick(T + (period * 0.98), C, 1)
    }
    return ticks
}

इसलिए, सिमुलेशन स्तर बैकटेस्ट का उपयोग करते समय, समय श्रृंखला में मूल्य कूदेंगे।


संबंधित

अधिक