রিসোর্স লোড হচ্ছে... লোডিং...

ট্রেডিং কৌশল একটি অ্যালার্ম ঘড়ি যোগ করুন

লেখক:ভাল, নির্মিতঃ 2020-08-06 11:15:28, আপডেটঃ 2023-10-10 21:14:31

img

ট্রেডিং কৌশলগুলি ডিজাইনকারী ব্যবসায়ীরা প্রায়শই আমাকে জিজ্ঞাসা করে যে কীভাবে কৌশলগুলির জন্য টাইমিং ফাংশনগুলি ডিজাইন করা যায় যাতে কৌশলগুলি নির্দিষ্ট সময়ে নির্দিষ্ট কাজগুলি পরিচালনা করতে পারে। উদাহরণস্বরূপ, কিছু ইনট্রা-ডে কৌশলগুলিকে ট্রেডিং দিনের প্রথম বিভাগ শেষ হওয়ার আগে অবস্থানগুলি বন্ধ করতে হবে। ট্রেডিং কৌশলটিতে এই জাতীয় প্রয়োজনীয়তা কীভাবে ডিজাইন করা যায়? একটি কৌশল প্রচুর সময় নিয়ন্ত্রণ ব্যবহার করতে পারে। এইভাবে, আমরা সময় নিয়ন্ত্রণ কোড এবং কৌশলটির মধ্যে সংযুক্তি হ্রাস করার জন্য সময় নিয়ন্ত্রণ ফাংশনটি ক্যাপসুল করতে পারি, যাতে সময় নিয়ন্ত্রণ মডিউলটি পুনরায় ব্যবহার করা যায় এবং ব্যবহারে সংক্ষিপ্ত হয়।

একটি আলার্ম ঘড়ি ডিজাইন করুন

// triggerTime: 14:58:00
function CreateAlarmClock(triggerHour, triggerMinute) {
    var self = {} // constructed object
    // Set members and functions to the constructed object below
    
    self.isTrigger = false // Has it been triggered that day
    self.triggerHour = triggerHour // The planned trigger hour
    self.triggerMinute = triggerMinute // The planned trigger minute
    self.nowDay = new Date().getDay() // what day is the current time
    
    self.Check = function() { // Check function, check trigger, return true when triggered, return false if not triggered
        var t = new Date() // Get the current time object
        var hour = t.getHours() // Get the current decimal: 0~23
        var minute = t.getMinutes() // Get the current minute: 0~59
        var day = t.getDay() // Get the current number of days

        if (day != self.nowDay) { // Judge, if the current day is not equal to the day of the record, reset the trigger flag as not triggered and update the number of days for the record
            self.isTrigger = false
            self.nowDay = day
        }

        if (self.isTrigger == false && hour == self.triggerHour && minute >= self.triggerMinute) {
            // Determine whether the time is triggered, if it meets the conditions, set the flag isTrigger to true to indicate that it has been triggered
            self.isTrigger = true
            return true
        }

        return false // does not meet the trigger condition, that is, it is not triggered
    }

    return self // return the constructed object
}

আমরা একটি অ্যালার্ম ক্লক অবজেক্ট তৈরি করার জন্য একটি ফাংশন ডিজাইন এবং বাস্তবায়ন করেছি (এটিকে কনস্ট্রাক্টর হিসাবে বোঝা যেতে পারে), এবং অন্যান্য ভাষা সরাসরি একটি অ্যালার্ম ক্লক ক্লাস ডিজাইন করতে পারে (উদাহরণস্বরূপ, পাইথন ব্যবহার করে, আমরা পরে পাইথনে একটি বাস্তবায়ন করব) ।

আলার্ম ঘড়ি অবজেক্ট নির্মাণের জন্য ফাংশনটি ডিজাইন করুন, এবং ব্যবহারে আলার্ম ঘড়ি অবজেক্ট তৈরি করতে কেবলমাত্র একটি কোডের লাইন প্রয়োজন।

var t = CreateAlarmClock(14, 58)

উদাহরণস্বরূপ, একটি বস্তু t তৈরি করুন এবং প্রতিদিন 14:58 এ এটি ট্রিগার করুন। আপনি অন্য t1 বস্তু তৈরি করতে পারেন, যা প্রতিদিন 9:00 এ ট্রিগার করা হয়।

var t1 = CreateAlarmClock(9, 0)

পরীক্ষার কৌশল

আমরা একটি টেস্ট কৌশল লিখি। কৌশলটি সরলতম চলমান গড় সিস্টেম ব্যবহার করে। কৌশলটি কেবল পরীক্ষার জন্য এবং লাভের বিষয়ে চিন্তা করে না। কৌশলগত পরিকল্পনায় প্রতিদিন সকাল ৯ টায় বাজারের উদ্বোধনের সময় দৈনিক চলমান গড় গোল্ডেন ক্রস এবং ডেড ক্রসের উপর ভিত্তি করে একটি পজিশন (লং, শর্ট, কোন ট্রেড) খোলা এবং দুপুর ২ঃ৫৮ টায় পজিশনটি বন্ধ করা হয়।

function CreateAlarmClock(triggerHour, triggerMinute) {
    var self = {} // constructed object
    // Set members and functions to the constructed object below
    
    self.isTrigger = false // Has it been triggered that day
    self.triggerHour = triggerHour // The planned trigger hour
    self.triggerMinute = triggerMinute // The planned trigger minute
    self.nowDay = new Date().getDay() // what day is the current time
    
    self.Check = function() {// Check function, check trigger, return true when triggered, return false if not triggered
        var t = new Date() // Get the current time object
        var hour = t.getHours() // Get the current decimal: 0~23
        var minute = t.getMinutes() // Get the current minute: 0~59
        var day = t.getDay() // Get the current number of days

        if (day != self.nowDay) {// Judge, if the current day is not equal to the day of the record, reset the trigger flag as not triggered and update the number of days for the record
            self.isTrigger = false
            self.nowDay = day
        }

        if (self.isTrigger == false && hour == self.triggerHour && minute >= self.triggerMinute) {
            // Determine whether the time is triggered, if it meets the conditions, set the flag isTrigger to true to indicate that it has been triggered
            self.isTrigger = true
            return true
        }

        return false // does not meet the trigger condition, that is, it is not triggered
    }

    return self // return the constructed object
}

function main() {
    var q = $.NewTaskQueue()
    var p = $.NewPositionManager()
    
    // You can write: var t = CreateAlarmClock(14, 58)
    // You can write: var t1 = CreateAlarmClock(9, 0)
    
    var symbol = "i2009"
    while (true) {
        if (exchange.IO("status")) {
            exchange.SetContractType(symbol)
            var r = exchange.GetRecords()
            if(!r || r.length <20) {
                Sleep(500)
                continue
            }
            if (/*Judging the conditions for opening a position at 9:00*/) {// You can write: t1.Check()
                var fast = TA.MA(r, 2)
                var slow = TA.MA(r, 5)
                
                var direction = ""
                if (_Cross(fast, slow) == 1) {
                    direction = "buy"
                } else if(_Cross(fast, slow) == -1) {
                    direction = "sell"
                }
                if(direction != "") {
                    q.pushTask(exchange, symbol, direction, 1, function(task, ret) {
                        Log(task.desc, ret)
                    })
                }
            }

            if (/*Judging 14:58 conditions for closing the position near the market close*/) {// You can write: t.Check()
                p.CoverAll()
            }

            q.poll()
            LogStatus(_D())
        } else {
            LogStatus(_D())
        }

        Sleep(500)
    }
}

রাখোCreateAlarmClockফাংশন আমরা কৌশল বাস্তবায়ন করেছি, এবং প্রধান ফাংশন শুরুতে দুটি alarm ঘড়ি বস্তু নির্মাণ. কৌশল খোলার এবং বন্ধ অবস্থান নির্ধারণ করতে, কোড যে alarm ঘড়ি বস্তু কল যোগCheckযেমন কোডের মন্তব্য করা অংশ।

ব্যাকটেস্ট

img

আপনি ব্যাকটেস্ট দেখতে পাচ্ছেন, সকাল ৯টার পর পজিশন খোলা এবং রাত ২টা ৫৮ মিনিটে পজিশন বন্ধ।

এটি মাল্টি-বৈচিত্র্য কৌশলগুলির জন্যও ব্যবহার করা যেতে পারে। একাধিক বৈচিত্র্যের সময় নিয়ন্ত্রণের জন্য মাল্টি-বৈচিত্র্যের কৌশলগুলিতে একাধিক আলার্ম ঘড়ি অবজেক্ট তৈরি করা যেতে পারে।

পাইথন ভাষা অ্যালার্ম ঘড়ি ক্লাস বাস্তবায়ন করে

বাস্তবায়ন এবং পরীক্ষার কোডঃ

import time
class AlarmClock:
    def __init__(self, triggerHour, triggerMinute):
        self.isTrigger = False 
        self.triggerHour = triggerHour
        self.triggerMinute = triggerMinute
        self.nowDay = time.localtime(time.time()).tm_wday

    def Check(self):
        t = time.localtime(time.time())
        hour = t.tm_hour
        minute = t.tm_min
        day = t.tm_wday
        
        if day != self.nowDay:
            self.isTrigger = False
            self.nowDay = day
            
        if self.isTrigger == False and hour == self.triggerHour and minute >= self.triggerMinute:
            self.isTrigger = True
            return True
        
        return False 

def main():
    t1 = AlarmClock(14,58)
    t2 = AlarmClock(9, 0)
    while True:
        if exchange.IO("status"):
            LogStatus(_D(), "Already connected!")
            exchange.SetContractType("rb2010")
            ticker = exchange.GetTicker()
            if t1.Check():
                Log("Market Close", "#FF0000")
                
            if t2.Check():
                Log("Market Open", "#CD32CD")
        else :
            LogStatus(_D(), "not connected!")
        Sleep(500)

ব্যাকটেস্ট টেস্ট রানঃ

img

এটা লক্ষ করা উচিত যে ব্যাকটেস্টের জন্য, নীচের স্তরের K-লাইন চক্রটি খুব বড় হতে পারে না, অন্যথায় সময় সনাক্তকরণ পয়েন্টটি সরাসরি লাফিয়ে যেতে পারে এবং কোনও ট্রিগার থাকবে না।


সম্পর্কিত

আরো