ای پی آئی دستاویزات (پیتھن ورژن) کے کچھ حصے پرانے ہیں اور انہیں تازہ ترین ای پی آئی دستاویزات کے مطابق تبدیل کرنے کی ضرورت ہے تاکہ غلط فہمی پیدا نہ ہو۔

مصنف:چھوٹا سا خواب, تخلیق: 2016-10-21 09:38:12, تازہ کاری: 2017-12-04 16:51:55

API دستاویزات (پائیتون ورژن)

شاید کچھ نئے صارفین کے لئے واقف زبان پائیٹون ہے، جاوا سکرپٹ زبان کے لئے واقف نہیں. صارف کو فوری طور پر انٹرفیس کی خصوصیات کو سمجھنے کے لئے آسان بنانے کے لئے.

  • 0 python بنیادی گرائمر ٹیوٹوریل لنک

runoob.comآپ کو یہاں پر python زبان کی تفصیلی نحو کا حوالہ مل سکتا ہے۔

  • 1 ڈیٹا ڈھانچہ: کچھ عام طور پر استعمال شدہ ڈیٹا ڈھانچے جو ٹرانزیکشن فنکشن کے ذریعہ واپس آتے ہیں۔

    • ریکارڈ: معیاری او ایچ ایل سی لغت (Dict) ، جو K لائنوں کو ڈرائنگ کرنے اور اشارے کے تجزیہ کے لئے استعمال ہوتی ہے ، جس میں GetRecords فنکشن کی طرف سے اس لغت کی فہرست (List) واپس آتی ہے۔
{
    'Volume': 153.8109090909091, # 交易量。
    'High'  : 4237.59,       # 最高价。
    'Low'   : 4237.59,       # 最低价。
    'Time'  : 1476892800000, # 这个字典数据的键值,时间间隔是以【毫秒】为单位的。
                             # 引入time模块,time.time()函数返回的时间,间隔是以秒为单位的浮点小数。所以在python语言中时间运算、对比时需要处理。
    'Close' : 4237.59,       # 收盘价。
    'Open'  : 4237.59        # 开盘价。
}
  • مارکیٹ آرڈر: مارکیٹ کی گہرائی کی فہرست، GetDepth () فنکشن کی واپسی کی لغت میں مطلوبہ بٹن Asks ٹن اور فعال بڈز ٹن کی قدر MarketOrder لغت کی تشکیل کی فہرست ہے۔
{
    'Price'  : 4237.58,  # 市场深度单 的价格 (订单薄 的某一档的 价格)。
    'Amount' : 15        # 市场深度单 的量  (订单薄 的某一档的量)。
}
  • ٹکر: مارکیٹ کی صنعت، اس لغت کا ڈیٹا GetTicker ((() فنکشن کے ذریعہ واپس کیا جاتا ہے۔
{
    'Sell'   : 4237.6,   # 卖一价。
    'Volume' : 100,      # 最近成交量。
    'Buy'    : 4237.58,  # 买一价。
    'Last'   : 4237.59,  # 最后成交价。
    'High'   : 4237.6,   # 最高价。
    'Low'    : 4237.58   # 最低价。
}
  • آرڈر: آرڈر ڈکشنری کا ڈیٹا ، جو گیٹ آرڈر فنکشن کے ذریعہ لوٹایا جاتا ہے
{
    'Status': 1,         # 订单状态, 参考常量里的订单状态,以下是此键值的常量。
                         # ORDER_STATE_PENDING  :未完成
                         # ORDER_STATE_CLOSED   :已关闭
                         # ORDER_STATE_CANCELED :已取消
                         
    'Amount': 20.0,      # 下单数量。
    'DealAmount': 20.0,  # 成交数量。
    'Price': -1,         # 下单价格,-1 为市价单。
    
    'Type': 0,           # 订单类型, 参考常量里的订单类型,以下是此键值的常量。
                         # ORDER_TYPE_BUY   :买单
                         # ORDER_TYPE_SELL  :卖单

    'Id': 1,             # 交易单唯一标识。
    'AvgPrice': 4237.6   # JS的API文档没有写此项,此键已经更新可用,此键是交易成交均价。
}
  • گہرائی: مارکیٹ کی گہرائی ، جو گیٹ ڈیپتھ فنکشن کے ذریعہ لوٹائی جاتی ہے ، جو ڈیٹا ایک لغت ہے ، جس کی کلید کی قیمت ایک فہرست ہے جس میں لغت (مارکیٹ آرڈر) شامل ہے۔
{
    'Bids': [                                  # 买单列表, 包含MarketOrder字典的列表, 按价格从低向高排序
             {'Price': 4237.58, 'Amount': 15}, 
             {'Price': 4237.57, 'Amount': 15}, 
             {'Price': 4237.56, 'Amount': 15},
             ...
            ], 
    'Asks': [                                  # 卖单列表, 包含MarketOrder字典的列表, 按价格从高向低排序
             {'Price': 4237.6, 'Amount': 15}, 
             {'Price': 4237.61, 'Amount': 15}, 
             {'Price': 4237.62, 'Amount': 15}, 
             ...
            ]
}
  • تجارت: تمام تجارت کی تاریخ (اپنے آپ کے علاوہ) حاصل کریں ، جو گیٹ ٹریڈس فنکشن کے ذریعہ لوٹایا جاتا ہے۔
[
    map[
         Price:4283.16           # 价格
         Time:1.477020122e+12    # 时间(Unix timestamp 毫秒) 
         Type:0                  # 订单类型
         Amount:0.048            # 数量
         Id:5.213554531e+09      # 订单ID (JS API文档没写)
       ] 
    ...
]

یہاں دوبارہ لکھنے کے بعد ، مندرجہ بالا پرنٹ آؤٹ پٹ اصلی ڈسک لاگ آؤٹ ہے ، ٹریڈ سے پہلے لاگ کی جانچ پڑتال ہے۔ کیا کوئی فرق پایا گیا ہے۔ اصلی ڈسک لاگ کی معلومات میں کچھ نقشے ہیں ، جو [] کے پیچھے نمائندگی کرتے ہیں لغت ہے ، بغیر نقشے کی فہرست ہے۔img

  • فیس: فیس کا ڈھانچہ ، جو فنکشن گیٹ فیس کے ذریعہ واپس کیا جاتا ہے (جیسے غیر ملکی پلیٹ فارم bitfinex خریدنے اور فروخت کرنے کی فیس اکاؤنٹ کے حجم سے وابستہ ہے)
{
    'Sell': 0.03,  # 卖出手续费, 为一个浮点数, 如0.2表示0.2%的手续费
    'Buy': 0.03    # 买入手续费, 格式同上
}
  • اکاؤنٹ: اکاؤنٹ کی معلومات، حاصل کریں اکاؤنٹ کی طرف سے واپس
{
    'Balance': 10000.0,    # 余额(人民币或者美元, 在Poloniex交易所里BTC_ETC这样的品种, Balance就指的是BTC的数量, 
                           # Stocks指的是ETC数量, BTC38的ETC_BTC相当于Poloniex的BTC_ETC, 指的是以BTC计价)
    
    'Stocks': 3.0,         # BTC/LTC数量, 现货为当前可操作币的余额(去掉冻结的币), 
                           # 期货的话为合约当前可用保证金(传统期货为此属性)
                           
    'FrozenBalance': 0.0,  # 冻结的余额
    'FrozenStocks': 0.0    # 冻结的BTC/LTC数量(传统期货无此属性)
}
  • ٹرانزیکشن فنکشن: exchange یا exchanges میں ذخیرہ کردہ ایک ایکسچینج کے پاس موجود ایک فنکشن جیسے ((نیچے دیئے گئے دستاویزات میں ٹیسٹ کیا گیا ہے)

    • GetName: تبادلے کا نام لوٹاتا ہے (string)
exchange.GetName()  # 测试的交易所是OKCoin,用Log 函数输出 Log(exchange.GetName()),  显示为 : OKCoin
  • GetLabel: تبادلہ کی طرف سے اپنی مرضی کے مطابق ٹیگ واپس (string)
exchange.GetLabel() # 在添加交易所的时候,可以设置标签,用来区别同一个交易所的不同账户,比如标签设置为OKCoin1、OKCoin2
  • GetUSDCNY: تبادلے میں استعمال ہونے والی ڈالر کی شرح واپس کرتا ہے ، OKCoin فیوچر سرکاری طور پر فراہم کردہ شرح (float) واپس کرتا ہے ، جس کی قیمت SetRate سے متاثر نہیں ہوتی ہے
Log(exchange.GetUSDCNY(),type(exchange.GetUSDCNY())) # 交易所为OKCoin ,输出显示 6.7294 <type 'float'>
  • گیٹ ریٹ: زر مبادلہ میں استعمال ہونے والی کرنسیوں اور چینی روبائن کی شرح تبادلہ کو واپس کرتا ہے ، اور غیر ملکی کرنسی کا تبادلہ USD / EUR / CNY ہے
# 汇率接口调用雅虎提供的接口, 5分钟更新一次
# 所有函数自动经过汇率转换,在脚本层,自动都转换为人民币,下单也是用人民币价格,不管内盘外盘
Log(exchange.GetRate()) # 交易所为OKCoin期货  输出显示6.7294
  • سیٹ ریٹ: ایکسچینج میں گردش کرنے والی کرنسی اور چینی روبوں کے درمیان شرح تبادلہ مقرر کریں ، غیر ملکی کرنسی USD / EUR CNY کے مقابلے میں ہے ، اور اس سے پہلے کی شرح تبادلہ کو واپس کریں
比如OKCoin期货设置SetRate(6.13), 就是设定USD/EUR对CNY的汇率为6.13, 程序所有价格会自动用这个汇率计算
SetRate(), 如果不加参数,则恢复系统内置汇率
exchange.SetRate(6.13)    #  交易所为OKCoin期货 
Log(exchange.GetRate())   #  6.13
exchange.SetRate()
Log(exchange.GetRate())   #  6.7294
  • GetCurrency: واپسی کی کرنسی کا نام (string) ، روایتی فیوچر سی ٹی پی واپسی کے لئے مقرر اسٹاک
Log(exchange.GetCurrency())   # 交易所为OKCoin期货,标的物 BTC, 函数返回字符串,输出 BTC
  • GetTicker: ایک ٹککر لغت واپس، دستاویز - ڈیٹا کی ساخت کے بارے میں مزید معلومات کے لئے
Log(exchange.GetTicker())  #  返回 行情数据
                             #  {'Sell': 4259.98, 'Volume': 100, 'Buy': 4259.96, 'Last': 4259.97, 'High': 4259.98, 'Low': 4259.96}
  • GetDepth: ایک گہرائی لغت واپس
Log(exchange.GetDepth())  # 返回 市场深度数据(订单薄)如下
{
    'Bids': [{'Price': 4259.96, 'Amount': 15}, {'Price': 4259.95, 'Amount': 15}], ...  #买单列表:买一、买二
    'Asks': [{'Price': 4259.98, 'Amount': 15}, {'Price': 4259.99, 'Amount': 15}], ...  #卖单列表:卖一、卖二
}
  • گیٹ ٹریڈز: ٹریڈ ڈکشنری پر مشتمل ایک فہرست واپس کرتا ہے ، جو صرف ڈیجیٹل کرنسیوں (بی ٹی سی / ایل ٹی سی) کی حمایت کرتا ہے ، وقت کے لحاظ سے کم سے زیادہ ترتیب میں
Log("GetTrades()函数 返回:", exchange.GetTrades())  # 回测不支持此函数,以下实盘测试
                                                  # GetTrades()函数 返回: 
[map[Price:4295.43 Time:1.47710627e+12 Type:1 Amount:0.02 Id:5.222046713e+09] 
 map[Price:4295.42 Time:1.47710627e+12 Type:1 Amount:0.23 Id:5.222046715e+09] 
 map[Price:4295.49 Time:1.477106271e+12 Type:0 Amount:0.01 Id:5.222046763e+09]
 ...
 ]
  • GetRecords ((Period): ایک K لائن کی تاریخ واپس کرتا ہے، جس میں ریکارڈ کی لغت پر مشتمل فہرست ہے، جس میں K لائن کی مدت روبوٹ کی تخلیق کے وقت مخصوص کی گئی ہے
# 不加参数, 默认返回添加机器人时时指量的K线周期, 但也可以自定义K线周期
# 支持: PERIOD_M1 指1分钟, PERIOD_M5 指5分钟, PERIOD_M15 指15分钟, PERIOD_M30 指30分钟, PERIOD_H1 指1小时, PERIOD_D1 指一天
Log(exchange.GetRecords()) # 获取K线数据,并输出显示。
[{'Volume': 8637.650000000,'High': 4259.0,'Low': 4257.56,'Time': 1476964200000,'Close': 4258.85,'Open': 4257.6},# 第一根K线bar
 {'Volume': 14325.999999999,'High': 4258.95,'Low': 4256.0,'Time': 1476964500000,'Close': 4256.25,'Open': 4258.87},# 第二根K线bar
 ...
 {'Volume': 1339.070000000, 'High': 4258.38, 'Low': 4257.0, 'Time': 1476967200000, 'Close': 4258.12, 'Open': 4257.0} 
 # 最后一根(最新)K线bar。(这一根的数据除了Time 键值,其它的都是时刻变化的,只有这个周期完成数据才确定。)
 ]
  • GetAccount: ایک اکاؤنٹ لغت، جیسے exchange.GetAccount ((() واپس کرتا ہے، جو مرکزی تبادلے کے اکاؤنٹ کی معلومات واپس کرتا ہے
Log(exchanges[0].GetName(), exchanges[0].GetAccount())
Log(exchanges[1].GetName(), exchanges[1].GetAccount())
# exchange 和 exchanges[0] 都代表策略第一个添加的交易所(主交易所)
# 输出显示: 
# OKCoin {'Balance': 10000.0, 'Stocks': 3.0, 'FrozenBalance': 0.0, 'FrozenStocks': 0.0} 
# Huobi {'Balance': 10000.0, 'Stocks': 3.0, 'FrozenBalance': 0.0, 'FrozenStocks': 0.0}
  • خرید (Price, Amount): اگلی خریداری، قیمت خریداری کی قیمت ہے، رقم مقدار ہے، ایک آرڈر ID واپس کرتا ہے
可以跟多余的参数做为附加消息显示到日志, 如exchange.Buy(1000,0.1, "OK", 123)
支持现货(火币/BitVC/OKCoin/OKCoin国际/OKCoin期货)市价单, 市价单价格指定为-1
id1 = exchange.Buy(4300,1)     # 日期                  平台    类型  价格     数量   信息
                                   # 2016-10-21 00:00:00  OKCoin  买入  4300     1
id2 = exchange.Buy(-1, 8000)   # 市价单 的第二个参数的意义是  购买8000金额的 币数。
  • Sell ((Price, Amount): خریدنے کے فنکشن کی طرح کال کرنے کا طریقہ اور منظر
id1 = exchange.Sell(4300,1) #     日期                     平台        类型      价格      数量     信息
                                #     2016-10-21 00:00:00     OKCoin      卖出      市价单     1	
id2 = exchange.Sell(-1, 1)  #     日期                     平台        类型      价格      数量     信息
                                #     2016-10-21 00:00:00     OKCoin      卖出      4300      1
                            # 一般错误提示: 小于允许的最小交易单位,大部分是这个原因(参数1是1块钱而不是1个币)。
  • GetOrders: تمام غیر مکمل احکامات حاصل کریں اور ایک آرڈر لغت کی فہرست واپس کریں
# 区别于 GetOrder 函数,该函数不加参数,返回一个列表。
id1 = exchange.Sell(4500,1)
id2 = exchange.Buy(2300, 1)
Log(exchange.GetOrders())
# Log输出以下信息(状态是未成交)
[{'Status': 0, 'Amount': 1.0, 'DealAmount': 0.0, 'Price': 4500.0, 'Type': 1, 'Id': 1, 'AvgPrice': 0.0}, 
{'Status': 0, 'Amount': 1.0, 'DealAmount': 0.0, 'Price': 2300.0, 'Type': 0, 'Id': 2, 'AvgPrice': 0.0}]
  • GetOrder ((orderId): آرڈر نمبر کے مطابق آرڈر کی تفصیلات حاصل کریں اور آرڈر لغت کو واپس کریں
id1 = exchange.Sell(4500,1)
Log(exchange.GetOrder(id1))
# {'Status': 0, 'Amount': 1.0, 'DealAmount': 0.0, 'Price': 4500.0, 'Type': 1, 'Id': 1, 'AvgPrice': 0.0}
  • CancelOrder ((orderId): آرڈر نمبر کے مطابق آرڈر منسوخ کریں، true یا false لوٹائیں
根据Buy 、Sell 函数返回的 订单id , 或者 Order字典 中的id 键值, 取消指定id 的订单。 可以扩展代码循环调用,用来取消所有未完成的挂单。
  • GetMinStock: کم سے کم ٹرانزیکشن کی رقم واپس کریں
回测和实盘精度有区别,可以自行测试一下。
  • GetMinPrice: ایک آرڈر کے لئے کم سے کم رقم کی واپسی (قیمت * مقدار)
Bitstamp要求5美元(程序会根据汇率自动转换为人民币), 其它没有限制
  • GetFee: ایک فیس لغت واپس
Log(exchange.GetFee())  # OKCoin 实盘测试 map[Sell:0 Buy:0]
  • GetRawJSON: پچھلے REST API درخواست کے ذریعہ واپس آنے والے اصل مواد (سٹرنگ) کو واپس کرتا ہے جو صارف اپنے آپ کو توسیع کی معلومات کو تجزیہ کرنے کے لئے استعمال کرسکتا ہے۔
# 注: 模拟测试的话,会一直返回一个空字符串, 只在真实环境下有效
ticker = exchange.GetTicker()
Log("GetRawJSON:", exchange.GetRawJSON())
Log("type(json1)", type(json1))
# OKCoin 实盘 输出 GetRawJSON: 
# {"date":"1477130308","ticker":{"buy":"4337.33","high":"4345.97","last":"4337.32","low":"4280.0",
# "sell":"4337.38","vol":"1164227.77"}}
# type(json1) <type 'str'>
  • Go ((Method, Args...): ملٹی تھریڈ اسینکرونک سپورٹ فنکشن جو تمام سپورٹ کردہ فنکشنز کے آپریشنز کو اسینکرونک بیک وقت بناتا ہے۔ (صرف ڈیجیٹل کرنسی BTC/LTC کی حمایت کرتا ہے)
Support: GetTicker, GetDepth, GetTrades, GetRecords, GetAccount, GetOrders, GetOrder, CancelOrder, Buy, Sell, GetPosition
# Python与Javascript的区别, Python的wait返回两个参数, 第一个是异步的api返回的结果, 第二个表示是异步调用是否完成
ret, ok = d.wait() # ok是一定返回True的, 除非策略被停止
ret, ok = d.wait(100) # ok返回False, 如果等待超时, 或者wait了一个已经结束的实例
  • IO ((api, ApiName, Args): ایکسچینج کے دیگر فنکشنل انٹرفیس کو کال کریں
exchange.IO("api", "cancel_borrow", "symbol=cny&borrow_id=123"); # no need api & sign
ret = exchange.IO("websocket")
Log("is Open websocket mode:", ret)
# OKCoin 实盘 输出: is Open websocket mode: websocket
  • گلوبل فنکشن: کچھ توسیعی افعال جو نظام فراہم کرتا ہے ، ((بلٹ ان _C ، _N ، _G)

    • ورژن: سسٹم کا موجودہ ورژن نمبر، سٹرنگ ویلیو، جیسے 3.0 لوٹاتا ہے۔
Log("当前的托管者版本为:" ,Version())
# 回测使用 云端服务器 ,输出:  当前的托管者版本为: 3.1
  • لاگ: ایک پیغام کو لاگ لسٹ میں محفوظ کریں
i = 1
Bool = False
string = "hello world!"
Dict = {"name": "jack", "age": 18}
List = [Dict, "I love python!"] 
Log("输出信息,可以加多个参数。参数可以是各种类型。", "--Dict:", Dict,"--List:", 
        List, "--Number:", i, "--String:", string, "--Bool:", Bool)   
# 输出:可以加多个参数。参数可以是各种类型。 
# --Dict: {'age': 18, 'name': 'jack'} --List: [{'age': 18, 'name': 'jack'}, 'I love python!'] 
#       --Number: 1 --String: hello world! --Bool: False
  • Sleep ((ملی سیکنڈ): سوتے ہوئے فنکشن
参数为毫秒数,如Sleep(1000)为休眠一秒, 该函数在回测时根据参数大小会影响回测速度, 大小一般为500 或者 1000 。
  • لاگپروفٹ ((پروفٹ): منافع کی ریکارڈنگ ، جو کل منافع کی قیمت ہے ، اور اس کی قسم فلوٹ پوائنٹس کی تعداد ہے۔
def main():
    i = 0 # 定义一个int 型变量,控制循环次数
    while i < 10: # 循环体, i 小于 10 为 True 时执行循环,为False 了跳出循环。
        i += 1    # 每次i 值自己加1 , i += 1 即: i = i + 1 
        LogProfit(i) # 在日志中输出 盈利数值,  并且在收益图表上显示出来。
        Sleep(1000)
        # 显示如下图

img

  • LogProfitReset: تمام آمدنی کے نوشتہ جات کو خالی کریں، ایک عددی پیرامیٹر کے ساتھ، محفوظ کردہ اندراجات کی وضاحت کریں
def main():
    i = 0
    LogProfitReset(5) # 在开始调用,用于清除上次执行后的收益图表,参数为5 表示保留上次最后5个收益数据。
    while i < 10:
        i += 1
        LogProfit(i)
        Sleep(1000)
# 使用OKCoin 实盘测试, 第一次启动策略显示 输出了10个收益日志信息,图表也显示了10个点的收益曲线。
# 第二次启动策略同样显示了10个收益日志信息(日志信息并没有清除。),图表上的数据保留了之前的最后5条(需要刷新下)。
  • لاگ ری سیٹ: تمام لاگوں کو خالی کریں، ایک عددی پیرامیٹر کے ساتھ، محفوظ کردہ ریکارڈ کی وضاحت کریں
# 该函数只清除日志信息,(需要刷新下才能看出来),在加参数时如果希望保留之前的N条日志的话,参数需要写N+1,
# 因为策略开始运行第一条语句前会输出一条启动日志,所以需要多保留一条(参数加1,即N+1)。图表没有变化。
  • LogStatus ((Msg): یہ معلومات لاگ لسٹ میں محفوظ نہیں کی جاتی ہیں ، صرف موجودہ روبوٹ کی حیثیت کی معلومات کو اپ ڈیٹ کرتی ہیں ، جو لاگ کے اوپری حصے میں دکھائی دیتی ہیں ، متعدد بار کال کی جاسکتی ہیں ، حالت کو اپ ڈیٹ کریں
    LogStatus('这是一个普通的状态提示')
    LogStatus('这是一个红色字体的状态提示 #ff0000')
    LogStatus('这是一个多行的状态信息\n我是第二行')
    
    LogStatus("`data:image/png;base64,AAAA`")
    # LogStatus支持打印base64编码后的图片, 以"`"开头, 以"`"结尾, 如LogStatus("`data:image/png;base64,AAAA`")
    # 网上有转换工具,比如这个网站: http://tool.css-js.com/base64.html  。
    # 选择图片转换后的代码直接替换掉 LogStatus("`data:image/png;base64,AAAA`")中的 `data:image/png;base64,AAAA` 就可以了。
    
    table = {"type":'table',"title":'持仓信息',"cols": ['列1', '列2'],"rows":[ ['abc', 'def'],['ABC', 'support color #ff0000']]};
    LogStatus('`' + json.dumps(table)+'`'); # 需要 import json 模块
    
    table = {"type":'table',"title":'持仓信息',"cols": ['列1', '列2'],"rows":[ ['abc', 'def'],['ABC', 'support color #ff0000']]};
    LogStatus('第一行消息\n`' + json.dumps(table)+'`\n第三行消息'); # 表格信息也可以在多行中出现
    
    table = {"type":'table',"title":'持仓信息',"cols": ['列1', '列2'],"rows":[ ['abc', 'def'],['ABC', 'support color #ff0000']]};
    LogStatus('`' + json.dumps([table, table])+'`'); # 支持多个表格同时显示, 将以TAB显示到一组里
    # json.dumps方法对简单数据类型encoding(转为JSON),json.loads方法处理简单数据类型的decoding(转为python对象)
  • EnableLog ((IsEnable): کلک کریں کھولیں یا بند کریں کلک کریں کلک کریں کلک کریں
# 参数是布尔值: False  、 True  (区别于 JavaScript 的 false 、 true)。
  • Chart (({...}): چارٹ ڈرائنگ کی تقریب
import json
chart = {
    '__isStock': True,
    'title': {
        'text': '测试API :Chart({...}) '
    },
    'yAxis': {
        'plotLines': [{
            'value': 4520,
            'color': 'red',
            'width': 2,
            'label': {
                'text': 'line1',
                'align': 'center'
            },
        }, {
            'value': 4500,
            'color': 'green',
            'width': 2,
            'label': {
                'text': 'line2',
                'align': 'center'
            },
        }]
    },
    'series': [{
        'type': 'candlestick',
        'name': '当前周期',
        'id': 'primary',
        'data': []
    }]
}
def main():
    global chart  # 记得 引用全局
    records = _C(exchange.GetRecords) # 获取 K线数据
    obj_chart = Chart(chart) # 创建 图表对象
    obj_chart.reset() # 清空
    for i in range(len(records)): #  遍历 Dict records 
        b = records[i] #  间接一下,少些点代码
        obj_chart.add(0,[b['Time'], b['Open'], b['High'], b['Low'], b['Close']]) # 向图表中写入 K线数据
    obj_chart.update(chart)   # 更新图表,  记得调用 API :  update 的时候传入 JSON 图表结构(这里是chart)
    
    # 1、参数为可以JSON序列化的HighStocks的Highcharts.StockChart参数, 比原生的参数增加一个__isStock属性, 
    #    如果指定__isStock: false, 则显示为普通图表
    # 2、返回对像可以调用add([series索引(如0), 数据])向指定索引的series添加数据, 调用reset()清空图表数据, 
    #    reset可以带一个数字参数, 指定保留的条数
    # 3、可以调用add([series索引(如0), 数据, 此数据在series中的索引])来更改数据
    #    可以为负数, -1指最后一个, -2是倒数第二个, 如:chart.add([0, 13.5, -1]), 更改series[0].data的倒数第一个点的数据
    # 4、记得调用 chart.update({...})  参数即 全局变量 字典chart
    #    HighStocks: http://api.highcharts.com/highstock ,  实际运行效果下图。

img

  • Mail ((...): ای میل بھیجنے کا فنکشن
Mail(smtpServer, smtpUsername, smtpPassword, mailTo, title, body); ret true or false
Mail("smtp.163.com", "asdf@163.com", "password", "111@163.com", "title", "body")
# 平台API Mail()函数的使用详解 链接:https://www.fmz.com/bbs-topic/310
  • SetErrorFilter ((RegEx) غلطی کی معلومات فلٹر
# 被此正则表达式匹配的错误将不上传到日志系统, 可多次调用设置多个
SetErrorFilter("502:|503:|tcp|character|unexpected|network|timeout|WSARecv|Connect|GetAddr|
no such|reset|http|received|EOF|reused")
  • GetPid: روبوٹ کے عمل کی شناخت واپس کریں
Log(GetPid())   
  • GetCommand: انٹرایکٹو کمانڈ حاصل کریں ((utf-8)
# 获取策略交互界面发来的命令并清空, 没有命令则返回null, 返回的命令格式为 "按钮名称:参数", 如果没有参数, 则命令就是按钮名称
while 1:
    cmd = GetCommand()
    if cmd:
        Log(cmd)
    Sleep(1000)

img img

  • _G(K, V): محفوظ کی جانے والی عالمی لغت کی فہرست
def main(): 
    # KV表, 永久保存在本地文件, 每个机器人单独一个数据库, 重启或者托管者退出后一直存在
    # K必须为数字或者字符串, 不区分大小写, V可以为任何可以JSON序列化的内容
    _G("num", 1)  # 设置一个全局变量num, 值为1
    Log("_G 取得num 值:", _G("num"))
    _G("num", "ok")  # 更改一个全局变量num, 值为字符串ok
    Log("_G 取得num 值:", _G("num"))
    _G("num", null)  # 删除全局变量 num
    _G("num2", "false")
    Log("_G 取得num 值:", _G("num"), "_G 取得num2 值:", _G("num2"))
    _G()  # 返回当前机器人的ID
    _G(null)  # 删除所有全局变量
    Log("_G 取得num 值:", _G("num"), "_G 取得num2 值:", _G("num2"))

img

  • _C ((): یہ فنکشن بنیادی طور پر API غلطیوں کو معاف کرنے کے لئے استعمال کیا جاتا ہے ، جیسے کہ تبادلہ.GetAccount (() فنکشن ، جس کو اس طرح بلایا جاتا ہے: _C ((exchange.GetAccount) ؛ نوٹ کریں کہ فنکشن کا نام قوسین کے بغیر ہے ، اگر غلطیوں کو معاف کرنے والے فنکشن کو پیرامیٹرز شامل کرنے کی ضرورت ہے تو اسے _C (() فنکشن کے دوسرے پیرامیٹر میں لکھا جاتا ہے ، اس کے بعد۔
def main(): 
    amount = 1
    price = 2000
    Log("使用_C 函数:", _C(exchange.GetAccount))
    _C(exchange.Buy, price, amount)
  • _N(): یہ فنکشن بہت زیادہ عدد کے بعد عددی پوائنٹس کو ہینڈل کرنے کے لئے استعمال کیا جاتا ہے ، جس میں چند عدد عددی پوائنٹس کو برقرار رکھا جاتا ہے۔
def main(): 
    pi = 3.1415926535897
    Log("使用_N函数前pi:", pi)
    
    piOfDeal = _N(pi, 2)
    Log("使用_N函数后pi:", piOfDeal)
  • دیگر1، صرف ویب ساکٹ موڈ (huobi) کی حمایت کرتا ہے،okcoin.cn، BTCC کی حمایت) اور اجناس کے مستقبل کے CTP معاہدےexchange.IO("websocket")مارکیٹ مواصلات کے پروٹوکول کو ویب ساکٹ میں تبدیل کریں (بغیر کسی تبدیلی کے) ، ٹکر ، گہرائی کو ویب ساکٹ پروٹوکول میں تبدیل کیا جاتا ہے تاکہ اسے اپ ڈیٹ کیا جاسکے ، تجارتی مستقبل کے سی ٹی پی کو تبدیل کرنے کی ضرورت نہیں ہے۔ GetTicker، GetDepth ڈیٹا اپ ڈیٹ موڈ کو تبدیل کریں

    2、exchange.IO("mode", 0)فوری واپسی موڈ، اگر آپ نے ابھی تک مارکیٹ کے تازہ ترین اعداد و شمار کو فروغ نہیں دیا ہے تو فوری طور پر پرانے مارکیٹ کے اعداد و شمار کو واپس کریں، اگر کوئی نیا ہے تو نئے اعداد و شمار کو واپس کریں

    3、exchange.IO("mode", 1)کیچنگ موڈ (بیمار موڈ) ، اگر آپ کو ابھی تک مارکیٹ کے تازہ ترین اعداد و شمار (پچھلی بار اے پی آئی سے حاصل کردہ اعداد و شمار کے مقابلے میں) موصول نہیں ہوئے ہیں تو ، اگر آپ نے اس فنکشن کو کال کرنے سے پہلے تازہ ترین مارکیٹ ڈیٹا موصول کیا ہے تو ، یہ فوری طور پر تازہ ترین ڈیٹا واپس کرتا ہے۔

    4、exchange.IO("mode", 2)جبری اپ ڈیٹ موڈ، لاگ ان کریں انتظار کریں جب تک کہ آپ کو ایکسچینج میں اگلے تازہ ترین پش ڈیٹا موصول نہ ہو

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

    exchange.IO("websocket")
    while 1:
        Log(exchange.GetTicker())
    

    6، ہر پیغام سٹرنگ کو RGB ویلیو جیسے "#ff0000" کے ساتھ ختم کیا جاسکتا ہے ، جس میں پیش منظر کا رنگ دکھایا جانا چاہئے ، اگر یہ #ff0000112233 کی طرح فارمیٹ ہے تو ، پچھلے چھ رنگ پس منظر کا رنگ ہیں۔

  • فیوچر ٹریڈنگ: فیوچر روایتی اشیاء کے فیوچر سی ٹی پی پروٹوکول کی حمایت کرتے ہیں، بی ٹی سی فیوچر: 796، BitVC، OKCoin

    • Position لغت: مستقبل کی تجارت میں پوزیشن رکھنے کی معلومات، جو کہ GetPosition () فنکشن کے ذریعہ اس ساختہ صف کو واپس کرتی ہے۔
{
        "MarginLevel":    # 杆杠大小, 796期货有可能为5, 10, 20三个参数, OKCoin为10或者20, 
                          # BitVC期货和OK期货的全仓模式返回为固定的10, 因为原生API不支持
                      
        "Amount":         # 持仓量, 796期货表示持币的数量, BitVC指持仓的总金额(100的倍数), 
                          # OKCoin表示合约的份数(整数且大于1)
                      
        "CanCover":       # 可平量, 只有股票有此选项, 表示可以平仓的数量(股票为T+1)今日仓不能平
    
        "FrozenAmount":   # 冻结量, 支持传统期货与股票, 数字货币只支持796交易所
    
        "Price":          # 持仓均价
    
        "Profit":         # 持仓浮动盈亏(数据货币单位:BTC/LTC, 传统期货单位:RMB, 股票不支持此字段, 
                          # 注: OKCoin期货全仓情况下指实现盈余, 并非持仓盈亏, 逐仓下指持仓盈亏)
                      
        "Type":           # PD_LONG为多头仓位(CTP中用closebuy_today平仓), 
                          # PD_SHORT为空头仓位(CTP用closesell_today)平仓, 
                          # (CTP期货中)PD_LONG_YD为咋日多头仓位(用closebuy平),
                          # PD_SHORT_YD为咋日空头仓位(用closesell平)
                      
        "ContractType":   # 商品期货为合约代码, 股票为'交易所代码_股票代码', 具体参数SetContractType的传入类型
}
  • GetPosition: موجودہ پوزیشن کی معلومات حاصل کریں
# 返回一个Position数组, (BitVC和OKCoin)可以传入一个参数, 指定要获取的合约类型
    def main(): 
        exchange.SetContractType("MA701")
        ticker1 = exchange.GetTicker()
        exchange.SetDirection("buy")
        exchange.Buy(ticker1['Sell'] + 1, 1, "MA701")
        exchange.SetDirection("sell")
        exchange.Sell(ticker1['Buy'] - 1, 2, "MA701")
        exchange.SetContractType("CF701")
        exchange.SetDirection("buy")
        ticker2 = exchange.GetTicker()
        exchange.Buy(ticker2['Sell'] + 1, 4, "CF701")
        positions = exchange.GetPosition()     # GetPosition() 函数返回的是 一个列表。
        Log("positions:", positions)    #  输出这个列表
        for i in range(len(positions)):  #  遍历
            Log(positions[i])

img

  • سیٹ مارجن لیول (MarginLevel): بار سائز سیٹ کریں
# 设置Buy(多单)或者Sell(空单)的杆杠大小, MarginLevel有5, 10, 20 三个可选参数
# 796支持5,10,20,50三个选项, BitVC的LTC不支持20倍杠杆, OKCoin支持10倍和20倍
# 如: exchange.SetMarginLevel(5)
  • SetDirection ((Direction): خریدنے یا فروخت کرنے کی فہرست کی قسم مقرر کریں
# Direction可以取buy, closebuy, sell, closesell四个参数, 传统期货多出closebuy_today,与closesell_today, 
# 指平今仓, 默认为closebuy/closesell为平咋仓
# 对于CTP传统期货, 可以设置第二个参数"1"或者"2"或者"3", 分别指"投机", "套利", "套保", 不设置默认为投机
# 股票只支持buy与closebuy, 因为股票只能买跟平仓
exchange.SetMarginLevel(5)
exchange.SetDirection("buy")
exchange.Buy(1000, 2)
exchange.SetMarginLevel(5)
exchange.SetDirection("closebuy")
exchange.Sell(1000, 2)
  • SetContractType (ContractType): معاہدہ کی قسم مقرر کریں
# 传统的CTP期货的ContractType就是指的合约ID,  如SetContractType("au1506") 返回合约的详细信息, 
# 如最少一次买多少, 手续费, 交割时间等
# 股票合约格式为 股票代码.(SH/SZ), SH指上交所, SZ指深交所, 如000001.SZ就是指深交所的平安银行
# 商品期货与股票取消订阅合约, 在合约名前加上"-"前缀重新调用即可, 如SetContractType("-au1506"); 成功返回true
# 数字货币796支持: "week", "weekcny", 默认为子账户A, 要指定子账户是A还是B, 在合约后加"@A"或"@B", 
# 如: "day@A" 为日合约A子账户
# BitVC有week和quarter和next_week三个可选参数, OKCoin期货有this_week, next_week, quarter三个参数
exchange.SetContractType("week");

کموڈٹی فیوچر کی دیگر تفصیلات:https://www.fmz.com/api img

  • اشارے کے افعال: TA - زیادہ سے زیادہ اشارے کے افعال کی فہرست میں سے کچھ کو دوبارہ لکھنے کے لئے بہتر بنانے کے لئے، طالب -http://ta-lib.org/

    • UR - زیادہ سے زیادہ استعمال شدہ اشارے کی فائلوں کو دوبارہ لکھنے کے لئے اصلاحات
MACD                  # 指数平滑异同平均线
KDJ                   # 随机指标
RSI                   # 强弱指标
ATR                   # 平均真实波幅
OBV                   # 能量潮
MA                    # 移动平均线
EMA                   # 指数平均数指标
BOLL                  # 布林带
Alligator             # Alligator Indicator
CMF                   # 蔡金货币流量指标
Highest               # 周期最高价
Lowest                # 周期最低价
help       #查询指标调用格式
ACOS       #Vector Trigonometric ACos
AD         #Chaikin A/D Line
ADOSC      #Chaikin A/D Oscillator
ADX        #Average Directional Movement Index
ADXR       #Average Directional Movement Index Rating
APO        #Absolute Price Oscillator
AROON      #Aroon
AROONOSC   #Aroon Oscillator
...

https://www.fmz.com/api


مزید

سادہ-چن.NewPositionManager (() کیا یہ چیز پیتھون کے ساتھ کام کرتی ہے؟

فینگ بیتو پھر یہ کیسے ممکن ہے کہ انڈیکیٹر فنکشن نہیں لکھا گیا؟

موسیڈاDepth کے بارے میں وضاحت، ask اور bid کے بارے میں تبصرے نظر آتے ہیں کہ ان کے برعکس لکھے گئے ہیں

چھوٹا سا خوابایک غلطی ہے، QQ گروپ میں خوش آمدید، پوسٹس اور تبصروں کا جواب دیں۔

چھوٹا سا خوابہاں، یہ سی ٹی پی کے تجارتی فیوچر ہیں۔

سادہ-چنhttps://www.botvs.com/strategy/24288 یہ ورژن صرف سی ٹی پی تجارتی مستقبل کے لئے ہے ، ٹھیک ہے؟ کیا کوئی ایسا ورژن ہے جس میں ڈیجیٹل مستقبل نہیں ہے؟

سادہ-چنشکریہ استاد!

چھوٹا سا خوابآپ کو اس پر نظر ڈالنا چاہئے: https://www.botvs.com/strategy/24288 https://dn-filebox.qbox.me/4a9057b2a17e4893ae 7699faf30e35c51d4ae0f3.png

سادہ-چنہمارے BOTVS پلیٹ فارم پر PY کا یہ ٹیمپلیٹ (NEWPOSITIONMANAGER) موجود نہیں ہے ، براہ کرم اساتذہ سے پوچھیں کہ کیا وہ براہ راست PY ماحول میں JS پر عملدرآمد کرسکتے ہیں یا PY تھرڈ پارٹی لائبریری (مثال کے طور پر ، python-spidermonkey) کے ذریعہ اس ٹیمپلیٹ کو JS پر کال کرسکتے ہیں؟

چھوٹا سا خوابیہ جے ایس ورژن کی ٹیمپلیٹ ایکسپورٹ فنکشن ہے ، جسے جے ایس ورژن کے کوڈ ماڈیول کے انٹرفیس فنکشن کے طور پر سمجھا جاسکتا ہے۔

چھوٹا سا خوابجی ہاں ~ شکریہ سوال پوچھنے کے لئے، فوری طور پر ترمیم ^^