برفانی پہاڑ - فروخت

مصنف:صفر، تاریخ: 2014-07-25 13:31:18
ٹیگز:تجارتی امدادآئس برگ

برفانی پہاڑ کا حوالہ دیتا ہے کہ سرمایہ کار بڑے پیمانے پر تجارت کرتے وقت ، مارکیٹ میں زیادہ سے زیادہ جھٹکے سے بچنے کے لئے ، بڑے آرڈر کو خود بخود متعدد آرڈرز میں تقسیم کرنے کے لئے ، موجودہ تازہ ترین خرید / فروخت کی قیمت اور کسٹمر کی مقرر کردہ قیمت کی حکمت عملی کے مطابق خود بخود چھوٹے آرڈر کو خود بخود دوبارہ ترتیب دینے کے لئے ، جب پچھلے آرڈر کو مکمل طور پر پورا کیا گیا ہو یا تازہ ترین قیمت موجودہ آرڈر کی قیمت سے نمایاں طور پر انحراف کرتی ہے تو ، خود بخود دوبارہ آرڈر کریں۔ مثال: اگر ایک بار میں اوسط فلوٹنگ پوائنٹس کی تعداد 10 ہے تو: ہر آرڈر کی تعداد اس کی ایک بار کی اوسط آرڈر کی شرح کا 90٪ سے 110٪ ہے۔ آرڈر کی قیمت تازہ ترین فروخت کی قیمت 1 * ((1 + تفویض کی گہرائی) ہے ، پچھلے آرڈر کے بعد ایک نیا آرڈر مکمل طور پر ختم ہوجاتا ہے ، جب تازہ ترین ٹرانزیکشن کی قیمت اس آرڈر سے ٹرانزیکشن کی گہرائی * 2 سے زیادہ ہوجاتی ہے تو خود بخود منسوخ ہوجاتا ہے اور دوبارہ تفویض ہوجاتا ہے۔ جب اسٹریٹجک مجموعی ٹرانزیکشن کی تعداد اس کی مجموعی آرڈر کی تعداد کے برابر ہوتی ہے تو آرڈر کو روک دیا جاتا ہے۔ جب مارکیٹ میں تازہ ترین ٹرانزیکشن کی قیمت اس کی کم سے کم فروخت کی قیمت سے کم ہوتی ہے تو آرڈر کو روک دیا جاتا ہے ، اور جب تازہ ترین ٹرانزیکشن کی قیمت کم سے کم فروخت سے زیادہ ہوجاتی ہے تو دوبارہ دوبارہ شروع کیا جاتا ہے۔




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));
}



متعلقہ

مزید