توازن کی حکمت عملی (تعلیم کی حکمت عملی)

مصنف:چھوٹا سا خواب, تخلیق: 2020-09-02 17:05:25, تازہ کاری: 2023-09-27 19:40:10

img

توازن کی حکمت عملی (تعلیم کی حکمت عملی)

یہ حکمت عملی ایک متحرک توازن کی حکمت عملی ہے، جس کا مطلب یہ ہے کہ ہمیشہ اس کی قیمت کو اس کی قیمت کے برابر رکھنا ہے۔ تاہم، یہ پہلے سے ہی ایک فہرست میں ہے، اور اس کی منطق بہت آسان ہے. اس حکمت عملی کو لکھنے کا بنیادی مقصد حکمت عملی کے ڈیزائن کے تمام پہلوؤں کو ظاہر کرنا ہے.

  • اسٹریٹجک لاجک پیکیجنگ حکمت عملی کی منطق اور عملدرآمد کے دوران کچھ اعداد و شمار ، نشان زد متغیرات کو ایک ساتھ لپیٹنا (جسم کے طور پر لپیٹنا) ۔

  • کوڈ جو ابتدائیہ کاموں کو سنبھالنے کی حکمت عملی ہے ابتدائی رن پر ابتدائی اکاؤنٹ کی معلومات کو ریکارڈ کیا جاتا ہے ، جو آمدنی کے حساب کے لئے استعمال کیا جاتا ہے ، اور ابتدائی طور پر پیرامیٹرز کے مطابق ڈیٹا کو بحال کیا جاتا ہے۔

  • حکمت عملی انٹرایکٹو پروسیسنگ کوڈ ایک سادہ توقف، جاری تعامل کے لئے ڈیزائن کیا گیا ہے۔

  • حکمت عملی کے فوائد کا حساب لگانے کا کوڈ اس کے علاوہ، یہ بھی کہا جاتا ہے کہ اس کی آمدنی کا حساب کرنسی کی اصل رقم کے حساب سے کیا جاتا ہے۔

  • حکمت عملی میں اہم اعداد و شمار کی مستقل مزاجی کے طریقہ کار اعداد و شمار کی بازیابی کے لئے ڈیزائن میکانزم

  • کوڈ جو حکمت عملی کے بارے میں معلومات کو ظاہر کرتا ہے اسٹیٹس بار ڈیٹا دکھایا گیا ہے۔

حکمت عملی کا کوڈ

var Shannon = {
    // member
    e : exchanges[0],
    arrPlanOrders : [],
    distance : BalanceDistance,
    account : null,
    ticker : null, 
    initAccount : null,
    isAskPending : false,
    isBidPending : false,

    // function 
    CancelAllOrders : function (e) {
        while(true) {
            var orders = _C(e.GetOrders)
            if(orders.length == 0) {
                return 
            }
            Sleep(500)
            for(var i = 0; i < orders.length; i++) {
                e.CancelOrder(orders[i].Id, orders[i])
                Sleep(500)
            }
        }
    },

    Balance : function () {
        if (this.arrPlanOrders.length == 0) {
            this.CancelAllOrders(this.e)
            var acc = _C(this.e.GetAccount)
            this.account = acc
            var askPendingPrice = (this.distance + acc.Balance) / acc.Stocks
            var bidPendingPrice = (acc.Balance - this.distance) / acc.Stocks
            var askPendingAmount = this.distance / 2 / askPendingPrice
            var bidPendingAmount = this.distance / 2 / bidPendingPrice

            this.arrPlanOrders.push({tradeType : "ask", price : askPendingPrice, amount : askPendingAmount}) 
            this.arrPlanOrders.push({tradeType : "bid", price : bidPendingPrice, amount : bidPendingAmount})
        } else if(this.isAskPending == false && this.isBidPending == false) {
            for(var i = 0; i < this.arrPlanOrders.length; i++) {
                var tradeFun = this.arrPlanOrders[i].tradeType == "ask" ? this.e.Sell : this.e.Buy
                var id = tradeFun(this.arrPlanOrders[i].price, this.arrPlanOrders[i].amount)
                if(id) {
                    this.isAskPending = this.arrPlanOrders[i].tradeType == "ask" ? true : this.isAskPending
                    this.isBidPending = this.arrPlanOrders[i].tradeType == "bid" ? true : this.isBidPending
                } else {
                    Log("挂单失败,清理!")
                    this.CancelAllOrders(this.e)
                    return 
                }
            }
        }

        if(this.isBidPending || this.isAskPending) {
            var orders = _C(this.e.GetOrders)
            Sleep(1000)
            var ticker = _C(this.e.GetTicker)
            this.ticker = ticker
            if(this.isAskPending) {
                var isFoundAsk = false 
                for (var i = 0; i < orders.length; i++) {
                    if(orders[i].Type == ORDER_TYPE_SELL) {
                        isFoundAsk = true
                    }
                }
                if(!isFoundAsk) {
                    Log("卖单成交,撤销订单,重置")
                    this.CancelAllOrders(this.e)
                    this.arrPlanOrders = []
                    this.isAskPending = false 
                    this.isBidPending = false 
                    LogProfit(this.CalcProfit(ticker))
                    return 
                }
            }
            if(this.isBidPending) {
                var isFoundBid = false 
                for(var i = 0; i < orders.length; i++) {
                    if(orders[i].Type == ORDER_TYPE_BUY) {
                        isFoundBid = true
                    }
                }
                if(!isFoundBid) {
                    Log("买单成交,撤销订单,重置")
                    this.CancelAllOrders(this.e)
                    this.arrPlanOrders = []
                    this.isAskPending = false 
                    this.isBidPending = false 
                    LogProfit(this.CalcProfit(ticker))
                    return 
                }
            }        
        }
    }, 
    ShowTab : function() {
        var tblPlanOrders = {
            type : "table", 
            title : "计划挂单", 
            cols : ["方向", "价格", "数量"], 
            rows : []
        }
        for(var i = 0; i < this.arrPlanOrders.length; i++) {
            tblPlanOrders.rows.push([this.arrPlanOrders[i].tradeType, this.arrPlanOrders[i].price, this.arrPlanOrders[i].amount])
        }

        var tblAcc = {
            type : "table", 
            title : "账户信息", 
            cols : ["type", "Stocks", "FrozenStocks", "Balance", "FrozenBalance"], 
            rows : []            
        }
        tblAcc.rows.push(["初始", this.initAccount.Stocks, this.initAccount.FrozenStocks, this.initAccount.Balance, this.initAccount.FrozenBalance])
        tblAcc.rows.push(["当前", this.account.Stocks, this.account.FrozenStocks, this.account.Balance, this.account.FrozenBalance])
        
        return "时间:" + _D() + "\n `" + JSON.stringify([tblPlanOrders, tblAcc]) + "`" + "\n" + "ticker:" + JSON.stringify(this.ticker)
    },
    CalcProfit : function(ticker) {
        var acc = _C(this.e.GetAccount)
        this.account = acc
        return (this.account.Balance - this.initAccount.Balance) + (this.account.Stocks - this.initAccount.Stocks) * ticker.Last
    },
    Init : function() {
        this.initAccount = _C(this.e.GetAccount)
        if(IsReset) {
            var acc = _G("account")
            if(acc) {
                this.initAccount = acc 
            } else {
                Log("恢复初始账户信息失败!以初始状态运行!")
                _G("account", this.initAccount)
            }
        } else {
            _G("account", this.initAccount)
            LogReset(1)
            LogProfitReset()
        }
    },
    Exit : function() {
        Log("停止前,取消所有挂单...")
        this.CancelAllOrders(this.e)
    }
}

function main() {
    // 初始化
    Shannon.Init()

    // 主循环
    while(true) {
        Shannon.Balance()        
        LogStatus(Shannon.ShowTab())
        // 交互
        var cmd = GetCommand()
        if(cmd) {
            if(cmd == "stop") {
                while(true) {
                    LogStatus("暂停", Shannon.ShowTab())
                    cmd = GetCommand()
                    if(cmd) {
                        if(cmd == "continue") {
                            break
                        }
                    }
                    Sleep(1000)
                }
            }
        }
        Sleep(5000)
    }
}

function onexit() {
    Shannon.Exit()
}

دوبارہ جانچ پڑتال

img

img

img

توسیع کو بہتر بنانا

  • ورچوئل ٹرانسفر میکانزم شامل کیا جاسکتا ہے ، کچھ معاملات میں تمام ٹرانسفر کی حد کی قیمتیں شامل کی جاسکتی ہیں ، لہذا ممکن ہے کہ آرڈر کو اصل میں نہیں لٹکا دیا جائے ، اور قیمت کو قریب آنے تک انتظار کرنا پڑے گا۔
  • مستقبل کی تجارت میں شامل ہونا
  • کثیر اقسام، کثیر ایکسچینج ورژن میں توسیع

یہ حکمت عملی صرف تعلیم کے لیے ہے اور اس کا استعمال احتیاط سے کریں۔ اسٹریٹجک ایڈریس:https://www.fmz.com/strategy/225746


متعلقہ

مزید