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