Die Ressourcen sind geladen. Beförderung...

Die Strategie des Marktes ist das Rauben - Klopfen

Schriftsteller:Null, Datum: 2014-08-06
Tags:HochfrequenzMarktmacher

Der Grundsatz der Marktstrategie ist der Kauf und Verkauf, der Kauf und Verkauf, der Preis-Unterschied.



function CancelPendingOrders(orderType) {
    while (true) {
        var orders = _C(exchange.GetOrders);
        var count = 0;
        if (typeof(orderType) != 'undefined') {
            for (var i = 0; i < orders.length; i++) {
                if (orders[i].Type == orderType) {
                    count++;
                }
            }
        } else {
            count = orders.length;
        }
        if (count == 0) {
            return;
        }

        for (var j = 0; j < orders.length; j++) {
            if (typeof(orderType) == 'undefined' || (orderType == orders[j].Type)) {
                exchange.CancelOrder(orders[j].Id, orders[j]);
                if (j < (orders.length-1)) {
                    Sleep(Interval);
                }
            }
        }
    }
}


function updateProfit(accountInit, accountNow, ticker) {
    var netNow = accountNow.Balance + accountNow.FrozenBalance + ((accountNow.Stocks + accountNow.FrozenStocks) * ticker.Buy);
    var netInit = accountInit.Balance + accountInit.FrozenBalance + ((accountInit.Stocks + accountInit.FrozenStocks) * ticker.Buy);
    LogProfit(netNow - netInit);
}

var InitAccount = null;
var LastBuyPrice = 0;
var LastSellPrice = 0;

function onTick() {
    var ticker = _C(exchange.GetTicker);
    var BuyPrice = ticker.Buy + SlidePrice;
    var SellPrice = ticker.Sell - SlidePrice;

    // 利润消失
    if ((SellPrice - BuyPrice) <= MaxDiff) {
        CancelPendingOrders();
        return;
    }
  
    var cancelType = null;
    
    if (LastBuyPrice > 0 && (ticker.Buy - LastBuyPrice) > SlidePrice) {
        cancelType = ORDER_TYPE_BUY;
    }
    
    if (LastSellPrice > 0 && (LastSellPrice - ticker.Sell) > SlidePrice) {
        if (cancelType == null) {
            cancelType = ORDER_TYPE_SELL;
        } else {
            cancelType = -1;
        }
    }
    
    if (cancelType == -1) {
        CancelPendingOrders();
    } else if (cancelType != null) {
        CancelPendingOrders(cancelType);
    }

    var orders = _C(exchange.GetOrders);
    if (orders.length == 2) {
        return;
    }
    var account = _C(exchange.GetAccount);
    var amountBuy = _N(Math.min(account.Balance / BuyPrice, Lot));
    var amountSell = Math.min(account.Stocks, Lot);

    if (amountBuy >= MinStock) {
        if (orders.length == 0 || orders[0].Type == ORDER_TYPE_SELL) {
            if (orders.length > 0) {
                updateProfit(InitAccount, account, ticker);
            }
            exchange.Buy(BuyPrice, amountBuy);
            LastBuyPrice = BuyPrice;
        }
    }
    if (amountSell >= MinStock) {
        if (orders.length == 0 || orders[0].Type == ORDER_TYPE_BUY) {
            if (orders.length > 0) {
                updateProfit(InitAccount, account, ticker);
            }
            exchange.Sell(SellPrice, amountSell);
            LastSellPrice = SellPrice;
        }
    }
}

function onexit() {
    CancelPendingOrders();
}

function main() {
    InitAccount = _C(exchange.GetAccount);
    Log(InitAccount);
    SetErrorFilter("502:|503:|unexpected|network|timeout|WSARecv|Connect|GetAddr|no such|reset|received|EOF");
    exchange.SetRate(1);
    LoopInterval = Math.max(LoopInterval, 1);
    Lot = Math.max(MinStock, Lot);
    while (true) {
        onTick();
        Sleep(LoopInterval * 1000);
    }
}


Verwandt

Mehr

Hans0621Wie kann man die Währung bestimmen?

bbDanke für das Teilen, ich versuche es zu lesen, einige Stellen sind noch nicht so gut verstanden, habe einige Kommentare gemacht, danke. https://dn-filebox.qbox.me/ae3dba6b345db61fdb04694f11f5a089969c523f.png https://dn-filebox.qbox.me/7425baf156815b000d4aeb26c74669b8f08dff04.png https://dn-filebox.qbox.me/ad115b10c27f20434f27f8eaa4dd319341abdbf3.png

Rustypengif (orders.length == 0 ordres orders[0].Type == ORDER_TYPE_SELL) { Warum sollte man diese Orders[0].Type == ORDER_TYPE_SELL] beurteilen?

DaniaorenDanke für die Kommentare.