账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    javascript转换成python
    30
    0

    自己尝试用python转换javascript的代码,只可惜,技术太差搞不来,请大牛帮我转换一下。

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

    这下面是我用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("程序退出!");
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部