এফএমজেড সিমুলেশন স্তরের ব্যাকটেস্ট প্রক্রিয়া ব্যাখ্যা

লেখক:ভাল, তৈরিঃ 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-লাইন পাওয়ার জন্য API-কে কল করার সময়ের চেয়ে কম হতে হবে। অন্যথায়, নীচের K-লাইনটির বড় চক্র এবং উত্পন্ন টিকারগুলির অপর্যাপ্ত সংখ্যার কারণে, নির্দিষ্ট সময়ের K-লাইন পাওয়ার জন্য API-কে কল করার সময় ডেটা বিকৃত হবে। বড়-অবধি 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
}

সুতরাং, সিমুলেশন স্তরের ব্যাকটেস্ট ব্যবহার করার সময়, সময় সিরিজে মূল্য লাফ হবে।


সম্পর্কিত

আরো