自己尝试用新为次发人制通业个到也和一以设近打了基过python转换javascript的代码,只可惜,技术太差搞不来,请大牛帮我转换一下分浏代刚的学过互解久点维数数请曾房总题屏断果如以气。泉公一实切式时带近享览码开时会进。,后,护据一。

这是javasript写的原代码地址链接描述

这下如算上处定面一这我作问汇u应色会进灯样近面是我用python尝试更改的代码出错了,请各大牛帮我更改一下,有功一新说讲为其年次供。发了架人据模制理个通似会业文告个了者到作会也转动和矿大一效错的代码。

# // 参数变量 (待填写)
# 少写交易对
UsedRatio = 0.5
ContractType = "rb1710";
# // 全局变量 (待填写)
Interval = 500; #// 轮询时间 , 毫秒 , 500 毫秒 = 0.5 秒
Balance_Unit = 0
ContractTypeInfo = null; #// 合约信息
initAccount = null; #// 初始账户信息
LONG = 1;
SHORT = 2;
# // 功能函数 (待填写)
def loop(): #// 主循环函数
def CheckBalance_Unit(Direction):
ContractTypeInfo = exchange.SetContractType(ContractType); #自定义变量,获取交易对的信息
Log("交易对信息:", ContractTypeInfo);
Balance_Unit = _N(initAccount.Balance * UsedRatio / 10, 2);
Log("账户信息:", initAccount, "资金分配 10份,一份为:", Balance_Unit);
ticker = _C(exchange.GetTicker); #重复获取最新行情信息,到有返回有用信用否则重复
OneContractMargin = ContractTypeInfo.VolumeMultiple * ticker.Last * (ContractTypeInfo.LongMarginRatio if Direction == LONG else ContractTypeInfo.ShortMarginRatio); #计算买一次加手续费要多少钱
if(Balance_Unit < OneContractMargin * 0.2):
throw ("最新价格:" + ticker.Last + "手续费0.02" + " ,资金可用部分的10分之一 不足 下" + ("买单" if Direction == LONG else "卖单") + "1次手续费," + "1次:" + OneContractMargin);
else:
Log("最新价格:" + ticker.Last + "调整系数1.2" + "1份资金 可下:", "买单" if Direction == LONG else "卖单", (Balance_Unit / OneContractMargin));
nowAccount = _C(exchange.GetAccount);
if(nowAccount.Balance < Balance_Unit):
throw("当前账户资金已小于初始资金可用部分的十分之一。当前资金:" + nowAccount.Balance + ", 初始资金可用部分的十分之一为:" + Balance_Unit);
else :
if(nowAccount.Balance < OneContractMargin * 0.2):
Log ("资金不足:" + JSON.stringify(nowAccount) + ", 系数1.2,1手合约保证金:" + OneContractMargin);
# // 入口函数 main
def main():
# // 程序的初始化工作 (待填写)
while True:
if exchange.IO("status") == true:
if initAccount = exchange.GetAccount() else == null
break
initAccount = exchange.GetAccount() == null
LogStatus("等待交易时间获取账户信息初始化!" + "时间:", new.Date());
Sleep(Interval);
CheckBalance_Unit(LONG);
CheckBalance_Unit(SHORT);
# // 主循环, 程序完成初始化后在此 循环执行,直到手动关闭。
LoginState = null; #值为空
nowTimeStamp = 0; #时间为空
while True:
nowTimeStamp = Record().Time();#更新时间,时间对象
if(exchange.IO("status") == true) : #服务器连接状态, 近回就是连接上了
LoginState = true; #更新状态,已经连接
loop();#连接成功就可以执行
else: #没有连接就运行到这
LoginState = false;
LogStatus("时间:", _D(nowTimeStamp), LoginState ,"已连接服务器","未连接服务器!") #/*, 待显示的一些信息可以写在此处,如账户信息,实时行情,程序状态*/
Sleep(Interval); #// 暂停 0.5 秒, 避免轮询频率过高,访问交易所服务器过于频繁导致问题。
Log("程序退出!");