OKex 선물 테스트 for 초보자

저자:지역급 정량, 날짜: 2019-10-21 17:44:38
태그:오케이

OKex 선물은 사용하기에 더 번거롭기 때문에 새로운 사용자가 이해하기 쉽고 사용하기 쉬운 프레임워크를 작성했습니다.


/*backtest
start: 2019-01-01 00:00:00
end: 2019-10-10 00:00:00
period: 1d
exchanges: [{"eid":"OKEX","currency":"ETH_USDT","stocks":0}]
args: [["OpMode",1,10989],["MaxAmount",1,10989],["TradeFee",0.001,10989]]
*/
//注册币乎后https://m.bihu.com/signup?i=1ewtKO&s=4&c=4
//搜索 物联网区块链 可以联系到作者区班主
var isInit = 1; //表示初始态
function oper(){
    var allAmount;
    var cashRatio;
    var lastPrice;
    var wantRatio;
    var wantOper=0;//期待的操作,0不操作,1买入,-1卖出
    var mhigh;
    var mlow;
   
        
        var mrecords = exchange.GetRecords(PERIOD_M30);
        //一定周期内的高低点
        mhigh=TA.Highest(mrecords, mnum, 'High');
        mlow=TA.Lowest(mrecords, mnum, 'Low');
        
        var midLine = (mhigh+mlow)/2;
        
        var ticker = _C(exchange.GetTicker);
        var nowPrice=ticker.Sell;
        var account = _C(exchange.GetAccount);
        var objid;
        var order;
        
        if (isInit == 1) {  //初始化状态为默认仓; 
            /*exchange.SetDirection("sell");    
            objid = exchange.Sell(nowPrice,Math.floor(nowPrice*account.Stocks*0.2/10)); //Okex必须取整
            order = exchange.GetOrder(objid);            // 参数id为订单号码,需填入你想要查询的订单的号码
            
            if (objid) { //如果购买成功
                      isInit=2; //初始化成功
                      account = _C(exchange.GetAccount);
                      Log(account);
                      Log("公允价格",midLine,"高点",mhigh,"低点",mlow);
                      Log("刚下订单的信息,ID:", order.Id, "Price:", order.Price, "Amount:", order.Amount,
        "DealAmount:", order.DealAmount, "type:", order.Type);
            }*/
            
            exchange.SetDirection("buy");    
            objid = exchange.Buy(nowPrice,Math.floor(nowPrice*account.Stocks*0.2/10)); //Okex必须取整
            order = exchange.GetOrder(objid);            // 参数id为订单号码,需填入你想要查询的订单的号码
           
            if (objid) { //如果购买成功
                      isInit=2; //初始化成功
                      account = _C(exchange.GetAccount);
                      Log(account);
                      Log("公允价格",midLine,"高点",mhigh,"低点",mlow);
                      Log("刚下订单的信息,ID:", order.Id, "Price:", order.Price, "Amount:", order.Amount,
        "account.Stocks:", account.Stocks, "type:", order.Type);
            }
            
            exchange.SetDirection("buy");    
            objid = exchange.Buy(nowPrice,Math.floor(nowPrice*account.Stocks*0.2/10)); //Okex必须取整
            order = exchange.GetOrder(objid);            // 参数id为订单号码,需填入你想要查询的订单的号码
           
            if (objid) { //如果购买成功
                      isInit=2; //初始化成功
                      account = _C(exchange.GetAccount);
                      Log(account);
                      Log("公允价格",midLine,"高点",mhigh,"低点",mlow);
                      Log("刚下订单的信息,ID:", order.Id, "Price:", order.Price, "Amount:", order.Amount,
        "DealAmount:", order.DealAmount, "type:", order.Type);
            }
        }else if(isInit==2){ //日常操作检测
            //打印未成交仓位
            var orders = _C(exchange.GetOrders);
           
            for (var i = 0; i < orders.length; i++) {
                Log("下单",orders[i]);
            }
           
            var positions = exchange.GetPosition();
            Log("持仓数",positions.length);
            for (i = 0; i < positions.length; i++) { //下两张多单会合并成一张单
                 if (positions[i].Type == PD_LONG) {
                    //exchange.SetDirection("closebuy");
                    //exchange.Sell(nowPrice,positions[i].Amount);
                } else {
                   // exchange.SetDirection("closesell");
                   // exchange.Buy(nowPrice,positions[i].Amount);
                }
                Log("持仓",positions[i]);
            }
            //如果没有挂单也没有持单
            if(orders.length<2){//&&positions.length==0){
                isInit=3;
                account = _C(exchange.GetAccount);
                Log("已成交");
                Log(account);
            }
        }else{
        }
}

function main() {
    var initAccount = _C(exchange.GetAccount);
    Log(initAccount);
    exchange.SetContractType("quarter")    // 举例设置为OKEX期货当周合约
    exchange.SetMarginLevel(5);              // 设置杠杆为5倍
    while (true) {
        oper();
        Sleep(Interval*1000);
    }
}

관련

더 많은

후하오 100W미래에셋대우의 현금 가격을 어떻게 얻을 수 있는지 궁금합니다. fmz의 api 파일에서는 미래에셋대우의 현금 가격, 깊이, 시가 설정, 현금 주문 등에 대한 코드를 찾을 수 없습니다. 어디서 찾을 수 있습니까?