4
ফোকাস
1271
অনুসারী

পাইথন সংস্করণ একক প্ল্যাটফর্ম ভারসাম্য কৌশল

তৈরি: 2020-02-05 10:02:03, আপডেট করা হয়েছে: 2023-10-12 21:20:47
comments   1
hits   2701

পাইথন সংস্করণ একক প্ল্যাটফর্ম ভারসাম্য কৌশল

পাইথন সংস্করণ একক প্ল্যাটফর্ম ভারসাম্য কৌশল

জাভাস্ক্রিপ্ট সংস্করণ

কৌশল ঠিকানা: https://www.fmz.com/strategy/345

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

কৌশল বর্ণনা

জাভাস্ক্রিপ্ট সংস্করণ থেকে উদ্ধৃত:

এর জন্য একটি পজিশন খোলার প্রয়োজন হয়, উদাহরণস্বরূপ, অ্যাকাউন্টে 5,000 ইউয়ান এবং 1 মুদ্রা থাকলে এবং মূল্যের পার্থক্য থ্রেশহোল্ডের চেয়ে বেশি হলে, মুদ্রার মূল্য এখন 6,000 ইউয়ান। , এটি বিক্রি করুন (600 0-5000)/6000/2 কয়েন, এর অর্থ হল মুদ্রার মূল্য বৃদ্ধি পেয়েছে, যদি মুদ্রার অবমূল্যায়ন হয়ে থাকে, উদাহরণস্বরূপ, 4000 ইউয়ান, কিনুন (5000-4000)/4000/2 মুদ্রা, যখন কারেন্সি পড়ে যায়, কিছু ফেরত কিনুন, এবং যদি এটি আবার বেড়ে যায়, এটি আবার বিক্রি করুন, এটি একটি ভারসাম্যের মতো, উভয় পক্ষের বিভিন্ন হেজিং সহ, তাই আমি এটিকে একটি ভারসাম্যপূর্ণ কৌশল নাম দিয়েছি।

কৌশলটির নীতিটি খুবই সহজ, এবং কোডের জাভাস্ক্রিপ্ট সংস্করণটি দীর্ঘ নয়, শুধুমাত্র 70 টিরও বেশি লাইন। আরও সংক্ষিপ্ত সিনট্যাক্স সহ একটি পাইথন ভাষা কৌশলে স্থানান্তরিত, কোডটি সংক্ষিপ্ত করা হয়েছে এবং নতুনদের শেখার জন্য খুবই উপযুক্ত সেখানে উদ্ভাবক পরিমাণগত ট্রেডিং প্ল্যাটফর্মে বিকাশকারীদের দ্বারা ভাগ করা প্রচুর কোড এবং ভাষা সমর্থন রয়েছে।JavaScript/C++/Pythonইত্যাদি।

নীতি কোড

'''backtest
start: 2019-12-01 00:00:00
end: 2020-02-01 11:00:00
period: 1m
exchanges: [{"eid":"OKEX","currency":"BTC_USDT","stocks":1}]
'''

InitAccount = None

def CancelPendingOrders():
    ret = False
    while True:
        orders = _C(exchange.GetOrders)
        if len(orders) == 0 :
            return ret

        for j in range(len(orders)):
            exchange.CancelOrder(orders[j].Id)
            ret = True
            if j < len(orders) - 1:
                Sleep(Interval)
    return ret 

def onTick():
    acc = _C(exchange.GetAccount)
    ticker = _C(exchange.GetTicker)
    spread = ticker.Sell - ticker.Buy
    diffAsset = (acc.Balance - (acc.Stocks * ticker.Sell)) / 2
    ratio = diffAsset / acc.Balance
    LogStatus("ratio:", ratio, _D())
    if abs(ratio) < threshold:
        return False
    if ratio > 0 :
        buyPrice = _N(ticker.Sell + spread, ZPrecision)
        buyAmount = _N(diffAsset / buyPrice, XPrecision)
        if buyAmount < MinStock:
            return False
        exchange.Buy(buyPrice, buyAmount, diffAsset, ratio)
    else :
        sellPrice = _N(ticker.Buy - spread, ZPrecision)
        sellAmount = _N(-diffAsset / sellPrice, XPrecision)
        if sellAmount < MinStock:
            return False 
        exchange.Sell(sellPrice, sellAmount, diffAsset, ratio)
    return True

def main():
    global InitAccount, LoopInterval
    InitAccount = _C(exchange.GetAccount)
    LoopInterval = max(LoopInterval, 1)
    while True:
        if onTick():
            Sleep(1000)
            CancelPendingOrders()
            Log(_C(exchange.GetAccount))
        Sleep(LoopInterval * 1000)

কোড দিয়ে শুরু হয়

'''backtest
start: 2019-12-01 00:00:00
end: 2020-02-01 11:00:00
period: 1m
exchanges: [{"eid":"OKEX","currency":"BTC_USDT","stocks":1}]
'''

এটি ব্যাকটেস্ট কনফিগারেশন, যার অর্থ ব্যাকটেস্ট কনফিগারেশন (সেটিংস) কোড আকারে সংরক্ষিত হয় এবং ব্যাকটেস্টিংয়ের সময় এটি স্বয়ংক্রিয়ভাবে এই সেটিং অনুযায়ী কনফিগার হয়। এই অংশটি মুছে ফেলা হলে, ব্যাকটেস্ট করার সময় আপনাকে ব্যাকটেস্ট পৃষ্ঠায় ব্যাকটেস্ট কনফিগারেশন তথ্য সেট করতে হবে। তথ্যসূত্র: https://www.fmz.com/bbs-topic/859

এই কৌশলের প্যারামিটারগুলি জাভাস্ক্রিপ্ট সংস্করণের মতোই কৌশল কোডটি বাক্য দ্বারা পরিবর্তিত হয়েছে

ব্যাকটেস্ট

পরামিতি কনফিগারেশন পাইথন সংস্করণ একক প্ল্যাটফর্ম ভারসাম্য কৌশল

পরিসংখ্যান পাইথন সংস্করণ একক প্ল্যাটফর্ম ভারসাম্য কৌশল

পাইথন সংস্করণ একক প্ল্যাটফর্ম ভারসাম্য কৌশল

কৌশল ঠিকানা: https://www.fmz.com/strategy/183374

কৌশলটি শুধুমাত্র রেফারেন্সের জন্য, ব্যাকটেস্টিং এবং পরীক্ষার জন্য আপনি যদি আগ্রহী হন তবে আপনি অপ্টিমাইজ এবং আপগ্রেড করতে পারেন।