بلیک کریش روبوٹ (تعلیم)

مصنف:چھوٹا سا خواب، تاریخ: 2018-09-27 15:56:48
ٹیگز:مطالعہ


function CancelPendingOrders(orders) {                             // 取消所有订单
    for (var j = 0; j < orders.length; j++) {                      // 根据参数传来的 未完成订单数组 , 逐个取消订单。
        exchange.CancelOrder(orders[j].Id, orders[j]);
        Sleep(300);                                                // 间隔 300 毫秒
    }
}
function LogOrders(orders){                                        // 组织用于显示的数据,显示在 机器人 页面的状态栏上。
    var buyString = '';                                            // 用于显示的买单数据字符串
    var sellString = '';                                           // 用于显示的卖单数据字符串
    orders.sort(function(x, y){return x.Price - y.Price;});        // 排序 , orders 根据订单的 Price 属性, 从大到小
    for (var j = 0; j < orders.length; j++) {                      // 遍历 orders  , 注意已经排过序
        if (orders[j].Type == ORDER_TYPE_SELL){                    // 如果 订单是 卖单,则执行{} 内代码。
            sellString += String(orders[j].Price) + ' ' + String(orders[j].Amount) + '|';    // 储存在 字符串 sellString , 用 | 间隔
        }else{
            buyString += String(orders[j].Price) + ' ' + String(orders[j].Amount) + '|';     // 储存在 字符串 buyString , 用 | 间隔
        }
    }
    LogStatus('买单:' + buyString + '\n' + '卖单:' + sellString);                             // 在状态栏 输出这些 订单 信息。
}
function main() {                                           // 主函数
    while(true){                                            // 主循环
        var orders = _C(exchange.GetOrders);                // 获取所有 未完成 挂单信息,orders 为一个 数组。
        CancelPendingOrders(orders);                        // 取消所有未完成挂单
        var ticker = _C(exchange.GetTicker);                // 获取最新行情信息
        var account = _C(exchange.GetAccount);              // 获取 当前账户信息
        var midPrice = (ticker.Buy + ticker.Sell) / 2;      // 计算 盘口空隙中间的位置的价格。
        var buyAmount  = 0;                                 // 声明 buyAmount ,用于累计计划买入数量, 初始化 0
        var sellAmount = 0;                                 // 声明 sellAmount , 用于累计计划卖出数量, 初始化 0
        var amount = OrderSize;                             // OrderSize 每单下单量大小, 赋值给 amount
        var buyPrice = midPrice  - Spread;                  // 在盘口中间位置 上下 一定 挂单价格间隔, 挂单,设置挂买单价 buyPrice
        var sellPrice = midPrice + Spread;                  // ....
        while((buyAmount < TotalBuy) && (account.Balance > amount*buyPrice) && buyPrice > 0){       // 当 计划买入数量 小于 总买单量, 并且 账户可用计价币(资金)大于 本次计划下单使用的资金,并且 下单价格大于0(防止 midPrice - Spread 小于0)
            if(exchange.Buy(buyPrice, amount)){             // 下单,如果返回 null 执行 else 内代码块, 如果返回id 执行 if 代码块
                buyAmount += amount;                        // 累计买单挂单量
                account.Balance -= amount*buyPrice;         // 更新账户 计价币数量
                buyPrice -= Spread;                         // 更新挂单价格
                amount = amount * SpreadTimes;              // 更新订单下单量,根据参数 SpreadTimes 设置进行递增。
            
            }else{                                          // 下单失败,更新账户信息,用于 当前while 循环条件判断
                account = _C(exchange.GetAccount);
            }
            Sleep(500);                                     // 用于控制 挂单频率
        }
        amount = OrderSize;                                 // 重置 amount 变量为 OrderSize
        while((sellAmount < TotalSell) && (account.Stocks*(1-fee/100) > amount)){        // 当 计划卖出的量 小于 总卖单量, 并且 账户可用 币数 扣除 交易手续费后 大于每单数量,执行while 循环
            if(exchange.Sell(sellPrice, amount)){           // 下卖单, 返回订单ID ,更新相关 变量。
                sellAmount += amount;                       // 累计 挂出的卖单的量
                account.Stocks -= amount;                   // 更新 可用币数
                sellPrice += Spread;                        // 更新下单价格 位置
                amount = amount * SpreadTimes;              // 更新订单下单量,根据参数 SpreadTimes 设置进行递增。
            }else{
                account = _C(exchange.GetAccount);          // 如果下单失败 更新账户信息
            }
            Sleep(500);
        }
        orders = _C(exchange.GetOrders);                    // 获取 挂单信息
        LogOrders(orders);                                  // 输出挂单信息 在状态栏
        Sleep(Interval*1000);                               // 轮询间隔,控制 策略运转频率
    }
}

متعلقہ

مزید

ہڈیوں کا چاقوویڈیو میں کہا گیا ہے کہ یہ ایک بہت ہی عام حکمت عملی ہے، لیکن کیا 300 سیکنڈ کی ڈیفالٹ نیند بہت زیادہ ہے؟ کیا 300 ملی سیکنڈ غلط ہے؟

13036897450ہمیشہ یہ خرابی واپس کرتا ہے Sell ((50.19165, 50.01): order price precision error, scale: `4` سوال یہ ہے کہ اس کی وجہ کیا ہے؟

ہڈیوں کا چاقواچھا۔ شکریہ۔

چھوٹا سا خوابیہ 300 ملی سیکنڈ ہے اور اس کی حکمت عملی کے پیرامیٹرز میں غلط لکھا گیا ہے۔

چھوٹا سا خوابorder price precision error, scale: 4 ` ` ` /upload/asset/cb89c1f8070d7a04d8447f9a38029f2b.png اس کا مطلب یہ ہے کہ آپ کے حکم کی قیمت میں بہت زیادہ چھوٹے ہندسے ہیں، زیادہ سے زیادہ چار ہندسے۔