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

আপনাকে শেখান কিভাবে একটি বাজার কোট সংগ্রহকারী বাস্তবায়ন

লেখক:ভাল, তৈরিঃ 2020-05-30 10:03:39, আপডেটঃ 2023-11-02 19:52:02

img

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

এইভাবে, আমরা বিভিন্ন চাহিদা সমাধান করতে পারি, যেমনঃ

  • একাধিক রোবটকে ডেটা উত্স দিয়ে সরবরাহ করা যেতে পারে, যা বিনিময় ইন্টারফেসে প্রতিটি রোবটের অ্যাক্সেসের ফ্রিকোয়েন্সি সহজ করতে পারে।
  • আপনি রোবট স্টার্ট করার সময় পর্যাপ্ত সংখ্যক K-line BAR দিয়ে K-line ডেটা পেতে পারেন, এবং রোবট স্টার্ট করার সময় পর্যাপ্ত সংখ্যক K-line BAR নিয়ে আপনাকে আর চিন্তা করতে হবে না।
  • এটি বিরল মুদ্রার বাজার তথ্য সংগ্রহ করতে পারে এবং FMZ প্ল্যাটফর্ম ব্যাকটেস্ট সিস্টেমের জন্য একটি কাস্টম ডেটা উত্স সরবরাহ করতে পারে।

এবং আরো অনেক...

আমরা পাইথন ব্যবহার করার পরিকল্পনা করছি, কেন? কারণ এটা খুবই সুবিধাজনক

প্রস্তুত

  • পাইথন এর পাইমঙ্গো লাইব্রেরি কারণ আপনি স্থায়ী স্টোরেজ জন্য ডাটাবেস ব্যবহার করতে হবে. ডাটাবেস নির্বাচন ব্যবহারMongoDBএবং পাইথন ভাষা সংগ্রহ প্রোগ্রাম লিখতে ব্যবহৃত হয়, তাই এই ডাটাবেসের ড্রাইভার লাইব্রেরি প্রয়োজন হয়. শুধু ইনস্টল করুনpymongoপাইথনে।

  • হোস্টিং ডিভাইসে MongoDB ইনস্টল করুন উদাহরণস্বরূপঃ ম্যাকোস মঙ্গোডিবি ইনস্টল করে, উইন্ডোজ সিস্টেমের সাথে একই মঙ্গোডিবি ইনস্টল করে। অনলাইনে অনেক টিউটোরিয়াল রয়েছে। ম্যাকোস সিস্টেমের ইনস্টলেশন উদাহরণ হিসাবে নিনঃ

  • ডাউনলোড করুন ডাউনলোড লিংকঃhttps://www.mongodb.com/download-center?jmp=nav#community

  • আনজিপ করুন ডাউনলোড করার পর, ডিরেক্টরিতে আনজিপ করুনঃ/usr/local

  • পরিবেশ ভেরিয়েবল কনফিগার করুন টার্মিনাল ইনপুটঃopen -e .bash_profileফাইল খোলার পর লিখুন:exportPATH=${PATH}:/usr/local/MongoDB/binসংরক্ষণ করার পর, টার্মিনালে, ব্যবহারsource .bash_profileপরিবর্তনগুলি কার্যকর করার জন্য।

  • ম্যানুয়ালি ডাটাবেস ফাইল ডিরেক্টরি এবং লগ ডিরেক্টরি কনফিগার করুন ডিরেক্টরিতে সংশ্লিষ্ট ফোল্ডার তৈরি করুন/usr/local/data/db. ডিরেক্টরিতে সংশ্লিষ্ট ফোল্ডার তৈরি করুন/usr/local/data/logs.

কনফিগারেশন ফাইল সম্পাদনা করুনmongo.conf:

#bind_ip_all = true # Any computer can connect
bind_ip = 127.0.0.1 # Local computer can access
port = 27017 # The instance runs on port 27017 (default)
dbpath = /usr/local/data/db # data folder storage address (db need to be created in advance)
logpath = /usr/local/data/logs/mongodb.log # log file address
logappend = false # whether to add or rewrite the log file at startup
fork = false # Whether to run in the background
auth = false # Enable user verification
  • MongoDB সার্ভিস চালান

কমান্ডঃ

./mongod -f mongo.conf
  • MongoDB পরিষেবা বন্ধ করুন
use admin;
db.shutdownServer();

সংগ্রাহক প্রোগ্রাম বাস্তবায়ন করুন

সংগ্রাহকটি এফএমজেড প্ল্যাটফর্মে পাইথন রোবট কৌশল হিসাবে কাজ করে। আমি এই নিবন্ধের ধারণাগুলি দেখানোর জন্য একটি সহজ উদাহরণ বাস্তবায়ন করেছি।

সংগ্রাহক প্রোগ্রাম কোডঃ

import pymongo
import json

def main():
    Log("Test data collection")
    
    # Connect to the database service
    myDBClient = pymongo.MongoClient("mongodb://localhost:27017")   # mongodb://127.0.0.1:27017
    # Create a database
    huobi_DB = myDBClient["huobi"]
    
    # Print the current database table
    collist = huobi_DB.list_collection_names()
    Log("collist:", collist)
    
    # Check if the table is deleted
    arrDropNames = json.loads(dropNames)
    if isinstance(arrDropNames, list):
        for i in range(len(arrDropNames)):
            dropName = arrDropNames[i]
            if isinstance(dropName, str):
                if not dropName in collist:
                    continue
                tab = huobi_DB[dropName]
                Log("dropName:", dropName, "delete:", dropName)
                ret = tab.drop()
                collist = huobi_DB.list_collection_names()
                if dropName in collist:
                    Log(dropName, "failed to delete")
                else :
                    Log(dropName, "successfully deleted")
    
    # Create the records table
    huobi_DB_Records = huobi_DB["records"]
    
    # Request data
    preBarTime = 0
    index = 1
    while True:
        r = _C(exchange.GetRecords)
        if len(r) < 2:
            Sleep(1000)
            continue
        if preBarTime == 0:
            # Write all BAR data for the first time
            for i in range(len(r) - 1):
                # Write one by one
                bar = r[i]
                huobi_DB_Records.insert_one({"index": index, "High": bar["High"], "Low": bar["Low"], "Open": bar["Open"], "Close": bar["Close"], "Time": bar["Time"], "Volume": bar["Volume"]})                
                index += 1
            preBarTime = r[-1]["Time"]
        elif preBarTime != r[-1]["Time"]:
            bar = r[-2]
            huobi_DB_Records.insert_one({"index": index, "High": bar["High"], "Low": bar["Low"], "Open": bar["Open"], "Close": bar["Close"], "Time": bar["Time"], "Volume": bar["Volume"]})
            index += 1
            preBarTime = r[-1]["Time"]
        LogStatus(_D(), "preBarTime:", preBarTime, "_D(preBarTime):", _D(preBarTime/1000), "index:", index)
        Sleep(10000)

সম্পূর্ণ কৌশল ঠিকানাঃhttps://www.fmz.com/strategy/199120

ব্যবহারের তথ্য

একটি কৌশল রোবট তৈরি করুন যা ডেটা ব্যবহার করে। দ্রষ্টব্যঃ আপনাকে python PlotLine Template চেক করতে হবে, যদি আপনার কাছে এটি না থাকে, আপনি কৌশল স্কোয়ার থেকে আপনার কৌশল লাইব্রেরিতে একটি কপি করতে পারেন।

img

এখানে ঠিকানাঃhttps://www.fmz.com/strategy/39066

import pymongo
import json

def main():
    Log("Test using database data")
    
    # Connect to the database service
    myDBClient = pymongo.MongoClient("mongodb://localhost:27017")   # mongodb://127.0.0.1:27017
    # Create a database
    huobi_DB = myDBClient["huobi"]
    
    # Print the current database table
    collist = huobi_DB.list_collection_names()
    Log("collist:", collist)
    
    # Query data printing
    huobi_DB_Records = huobi_DB["records"]
    
    while True:
        arrRecords = []
        for x in huobi_DB_Records.find():
            bar = {
                "High": x["High"], 
                "Low": x["Low"], 
                "Close": x["Close"], 
                "Open": x["Open"], 
                "Time": x["Time"], 
                "Volume": x["Volume"]
            }
            arrRecords.append(bar)
        
        # Use the line drawing library to draw the obtained K-line data
        ext.PlotRecords(arrRecords, "K")
        LogStatus(_D(), "records length:", len(arrRecords))
        Sleep(10000)

এটি দেখা যায় যে কৌশল রোবট কোড যা ডেটা ব্যবহার করে কোন এক্সচেঞ্জ ইন্টারফেস অ্যাক্সেস করে না। ডেটাবেস অ্যাক্সেস করে ডেটা পাওয়া যায়। মার্কেট কালেক্টর প্রোগ্রাম বর্তমান BAR ডেটা রেকর্ড করে না। এটি সম্পূর্ণ অবস্থায় K-লাইন BAR সংগ্রহ করে। যদি বর্তমান BAR রিয়েল-টাইম ডেটা প্রয়োজন হয় তবে এটি সামান্য সংশোধন করা যেতে পারে।

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

দৌড়াও

ডকার প্রোগ্রাম চালান

img

যেখানে ডকার অবস্থিত ডিভাইসে, MongoDB ডাটাবেস পরিষেবা চালান

img

সংগ্রাহক FMZ প্ল্যাটফর্মের বিটিসি_ইউএসডিটি ট্রেডিং জোড়াগুলি সংগ্রহ করতে চালায় WexApp সিমুলেশন এক্সচেঞ্জ মার্কেটের কোটঃ WexApp ঠিকানাঃ https://wex.app/trade?currency=BTC_USDT

img

রোবট এ ডাটাবেস ডেটা ব্যবহার করেঃ

img

রোবট বি ডাটাবেজ ডেটা ব্যবহার করেঃ

img

উইক্সঅ্যাপ পেজঃ

img

যেমন আপনি ছবিতে দেখতে পাচ্ছেন, বিভিন্ন আইডি সহ রোবটগুলি একটি ডেটা উত্স ব্যবহার করে কে-লাইন ডেটা শেয়ার করে।

যেকোনো সময়ের কে-লাইন ডেটা সংগ্রহ করুন

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

আমরা সংগ্রাহক রোবটের কনফিগারেশন পরিবর্তন করি, K লাইন সময়কাল 3 মিনিটে সেট করা হয়, এবং FMZ প্ল্যাটফর্ম স্বয়ংক্রিয়ভাবে সংগ্রাহক প্রোগ্রামে একটি 3 মিনিটের K লাইন সংশ্লেষণ করবে।

img

আমরা মুছে ফেলার জন্য প্যারামিটার ব্যবহার করিthe name of the table, সেটিংঃ [records] পূর্বে সংগৃহীত ১ মিনিটের কে-লাইন ডেটা টেবিল মুছে ফেলুন। ৩ মিনিটের কে-লাইন ডেটা সংগ্রহের জন্য প্রস্তুত হন।

শুরু করুনcollector program, এবং তারপর পুনরায় শুরু করুনstrategy robot using the data.

img

img

আপনি দেখতে পাচ্ছেন যে K-লাইন চার্ট আঁকা হয়েছে, BAR এর মধ্যে ব্যবধান 3 মিনিট, এবং প্রতিটি BAR হল 3 মিনিটের সময়ের সাথে একটি K-লাইন বার।

পরবর্তী সংখ্যায়, আমরা কাস্টম ডেটা উত্সগুলির প্রয়োজনীয়তা বাস্তবায়নের চেষ্টা করব।

পড়ার জন্য ধন্যবাদ!


সম্পর্কিত

আরো