Der Eisberg wird verkauft

Schriftsteller:Null, Datum: 25.07.2014 13:31:18
Tags:HandelsunterstütztDer Eisberg

Eisberg Auftrag bezieht sich auf den Investor, bei der Durchführung von großen Transaktionen, um zu vermeiden, dass zu einem übermäßigen Schock auf den Markt, die große Auftrag automatisch in mehrere Aufträge zu brechen, automatisch Auftrag nach dem aktuellen neuesten Kauf / Verkauf Preis und der Preis-Strategie des Kunden gesetzt, automatisch neu zu beauftragen, wenn die letzte Auftrag vollständig abgewickelt oder der neueste Preis deutlich von der aktuellen Auftragspreis abweicht. Ein Beispiel: Wenn die Anzahl der Flusspunkte mit einem Einzeltarif auf 10 gesetzt ist: Die Anzahl der Aufträge beträgt 90% bis 110% ihres Einzellabschnitts. Der Auftragspreis beträgt den letzten Verkaufspreis* ((1+ Auftragstiefe), ein neuer Auftrag wird nach der vollständigen Transaktion des vorherigen Auftrags ausgeführt, der Auftrag wird automatisch zurückgezogen und neu beauftragt, wenn der letzte Transaktionspreis von diesem Auftragsüber die Auftragstiefe*2 entfernt ist. Der Auftrag wird abgebrochen, wenn die strategische Gesamttransaktionsmenge gleich der gesamten Auftragszahl ist.




function CancelPendingOrders() {
    while (true) {
        var orders = _C(exchange.GetOrders);
        if (orders.length == 0) {
            return;
        }

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

var LastSellPrice = 0;
var InitAccount = null;

function dispatch() {
    var account = null;
    var ticker = _C(exchange.GetTicker);
    // 在最新成交价格距离该笔委托超过委托深度*2时自动撤单并重新进行委托
    if (LastSellPrice > 0) {
        // 订单没有完成
        if (_C(exchange.GetOrders).length > 0) {
            if (ticker.Last < LastSellPrice && ((LastSellPrice - ticker.Last) / ticker.Last) > (2*(EntrustDepth/100))) {
                Log('偏离过多, 最新成交价:', ticker.Last, '委托价', LastSellPrice);
                CancelPendingOrders();
            } else {
                return true;
            }
        } else {
            account = _C(exchange.GetAccount);
            Log("卖单完成, 累计卖出:", _N(InitAccount.Stocks - account.Stocks), "平均卖出价:", _N((account.Balance - InitAccount.Balance) / (InitAccount.Stocks - account.Stocks))); }
            LastSellPrice = 0;
    }

    // 委托价格为最新卖1价*(1+委托深度)
    var SellPrice = _N(ticker.Sell * (1 + EntrustDepth/100));
    if (SellPrice < MinSellPrice) {
        return true;
    }

    if (!account) {
        account = _C(exchange.GetAccount);
    }


    if ((InitAccount.Stocks - account.Stocks) >= TotalSellStocks) {
        return false;
    }

    var RandomAvgSellOnce = (AvgSellOnce * ((100 - FloatPoint) / 100)) + (((FloatPoint * 2) / 100) * AvgSellOnce * Math.random());
    var SellAmount = Math.min(TotalSellStocks - (InitAccount.Stocks - account.Stocks), RandomAvgSellOnce);
    if (SellAmount < MinStock) {
        return false;
    }
    LastSellPrice = SellPrice;
    exchange.Sell(SellPrice, SellAmount, '上次成交价', ticker.Last);
    return true;
}

function main() {
    if (exchange.GetName().indexOf('Futures_') != -1) {
        throw "只支持现货";
    }
    CancelPendingOrders();
    InitAccount = _C(exchange.GetAccount);
    Log(InitAccount);
    if (InitAccount.Stocks < TotalSellStocks) {
        throw "账户币数不足";
    }
    LoopInterval = Math.max(LoopInterval, 1);
    while (dispatch()) {
        Sleep(LoopInterval);
    }
    Log("委托全部完成", _C(exchange.GetAccount));
}



Verwandt

Mehr