মার্কেট কোট ডেটার সমর্থন গবেষণা, নকশা এবং ব্যাকটেস্ট ট্রেডিং কৌশলগুলির জন্য অপরিহার্য। প্রতিটি বাজার থেকে সমস্ত ডেটা সংগ্রহ করা বাস্তবসম্মত নয়, সর্বোপরি, ডেটা পরিমাণ খুব বড়। ডিজিটাল মুদ্রা বাজারের জন্য, এফএমজেড প্ল্যাটফর্ম এক্সচেঞ্জ এবং ট্রেডিং জোড়ার জন্য সীমিত ব্যাকটেস্ট ডেটা সমর্থন করে। যদি আপনি কিছু এক্সচেঞ্জ এবং ট্রেডিং জোড়া ব্যাকটেস্ট করতে চান যা সাময়িকভাবে এফএমজেড প্ল্যাটফর্ম দ্বারা সমর্থিত ছিল না, আপনি ব্যাকটেস্টের জন্য একটি কাস্টম ডেটা উত্স ব্যবহার করতে পারেন, তবে এই ভিত্তিতে আপনার কাছে ডেটা থাকা প্রয়োজন। অতএব, একটি বাজারের কোট সংগ্রহ প্রোগ্রামের জরুরি প্রয়োজন রয়েছে, যা ধারাবাহিকভাবে এবং রিয়েল টাইমে সর্বোত্তমভাবে প্রাপ্ত করা যায়।
এইভাবে, আমরা বিভিন্ন চাহিদা সমাধান করতে পারি, যেমনঃ
এবং আরো অনেক...
আমরা পাইথন ব্যবহার করার পরিকল্পনা করছি, কেন? কারণ এটা খুবই সুবিধাজনক
পাইথন এর পাইমঙ্গো লাইব্রেরি
কারণ আপনি স্থায়ী স্টোরেজ জন্য ডাটাবেস ব্যবহার করতে হবে. ডাটাবেস নির্বাচন ব্যবহার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
কমান্ডঃ
./mongod -f mongo.conf
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
একটি কৌশল রোবট তৈরি করুন যা ডেটা ব্যবহার করে।
দ্রষ্টব্যঃ আপনাকে
এখানে ঠিকানাঃ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 রিয়েল-টাইম ডেটা প্রয়োজন হয় তবে এটি সামান্য সংশোধন করা যেতে পারে।
বর্তমান উদাহরণ কোডটি কেবল প্রদর্শনীর জন্য। ডাটাবেসের টেবিলের ডেটা রেকর্ডগুলিতে অ্যাক্সেস করার সময়, সমস্ত পাওয়া যায়। এইভাবে, ডেটা সংগ্রহের সময় বাড়ার সাথে সাথে আরও বেশি ডেটা সংগ্রহ করা হয়। সমস্ত ক্যোয়ারী একটি নির্দিষ্ট পরিমাণে কর্মক্ষমতা প্রভাবিত করবে এবং ডিজাইন করা যেতে পারে। কেবলমাত্র বর্তমান ডেটার চেয়ে নতুন ডেটা অনুসন্ধান করা হয় এবং বর্তমান ডেটাতে যুক্ত করা হয়।
ডকার প্রোগ্রাম চালান
যেখানে ডকার অবস্থিত ডিভাইসে, MongoDB ডাটাবেস পরিষেবা চালান
সংগ্রাহক FMZ প্ল্যাটফর্মের বিটিসি_ইউএসডিটি ট্রেডিং জোড়াগুলি সংগ্রহ করতে চালায় WexApp সিমুলেশন এক্সচেঞ্জ মার্কেটের কোটঃ WexApp ঠিকানাঃ https://wex.app/trade?currency=BTC_USDT
রোবট এ ডাটাবেস ডেটা ব্যবহার করেঃ
রোবট বি ডাটাবেজ ডেটা ব্যবহার করেঃ
উইক্সঅ্যাপ পেজঃ
যেমন আপনি ছবিতে দেখতে পাচ্ছেন, বিভিন্ন আইডি সহ রোবটগুলি একটি ডেটা উত্স ব্যবহার করে কে-লাইন ডেটা শেয়ার করে।
এফএমজেড প্ল্যাটফর্মের শক্তিশালী ফাংশনগুলির উপর নির্ভর করে আমরা যে কোনও চক্রেই সহজেই কে-লাইন ডেটা সংগ্রহ করতে পারি। উদাহরণস্বরূপ, আমি একটি 3 মিনিটের কে-লাইন সংগ্রহ করতে চাই, যদি এক্সচেঞ্জের 3 মিনিটের কে-লাইন না থাকে? এটি কোন ব্যাপার না, এটি সহজেই অর্জন করা যেতে পারে।
আমরা সংগ্রাহক রোবটের কনফিগারেশন পরিবর্তন করি, K লাইন সময়কাল 3 মিনিটে সেট করা হয়, এবং FMZ প্ল্যাটফর্ম স্বয়ংক্রিয়ভাবে সংগ্রাহক প্রোগ্রামে একটি 3 মিনিটের K লাইন সংশ্লেষণ করবে।
আমরা মুছে ফেলার জন্য প্যারামিটার ব্যবহার করিthe name of the table
, সেটিংঃ [
শুরু করুনcollector program
, এবং তারপর পুনরায় শুরু করুনstrategy robot using the data
.
আপনি দেখতে পাচ্ছেন যে K-লাইন চার্ট আঁকা হয়েছে, BAR এর মধ্যে ব্যবধান 3 মিনিট, এবং প্রতিটি BAR হল 3 মিনিটের সময়ের সাথে একটি K-লাইন বার।
পরবর্তী সংখ্যায়, আমরা কাস্টম ডেটা উত্সগুলির প্রয়োজনীয়তা বাস্তবায়নের চেষ্টা করব।
পড়ার জন্য ধন্যবাদ!