Loading ...

利用API一键创建N个币种的实盘

Author: Benson, Created: 2021-10-29 09:41:11, Updated: 2021-10-29 10:30:46

有的时候,可能需要我们导入大量交易所币种。例如在我个人的圣杯马丁策略中,在跑止损1的情况下收益仅与币种数量有关,那么需要导入市场上所有合适的币种才能达到效益最大化,也就是筛选过的102个币种。 但是对于手动开实盘而言,导入102个币种是一件相当繁琐的事情,创建一个还好说,如果要创建十几个实盘那么将是一件极其浪费时间的问题。因此我采用了官方的api扩展方法,可以进行批量添加大量实盘,并且在创建完机器人后可以再将参数调整为需要的状态并重启(毕竟只是添加Exchange比较麻烦) 步骤如下:

导入相关包

import time
import json
import ssl
ssl._create_default_https_context = ssl._create_unverified_context

try:
    import md5
    import urllib2
    from urllib import urlencode
except:
    import hashlib as md5
    import urllib.request as urllib2
    from urllib.parse import urlencode

定义api函数

accessKey = 'YourAccessKey'
secretKey = 'YourSecretKey'
def api(method, *args):
    d = {
        'version': '1.0',
        'access_key': accessKey,
        'method': method,
        'args': json.dumps(list(args)),
        'nonce': int(time.time() * 1000),
        }

    d['sign'] = md5.md5(('%s|%s|%s|%d|%s' % (d['version'], d['method'], d['args'], d['nonce'], secretKey)).encode('utf-8')).hexdigest()
    # 注意: urllib2.urlopen 函数,超时问题,可以设置超时时间,urllib2.urlopen('https://www.fmz.com/api/v1', urlencode(d).encode('utf-8'), timeout=10) 设置超时 10秒
    return json.loads(urllib2.urlopen('https://www.fmz.com/api/v1', urlencode(d).encode('utf-8')).read().decode('utf-8'))

找到对应的托管者id,策略id,交易所账户id

# 返回托管者列表并查询id
print(api('GetNodeList'))
# 返回交易所列表并查询id
print(api('GetPlatformList'))
# 返回策略列表并查询id
print(api('GetStrategyList()'))

导入需要的币种并调整为合适的格式

l="DEFI_USDT,BTCDOM_USDT,BCH_USDT,COMP_USDT,XMR_USDT,DASH_USDT,LTC_USDT,ZEC_USDT,FIL_USDT,TRB_USDT,ETC_USDT,AR_USDT,ICP_USDT,NEO_USDT,ATOM_USDT,LINK_USDT,WAVES_USDT,DYDX_USDT,OMG_USDT,QTUM_USDT,ALICE_USDT,UNFI_USDT,RAY_USDT,GTC_USDT,SNX_USDT,BAND_USDT,CELO_USDT,THETA_USDT,KAVA_USDT,EOS_USDT,LIT_USDT,RLC_USDT,CRV_USDT,MTL_USDT,TOMO_USDT,SXP_USDT,ADA_USDT,AUDIO_USDT,ICX_USDT,BAKE_USDT,CTK_USDT,ALGO_USDT,ENJ_USDT,SFP_USDT,KNC_USDT,XTZ_USDT,MATIC_USDT,KLAY_USDT,DODO_USDT,IOTA_USDT,STORJ_USDT,NU_USDT,ATA_USDT,REN_USDT,XRP_USDT,ALPHA_USDT,ZRX_USDT,ONT_USDT,OCEAN_USDT,GRT_USDT,OGN_USDT,MANA_USDT,SAND_USDT,KEEP_USDT,BAT_USDT,FLM_USDT,COTI_USDT,CVC_USDT,NKN_USDT,LRC_USDT,HBAR_USDT,XLM_USDT,CHR_USDT,SKL_USDT,BZRX_USDT,CHZ_USDT,ONE_USDT,BLZ_USDT,DOGE_USDT,TLM_USDT,1000XEC_USDT,XEM_USDT,ARPA_USDT,VET_USDT,CELR_USDT,RVN_USDT,ZIL_USDT,TRX_USDT,ANKR_USDT,IOTX_USDT,LINA_USDT,DGB_USDT,IOST_USDT,BTS_USDT,RSR_USDT,AKRO_USDT,1000SHIB_USDT,REEF_USDT,SC_USDT,HOT_USDT,DENT_USDT,BTT_USDT"
ex_list=l.split(',')
exchanges_list=[]
for ex in ex_list:
    exchanges_list.append({"pid": 1122, "pair": ex})

导入策略参数

#每个策略参数都不一样,具体参数配置可以通过调用GetRobotDetail(robotId)返回id对应的机器人详情运行信息,来获取此策略下的参数格式
argsnow=[["real",True],["fee",0.0003],["fake",True],["Balance",30000],["transfer_money",99999],["load_temp_pos_data",False],["not_load_record",True],["clear_profit",True],["remain_Top_data_amount",0],["refresh_inv",200],["delayms",400],["argshow_len",2],["trade_vis",1000],["Top_vis",1000],["best_smal_amount",0],["start_amount",0.0001],["scale_amount",0.0001],["scale_interval",0.01],["stop_win",0.006],["stop_loss",1],["stop_loss_1",300],["Marting_mode",0],["long_way",True],["short_way",True],["K_period",0],["hide_arg",False],["open_robot_marting",0],["open_robot_time",0],["close_robot",0],["close_robot_stop_win",99999],["close_robot_stop_time",99999],["ab_big_all_volatility",0],["ab_big_all_volatility_1_U_amount",9999],["ab_big_all_volatility_1_ex_amount",1],["ab_big_all_volatility_2_U_amount",9999],["ab_big_all_volatility_2_ex_amount",1],["auto_close_pos1",0],["auto_close_pos1_rev",99999],["auto_close_pos2",0],["auto_close_pos2_rev",99999],["auto_close_pos3",0],["auto_close_pos3_rev",99999],["mianze",1],["warnning",0.9]]                   

配置机器人参数

Settings = {
    "name": "API创建102个币种实盘测试",
    // 策略参数
    "args": argsnow,
    // 策略ID,可以用GetStrategyList方法获取到
    "strategy": 1122,
    // K线周期参数,60即为60秒
    "period": 60,   
    // 可以指定在哪个托管者上运行,不写该属性就是自动分配
    "node" : 1122,                         
    // 指定实盘分组
    "group": 1122,
    // 交易所币种设置
    "exchanges": exchanges_list
}              

创建机器人

api('NewRobot',Settings)

More

chao BB好帅

Benson 没C总帅,等你带我去做科学家