کرنسی اور کرنسی کے جوڑے کی تجارت کرنسی کی نقد رقم کے لئے استعمال کیا جاتا ہے تاکہ مارکیٹ کی قیمت کو صاف کیا جاسکے۔

مصنف:ہلکے بادل، تاریخ: 2022-05-02 10:15:10
ٹیگز:

اس کا مطلب یہ ہے کہ آپ کو اس کی ضرورت نہیں ہے. اس کے علاوہ ، ہم نے اس کے بارے میں بھی بات کی ہے کہ یہ کس طرح کام کرتا ہے ، اور یہ کس طرح کام کرتا ہے ، لیکن ہم اس کے بارے میں کیا سوچتے ہیں؟ ہم اس کے بارے میں کیا سوچتے ہیں؟ اس کے ساتھ کیا جاتا ہے، کرنسیوں کو پیرامیٹرز میں داخل کیا جاتا ہے، اور خود کار طریقے سے مارکیٹ کی قیمت پر فروخت کیا جاتا ہے. تاہم ، بعض اوقات فروخت کے بعد ، اس کی قیمت 0.0012BTC سے بھی کم ہوتی ہے ، اس وقت آپ کو اپنے بٹوے کے لئے نقد رقم کے بٹوے کو تبدیل کرنے کی ضرورت ہوتی ہے۔ اس کا مطلب یہ ہے کہ اگر آپ کے پاس بی این بی ہے تو ، بہتر ہے کہ آخر میں مارکیٹ کی قیمت پر فروخت کریں۔

img

img

img


//全局变量
var arrSymbols = B_symbols.split(",") // 逗号分割交易品种字符串

//获取价格精度 数量精度 函数
function GetPrecision() {
    var precision = {
        price: 0, //精度-价格
        amount: 0 //精度-数量
    }
    var depth = _C(exchange.GetDepth)
    if (!depth) {
        throw '无法连接交易所行情,需要海外托管者'
    }
    for (var i = 0; i < depth.Asks.length; i++) {
        var amountPrecision = depth.Asks[i].Amount.toString().indexOf('.') > -1 ? depth.Asks[i].Amount.toString().split('.')[1].length : 0
        precision.amount = Math.max(precision.amount, amountPrecision) //数量精度
        var pricePrecision = depth.Asks[i].Price.toString().indexOf('.') > -1 ? depth.Asks[i].Price.toString().split('.')[1].length : 0
        precision.price = Math.max(precision.price, pricePrecision) //价格精度
    }
    return precision
}

//取消所有挂单函数
//形参e 是 exchange.SetCurrency()  的 exchange
function cancelAll(e) {
    while (true) {
        var orders = _C(e.GetOrders)
        if (orders.length == 0) {
            break
        } else {
            for (var i = 0; i < orders.length; i++) {
                e.CancelOrder(orders[i].Id, orders[i])
                Sleep(200)
            }
        }
        Sleep(200)
    }
}

function Trad() {
    for (var i = 0; i < arrSymbols.length; i++) {
        Sleep(500)
        symbol = arrSymbols[i]
        exchange.SetCurrency(symbol)
        var ticker = _C(exchange.GetTicker).Last //最新价
        var precision = GetPrecision() //获取数量精度、价格精度
        var acc = _C(exchange.GetAccount)
        var base_balance = acc.Stocks //币种 可用余额
        var base_FrozenStocks = acc.FrozenStocks //币种挂单冻结的数量
        var holdAmount = _N(parseFloat(base_balance + base_FrozenStocks), precision.amount) //持仓量 = 币种余额+冻结数量
        if (holdAmount == 0 || holdAmount * ticker < 10) { //没有持仓 就是一开始的状态,10USDT价值是币安现货的最小交易金额,小于10的没法交易
            cancelAll(exchange)
            Log(symbol, "没有持仓,或者持仓数量不足以交易,持仓数量:", holdAmount)
        }
        if (holdAmount * ticker >= 10) { //持仓价值 >= USDT价值,则有持仓。
            Log(symbol, "有持仓,持仓数量:", holdAmount, "市价清仓", "#B15BFF")
            cancelAll(exchange)
            Sleep(500)
            var clearsell = exchange.Sell(-1, holdAmount) //清仓
            Sleep(500)
            acc = _C(exchange.GetAccount)
            base_balance = acc.Stocks //币种 可用余额
            base_FrozenStocks = acc.FrozenStocks //币种挂单冻结的数量
            holdAmount = _N(parseFloat(base_balance + base_FrozenStocks), precision.amount) //重新获取持仓数量
            Log(symbol, "持仓数量:", holdAmount, "#B15BFF")
        }
    }
}

//退出撤销所有挂单 
function onexit() {
    Log("机器人停止,撤销所有挂单", "#6F00D2")
    for (var i = 0; i < arrSymbols.length; i++) {
        symbol = arrSymbols[i]
        exchange.SetCurrency(symbol)
        cancelAll(exchange)
        Sleep(200)
    }
    Sleep(200)
}

//出错退出撤销所有挂单
function onerror() {
    Log("机器人出错,撤销所有挂单", "#00BB00")
    for (var i = 0; i < arrSymbols.length; i++) {
        symbol = arrSymbols[i]
        exchange.SetCurrency(symbol)
        cancelAll(exchange)
        Sleep(200)
    }
    Sleep(200)
}

function main() {
    if (B_chongzhi) {
        // LogProfitReset() //清空收益图表,只清空图表,日志信息不清除
        LogReset() //清空日志。只清空日志,不清除图表。
        LogVacuum()
        Log("重置所有数据", "#FF0000")
    }
    while (true) {
        Trad()
        Sleep(B_Sleep_time * 1000)
    }
}



مزید