コード例 #1
0
ファイル: FSymbol.cs プロジェクト: louiegor/EsBacktest
        public IFSymbolExecute OfferAtPrice(double price)
        {
            var curOpenPos = api.GetOpenPositionForSymbol(Symbol);

            if (curOpenPos.Volume != 0 && curOpenPos.Side == "B")
            {
                api.FlattenSymbol(Symbol);
            }

            var remaining = GetRemainingShareFromOpenPos(curOpenPos);

            api.CancelSellOrdersForSymbol(Symbol);
            api.ExecuteOrder("Sell", Symbol, price, remaining);
            FLog.AddFormLogMessage(String.Format("Offer In @{0}", price));

            return(this);
        }
コード例 #2
0
ファイル: MainModel.cs プロジェクト: louiegor/EsBacktest
        public void ExecuteOfferInAndCancelAfterTime(string symbol, int shareSize, int secondToCancel)
        {
            api.RegisterL1(symbol);
            var l1 = ExecuteGetMassL1(symbol);

            if (l1.Symbol == null)
            {
                log.AddFormLogMessage(String.Format("Cannot get Lv1 for {0}", symbol));
                return;
            }

            var remaining = GetRemainingShareForSymbol(EnterType.Sell, symbol, shareSize);

            if (remaining > 0)
            {
                api.CancelSellOrdersForSymbol(symbol);
                var sellPrice = l1.AskPrice;

                // Tokyo Stock Exchange
                var array = symbol.Split('.');
                if (array[1] != null && array[1].ToLowerInvariant() == "jp")
                {
                    sellPrice = Math.Ceiling(sellPrice);
                }

                // only try once
                api.ExecuteOrder("Sell", symbol, sellPrice, remaining);
                log.AddFormLogMessage(String.Format("Offer In @{0} for {1}", sellPrice, symbol));
            }

            Thread.Sleep(1000 * secondToCancel);
            api.CancelSellOrdersForSymbol(symbol);
        }