एकल मंच संतुलन रणनीति

लेखक:शून्य, दिनांकः 2014-08-14 20:20:48
टैगःशेष राशि

यह एक भंडारण की आवश्यकता है, उदाहरण के लिए, एक खाते में 5000 डॉलर हैं, और एक सिक्का, अगर सिक्का का मूल्य खाते में शेष राशि से अधिक है 5000 और मूल्य का अंतर है, तो यह $ 6000 है, तो इसे बेच दें, उदाहरण के लिए, 6000-5000 / 6000 / 2 सिक्का, यह बताता है कि सिक्का बढ़ गया है, इसे वापस ले लो, अगर सिक्का गिर गया है, उदाहरण के लिए, $ 4000 / 4000 / 4 / 2 सिक्का, इसे खरीदें, अगर सिक्का गिर गया है, तो कुछ और खरीदें, अगर यह गिर गया है, तो इसे फिर से बेचें, जैसे कि एक समतल, दोनों तरफ अलग-अलग प्रतिभूति है, इसलिए मैं इसे संतुलन रणनीति कहता हूं।


/*backtest
start: 2018-03-01 00:00:00
end: 2018-08-01 11:00:00
period: 15m
exchanges: [{"eid":"OKCoin_EN","currency":"BTC"}]
*/

function CancelPendingOrders() {
    var ret = false;
    while (true) {
        var orders = null;
        while (!(orders = exchange.GetOrders())) {
            Sleep(Interval);
        }

        if (orders.length == 0) {
            return ret;
        }

        for (var j = 0; j < orders.length; j++) {
            exchange.CancelOrder(orders[j].Id);
            ret = true;
            if (j < (orders.length-1)) {
                Sleep(Interval);
            }
        }
    }
    return ret;
}

var InitAccount = null;

function onTick() {
    var acc = _C(exchange.GetAccount);
    var ticker = _C(exchange.GetTicker);
    var spread = ticker.Sell - ticker.Buy;
    var diffAsset = (acc.Balance - (acc.Stocks * ticker.Sell)) / 2;
    var ratio = diffAsset / acc.Balance;
    LogStatus('ratio:', ratio, _D());
    if (Math.abs(ratio) < threshold) {
        return false;
    }
    if (ratio > 0) {
        var buyPrice = _N(ticker.Sell + spread, ZPrecision);
        var buyAmount = _N(diffAsset / buyPrice, XPrecision);
        if (buyAmount < MinStock) {
            return false;
        }
        exchange.Buy(buyPrice, buyAmount, diffAsset, ratio);
    } else {
        var sellPrice = _N(ticker.Buy - spread, ZPrecision);
        var sellAmount = _N(-diffAsset / sellPrice, XPrecision);
        if (sellAmount < MinStock) {
            return false;
        }
        exchange.Sell(sellPrice, sellAmount, diffAsset, ratio);
    }
    return true;
}

function main() {
    InitAccount = _C(exchange.GetAccount);
    LoopInterval = Math.max(LoopInterval, 1);
    while (1) {
        if (onTick()) {
            Sleep(1000);
            CancelPendingOrders();
            Log(_C(exchange.GetAccount));
        }
        Sleep(LoopInterval * 1000);
    }
}

संबंधित

अधिक

जाम करनायह पौराणिक 50-50 रणनीति है, उच्च आवृत्ति की आवश्यकता नहीं है।

मात्रात्मक रोबोटउदाहरण के लिए, बिटकॉइन बनाम यूएसडी, प्रारंभिक शर्त यह है कि खाते में अधिक पैसा है, कम सिक्का है, यदि इसके विपरीत, तो खून बह जाएगा।

हिलानिय्येयह एक अनोखा विचार है, मैंने इसे सीखा है, इसे साझा करने के लिए धन्यवाद।

मोमोक्सयह शब्द इस रणनीति के लिए कोई और अधिक उपयुक्त है, लेकिन सरल कोड, वास्तव में सबसे शानदार रणनीति है, पूजा करने के लिए

दक्षिण कोरियाई टमाटरयह एक भालू बाजार में पैसे कमाने के लिए और एक बैल बाजार में पैसे कमाने के लिए किया जाना चाहिए।