avatar of 发明者量化-小小梦 发明者量化-小小梦
پر توجہ دیں نجی پیغام
4
پر توجہ دیں
1271
پیروکار

آپ کو ایک مارکیٹ کلیکٹر کو لاگو کرنے کے لئے قدم بہ قدم سکھائیں

میں تخلیق کیا: 2020-04-16 12:44:03, تازہ کاری: 2024-12-12 20:55:38
comments   7
hits   3870

آپ کو ایک مارکیٹ کلیکٹر کو لاگو کرنے کے لئے قدم بہ قدم سکھائیں

پروگرامیٹک ٹریڈنگ اور مقداری تجارت میں، حکمت عملیوں کی تحقیق کرنا، حکمت عملیوں کو ڈیزائن کرنا، اور بیک ٹیسٹنگ کا تجزیہ مارکیٹ کے اعداد و شمار کے تعاون سے الگ نہیں کیا جا سکتا۔ مارکیٹ پر تمام ڈیٹا اکٹھا کرنا حقیقت پسندانہ نہیں ہے، آخر کار، ڈیٹا کی مقدار بہت زیادہ ہے۔ ڈیجیٹل کرنسی مارکیٹ کے لیے، موجد مقداری تجارتی پلیٹ فارم محدود تبادلے اور تجارتی جوڑوں کے لیے بیک ٹیسٹنگ ڈیٹا کی حمایت کرتا ہے۔ اگر آپ کچھ ایکسچینجز اور ٹریڈنگ جوڑوں کو بیک ٹیسٹ کرنا چاہتے ہیں جو فی الحال ڈیٹا کو سپورٹ نہیں کرتے ہیں۔ آپ بیک ٹیسٹنگ کے لیے حسب ضرورت ڈیٹا کے ذرائع استعمال کر سکتے ہیں، لیکن اس کے لیے آپ کے پاس اپنا ڈیٹا ہونا ضروری ہے۔ لہذا، مارکیٹ کی معلومات جمع کرنے کے پروگرام کی فوری ضرورت ہے جسے مستقل طور پر ذخیرہ کیا جا سکے اور ترجیحی طور پر حقیقی وقت میں حاصل کیا جا سکے۔

یہ کئی ضروریات کو حل کرتا ہے، جیسے:

  • ڈیٹا کے ذرائع متعدد روبوٹس کو فراہم کیے جا سکتے ہیں، جو ایکسچینج انٹرفیس تک رسائی حاصل کرنے والے ہر روبوٹ کی فریکوئنسی کو کم کر سکتے ہیں۔
  • جب روبوٹ شروع ہوتا ہے، تو یہ کافی تعداد میں K-line BARs کے ساتھ K-line ڈیٹا حاصل کر سکتا ہے، لہذا آپ کو اب روبوٹ کے شروع ہونے پر K-line BARs کی ناکافی تعداد کے بارے میں فکر کرنے کی ضرورت نہیں ہے۔
  • یہ انوینٹر کوانٹیٹیو ٹریڈنگ پلیٹ فارم کے بیک ٹیسٹنگ سسٹم کے لیے حسب ضرورت ڈیٹا سورس فراہم کرنے کے لیے چھوٹی کرنسیوں کا مارکیٹ ڈیٹا اکٹھا کر سکتا ہے، تاکہ بیک ٹیسٹنگ سسٹم کو بیک ٹیسٹنگ حکمت عملیوں کے لیے استعمال کیا جا سکے۔
  • وغیرہ

اسے لاگو کرنے کے لیے ازگر کو استعمال کرنے کی منصوبہ بندی، کیوں؟ کیونکہ یہ آسان ہے :) اگر آپ کو ضرورت ہے تو کارروائی کریں!

تیار کریں۔

  • Python کی pymongo لائبریری

کیونکہ مستقل اسٹوریج کے لیے ڈیٹا بیس کی ضرورت ہوتی ہے۔ ڈیٹا سلیکشن کا استعمالMongoDB، مجموعہ پروگرام لکھنے کے لیے ازگر کی زبان استعمال کریں، اس لیے اس ڈیٹا بیس کی ڈرائیور لائبریری کی ضرورت ہے۔ Python پر انسٹالیشنpymongoبس۔

  • ہوسٹ مشین پر MongoDB انسٹال کریں۔

مثال کے طور پر: MAC پر 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                               # 开启校验用户
  • MongoDB سروس چلائیں۔

آرڈر:

  ./mongod -f mongo.conf
  • سروس بند کرو
  use admin;
  db.shutdownServer();

کلکٹر پروگرام کو نافذ کرنا

کلکٹر انوینٹر کوانٹیٹیو ٹریڈنگ پلیٹ فارم پر ایک ازگر روبوٹ حکمت عملی کے طور پر چلتا ہے۔ اپنی محدود Python مہارت کی وجہ سے، میں نے اس مضمون کے خیالات کو ظاہر کرنے کے لیے صرف ایک سادہ مثال کو لاگو کیا۔

کلیکٹر حکمت عملی کوڈ:

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)

یہ دیکھا جا سکتا ہے کہ جو حکمت عملی روبوٹ کوڈ استعمال کرتی ہے وہ ڈیٹا بیس تک رسائی حاصل کر کے ڈیٹا حاصل کرتا ہے، یہ K-line BAR کو ریکارڈ نہیں کرتا ہے۔ مکمل حالت میں اگر موجودہ بار کو حقیقی وقت میں اپ ڈیٹ کرنے کی ضرورت ہے، تو ڈیٹا کو تھوڑا سا تبدیل کیا جا سکتا ہے۔ موجودہ مثال کا کوڈ ڈیٹا بیس میں موجود ڈیٹا ریکارڈز تک رسائی حاصل کرنے کے لیے ہے، جیسا کہ ڈیٹا اکٹھا کرنے کا وقت بڑھتا ہے، زیادہ سے زیادہ ڈیٹا کو جمع کرنے سے کارکردگی متاثر ہوتی ہے۔ ایک خاص حد تک آپ صرف استفسار والے ڈیٹا کو ڈیزائن کر سکتے ہیں جو موجودہ ڈیٹا سے نیا ہے اور اسے موجودہ ڈیٹا میں شامل کر سکتے ہیں۔

چلائیں

میزبان پروگرام چلائیں۔ آپ کو ایک مارکیٹ کلیکٹر کو لاگو کرنے کے لئے قدم بہ قدم سکھائیں

میزبان کے آلے پر، چلائیں۔MongoDBڈیٹا بیس کی خدمات ./mongod -f mongo.conf آپ کو ایک مارکیٹ کلیکٹر کو لاگو کرنے کے لئے قدم بہ قدم سکھائیں

کلکٹر موجد کے مقداری تجارتی پلیٹ فارم کی نقلی ڈسکوں کو جمع کرنے کے لیے دوڑتا ہے۔wexAppکیBTC_USDTتجارتی جوڑے: پتہ:wexApp آپ کو ایک مارکیٹ کلیکٹر کو لاگو کرنے کے لئے قدم بہ قدم سکھائیں

روبوٹ اے ڈیٹا بیس ڈیٹا کا استعمال کرتے ہوئے: آپ کو ایک مارکیٹ کلیکٹر کو لاگو کرنے کے لئے قدم بہ قدم سکھائیں

روبوٹ بی ڈیٹا بیس ڈیٹا کا استعمال کرتے ہوئے: آپ کو ایک مارکیٹ کلیکٹر کو لاگو کرنے کے لئے قدم بہ قدم سکھائیں

wexAppصفحہ: آپ کو ایک مارکیٹ کلیکٹر کو لاگو کرنے کے لئے قدم بہ قدم سکھائیں

جیسا کہ تصویر میں دیکھا جا سکتا ہے، مختلف IDs والے روبوٹ ایک ہی ڈیٹا سورس سے K-line ڈیٹا کا اشتراک کرتے ہیں۔

کسی بھی مدت کا K-line ڈیٹا اکٹھا کریں۔

موجد کے مقداری تجارتی پلیٹ فارم کے طاقتور افعال پر انحصار کرتے ہوئے، ہم آسانی سے کسی بھی دور کا K-line ڈیٹا اکٹھا کر سکتے ہیں۔ مثال کے طور پر، میں 3 منٹ کی K-لائن جمع کرنا چاہتا ہوں، اگر ایکسچینج میں 3 منٹ کی K-لائن نہیں ہے تو مجھے کیا کرنا چاہیے؟ یہ ٹھیک ہے، یہ آسانی سے حاصل کیا جا سکتا ہے.

ہم کلکٹر روبوٹ کی ترتیب میں ترمیم کرتے ہیں اور K-line کی مدت کو 3 منٹ پر سیٹ کرتے ہیں، Inventor Quantitative Trading Platform خود بخود کلیکٹر پروگرام کے لیے 3 منٹ کی K-line کی ترکیب کرے گا۔ آپ کو ایک مارکیٹ کلیکٹر کو لاگو کرنے کے لئے قدم بہ قدم سکھائیں

ہم پیرامیٹر استعمال کرتے ہیں۔删除表的名称ترتیب دیں:["records"]پہلے جمع کردہ 1 منٹ کے K-line ڈیٹا ٹیبل کو حذف کریں۔ 3 منٹ کا K-line ڈیٹا اکٹھا کرنے کے لیے تیار ہوں۔

شروع کریں收集器程序، دوبارہ شروع کریں۔使用数据的策略机器人

آپ کو ایک مارکیٹ کلیکٹر کو لاگو کرنے کے لئے قدم بہ قدم سکھائیں

آپ کو ایک مارکیٹ کلیکٹر کو لاگو کرنے کے لئے قدم بہ قدم سکھائیں

تیار کردہ K-لائن چارٹ سے، آپ دیکھ سکتے ہیں کہ BARs کے درمیان وقفہ 3 منٹ ہے، اور ہر BAR ایک K- لائن کالم ہے جس کی مدت 3 منٹ ہے۔

اگلے شمارے میں، ہم حسب ضرورت ڈیٹا ذرائع کی ضروریات کو لاگو کرنے کی کوشش کریں گے۔ پڑھنے کا شکریہ