
কৌশল গবেষণা, ডিজাইনিং কৌশল, এবং প্রোগ্রামড ট্রেডিং এবং পরিমাণগত ট্রেডিং-এ ব্যাকটেস্টিং বিশ্লেষণ বাজার ডেটার সমর্থন থেকে অবিচ্ছেদ্য। বাজারে সমস্ত ডেটা সংগ্রহ করা অবাস্তব কারণ ডেটার পরিমাণ খুব বেশি। ডিজিটাল মুদ্রা বাজারের জন্য, উদ্ভাবক পরিমাণগত ট্রেডিং প্ল্যাটফর্ম সীমিত এক্সচেঞ্জ এবং ট্রেডিং জোড়া থেকে ব্যাকটেস্ট ডেটা সমর্থন করে। আপনি যদি কিছু এক্সচেঞ্জ এবং ট্রেডিং জোড়া ব্যাকটেস্ট করতে চান যা বর্তমানে ডেটা সমর্থন করে না। আপনি ব্যাকটেস্টিংয়ের জন্য কাস্টম ডেটা উত্স ব্যবহার করতে পারেন, তবে এর জন্য আপনার নিজের ডেটা থাকা প্রয়োজন৷ অতএব, একটি বাজার সংগ্রহ প্রোগ্রামের জন্য একটি জরুরী প্রয়োজন আছে যা স্থায়ী করা যেতে পারে এবং ভালভাবে বাস্তব সময়ে প্রাপ্ত করা যেতে পারে।
এটি বিভিন্ন প্রয়োজনের সমাধান করে, যেমন:
পাইথন ব্যবহার করে এটি বাস্তবায়নের পরিকল্পনা করছেন, কেন? কারণ এটা সুবিধাজনক :) আপনার যদি প্রয়োজন হয় তবে ব্যবস্থা নিন!
কারণ স্থায়ী স্টোরেজের জন্য একটি ডাটাবেস প্রয়োজন। তথ্য নির্বাচনের ব্যবহারMongoDB, সংগ্রহ প্রোগ্রাম লিখতে পাইথন ভাষা ব্যবহার করে, তাই এই ডাটাবেসের ড্রাইভার লাইব্রেরি প্রয়োজন।
পাইথনে ইনস্টল করুনpymongoএটাই।
উদাহরণস্বরূপ: MAC-তে MongoDB ইনস্টল করা, অবশ্যই WIN সিস্টেমে MongoDB ইনস্টল করা একই রকম, অ্যাপল ম্যাক সিস্টেমে ইনস্টলেশনকে উদাহরণ হিসাবে নেওয়া হচ্ছে:
ডাউনলোড ডাউনলোড লিঙ্ক: https://www.mongodb.com/download-center?jmp=nav#community
আনজিপ করুন
ডাউনলোড করার পরে, ডিরেক্টরিতে আনজিপ করুন:/usr/local。
পরিবেশ ভেরিয়েবল কনফিগার করুন
টার্মিনাল ইনপুট:open -e .bash_profile, ফাইল খোলার পরে, লিখুন:export PATH=${PATH}:/usr/local/MongoDB/bin
সংরক্ষণ করার পরে, টার্মিনাল ব্যবহার করুনsource .bash_profileপরিবর্তনগুলি কার্যকর করুন।
ডাটাবেস ফাইল ডিরেক্টরি এবং লগ ডিরেক্টরি ম্যানুয়ালি কনফিগার করুন
ডিরেক্টরি তৈরি করুন/usr/local/data/dbসংশ্লিষ্ট ফোল্ডারে।
ডিরেক্টরি তৈরি করুন/usr/local/data/logsসংশ্লিষ্ট ফোল্ডারে।
কনফিগারেশন ফাইল সম্পাদনা করুনmongo.conf:
#bind_ip_all = true # 任何机器可以连接
bind_ip = 127.0.0.1 # 本机可以访问
port = 27017 # 实例运行在27017端口(默认)
dbpath = /usr/local/data/db # 数据文件夹存放地址(db要预先创建)
logpath = /usr/local/data/logs/mongodb.log # 日志文件地址
logappend = false # 启动时 添加还是重写日志文件
fork = false # 是否后台运行
auth = false # 开启校验用户
আদেশ:
./mongod -f mongo.conf
use admin;
db.shutdownServer();
সংগ্রাহক উদ্ভাবক পরিমাণগত ট্রেডিং প্ল্যাটফর্মে পাইথন বট কৌশল হিসাবে কাজ করে। আমার সীমিত পাইথন স্তরের কারণে, আমি এই নিবন্ধের ধারণাগুলি প্রদর্শন করার জন্য শুধুমাত্র একটি সাধারণ উদাহরণ প্রয়োগ করেছি।
সংগ্রাহক কৌশল কোড:
import pymongo
import json
def main():
Log("测试数据收集")
# 连接数据库服务
myDBClient = pymongo.MongoClient("mongodb://localhost:27017") # mongodb://127.0.0.1:27017
# 创建数据库
huobi_DB = myDBClient["huobi"]
# 打印目前数据库表
collist = huobi_DB.list_collection_names()
Log("collist:", collist)
# 检测是否删除表
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, "删除:", dropName)
ret = tab.drop()
collist = huobi_DB.list_collection_names()
if dropName in collist:
Log(dropName, "删除失败")
else :
Log(dropName, "删除成功")
# 创建records表
huobi_DB_Records = huobi_DB["records"]
# 请求数据
preBarTime = 0
index = 1
while True:
r = _C(exchange.GetRecords)
if len(r) < 2:
Sleep(1000)
continue
if preBarTime == 0:
# 首次写入所有BAR数据
for i in range(len(r) - 1):
# 逐根写入
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)
সম্পূর্ণ নীতি ঠিকানা:লিঙ্ক
ডেটা ব্যবহার করে এমন কৌশল বট তৈরি করুন।
দ্রষ্টব্য: চেক করা প্রয়োজন“লাইন ড্রয়িং লাইব্রেরি”, যদি না হয়, আপনি আপনার নিজস্ব কৌশল লাইব্রেরিতে একটি অনুলিপি করতে পারেন।

import pymongo
import json
def main():
Log("测试使用数据库数据")
# 连接数据库服务
myDBClient = pymongo.MongoClient("mongodb://localhost:27017") # mongodb://127.0.0.1:27017
# 创建数据库
huobi_DB = myDBClient["huobi"]
# 打印目前数据库表
collist = huobi_DB.list_collection_names()
Log("collist:", collist)
# 查询数据打印
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)
# 使用画线类库,把取到的K线数据画出来
ext.PlotRecords(arrRecords, "K")
LogStatus(_D(), "records length:", len(arrRecords))
Sleep(10000)
এটা দেখা যায় যে স্ট্র্যাটেজি রোবট কোড কোন এক্সচেঞ্জ ইন্টারফেস অ্যাক্সেস করে না এবং ডাটাবেস অ্যাক্সেস করে ডেটা প্রাপ্ত করে এটি বর্তমান BAR ডেটাকে সম্পূর্ণ অবস্থায় সংগ্রহ করে। আপনার যদি রিয়েল টাইমে বর্তমান বার প্রয়োজন হয় তবে ডেটা সামান্য পরিবর্তন করা যেতে পারে। বর্তমান উদাহরণ কোডটি শুধুমাত্র ডেমোনস্ট্রেশনের জন্য, যখন ডাটাবেসের সারণীতে ডেটা রেকর্ড করা হয়, এইভাবে ডেটা সংগ্রহের সময় বৃদ্ধি পায় এবং আরও বেশি করে ডেটা সংগ্রহ করা হয় একটি নির্দিষ্ট পরিমাণে কর্মক্ষমতা প্রভাবিত করে আপনি শুধুমাত্র বর্তমান ডেটার চেয়ে নতুন ডেটা ডিজাইন করতে পারেন এবং বর্তমান ডেটাতে যোগ করেন।
কাস্টোডিয়ান প্রোগ্রাম চালান

হোস্ট অবস্থিত যেখানে ডিভাইসে, চালানMongoDBডাটাবেস পরিষেবা
./mongod -f mongo.conf

সংগ্রাহক উদ্ভাবকের পরিমাণগত ট্রেডিং প্ল্যাটফর্মের সিমুলেটেড ডিস্ক সংগ্রহ করতে দৌড়ায়।wexAppএরBTC_USDTট্রেডিং জোড়া:
ঠিকানা:wexApp

রোবট A ডাটাবেস ডেটা ব্যবহার করে:

ডাটাবেস ডেটা ব্যবহার করে রোবট বি:

wexAppপৃষ্ঠা:

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

আমরা পরামিতি ব্যবহার করি删除表的名称, সেট আপ করুন:["records"]পূর্বে সংগৃহীত 1-মিনিটের কে-লাইন ডেটা টেবিল মুছুন। 3-মিনিটের কে-লাইন ডেটা সংগ্রহ করার জন্য প্রস্তুত হন।
শুরু收集器程序, পুনরায় চালু করুন使用数据的策略机器人。


আপনি টানা কে-লাইন চার্টটি দেখতে পারেন বারগুলির মধ্যে ব্যবধান 3 মিনিট, এবং প্রতিটি বার হল একটি কে-লাইন বার যার একটি 3-মিনিট।
পরবর্তী সংখ্যায়, আমরা কাস্টম ডেটা উত্সগুলির প্রয়োজনীয়তাগুলি বাস্তবায়ন করার চেষ্টা করব৷ পড়ার জন্য ধন্যবাদ