//public TEsOrderInsertReqField InsertOrder(TradingOrderParameter parameter) //{ // Symbol symbol = parameter.Symbol; // TEsOrderInsertReqField req = new TEsOrderInsertReqField(); // if (symbol.IsCustomCombinSymbol) // { // } // else // { // if (symbol.Market != null) // { // //交易所 // req.Exchange = EsunnyConvert.ConvertToEsunny(symbol.Market.MarketCode); // } // if (symbol.SymbolType == SymbolType.CommoditiesSpreadFutures) // { // CombinSymbol combinSymbol = symbol as CombinSymbol; // if (combinSymbol.Items[0].SymbolBlock.BlockCode == combinSymbol.Items[1].SymbolBlock.BlockCode) // { // //跨期 // req.CmbType = EsunnyCombinOrderType.Spread; // } // else // { // //跨商品 // req.CmbType = EsunnyCombinOrderType.SpreadCommodity; // } // req.Contract1 = combinSymbol.Items[0].ExchangeSymbolCode.ToUpper(); // req.Contract2 = combinSymbol.Items[1].ExchangeSymbolCode.ToUpper(); // } // else // { // //普通单 // req.CmbType = EsunnyCombinOrderType.Normal; // req.Contract1 = symbol.ExchangeSymbolCode.ToUpper(); // } // req.Direct = EsunnyConvert.ConvertToEsunny(parameter.Direction); // req.Offset = EsunnyConvert.ConvertToEsunny(parameter.Offset); // req.OrderPrice = Convert.ToDouble(parameter.Price); // req.OrderVol = Convert.ToInt32(parameter.Volume); // req.RequestID = this._requestID++; // req.OrderType = EsunnyOrderType.LimitOrder; // req.Hedge = EsunnyHedgeType.Speculation; // InvokeAPI(EsunnyWrapperAction.OrderInsert, req); // } // return req; //} int InvokeAPI(EsunnyWrapperAction action, object req) { return(EsunnyWrapper.InvokeAPI(this._instance, action, req)); //IntPtr p = IntPtr.Zero; //if (req != null) //{ // p = Marshal.AllocHGlobal(Marshal.SizeOf(req)); // Marshal.StructureToPtr(req, p, true); //} //int result = EsunnyWrapper.Process(this._instance, action, p); //if (req != null) //{ // Marshal.DestroyStructure(p, req.GetType()); //} }
internal static int InvokeAPI(IntPtr handler, EsunnyWrapperAction action, object req) { IntPtr p = IntPtr.Zero; int result = 0; if (req != null) { if (req is IntPtr) { result = EsunnyWrapper.Process(handler, action, (IntPtr)req); } else if (req is int) { result = EsunnyWrapper.Process(handler, action, (IntPtr)(int)req); } else if (req is StringBuilder) { result = EsunnyWrapper.Process(handler, action, (StringBuilder)req); } else { p = Marshal.AllocHGlobal(Marshal.SizeOf(req)); Marshal.StructureToPtr(req, p, true); result = EsunnyWrapper.Process(handler, action, p); Marshal.DestroyStructure(p, req.GetType()); } } else { result = EsunnyWrapper.Process(handler, action, p); } return(result); }
static extern int Process(IntPtr hTrade, EsunnyWrapperAction action, IntPtr req);
static extern int Process(IntPtr hTrade, EsunnyWrapperAction action, StringBuilder req);
//public TEsOrderInsertReqField InsertOrder(TradingOrderParameter parameter) //{ // Symbol symbol = parameter.Symbol; // TEsOrderInsertReqField req = new TEsOrderInsertReqField(); // if (symbol.IsCustomCombinSymbol) // { // } // else // { // if (symbol.Market != null) // { // //交易所 // req.Exchange = EsunnyConvert.ConvertToEsunny(symbol.Market.MarketCode); // } // if (symbol.SymbolType == SymbolType.CommoditiesSpreadFutures) // { // CombinSymbol combinSymbol = symbol as CombinSymbol; // if (combinSymbol.Items[0].SymbolBlock.BlockCode == combinSymbol.Items[1].SymbolBlock.BlockCode) // { // //跨期 // req.CmbType = EsunnyCombinOrderType.Spread; // } // else // { // //跨商品 // req.CmbType = EsunnyCombinOrderType.SpreadCommodity; // } // req.Contract1 = combinSymbol.Items[0].ExchangeSymbolCode.ToUpper(); // req.Contract2 = combinSymbol.Items[1].ExchangeSymbolCode.ToUpper(); // } // else // { // //普通单 // req.CmbType = EsunnyCombinOrderType.Normal; // req.Contract1 = symbol.ExchangeSymbolCode.ToUpper(); // } // req.Direct = EsunnyConvert.ConvertToEsunny(parameter.Direction); // req.Offset = EsunnyConvert.ConvertToEsunny(parameter.Offset); // req.OrderPrice = Convert.ToDouble(parameter.Price); // req.OrderVol = Convert.ToInt32(parameter.Volume); // req.RequestID = this._requestID++; // req.OrderType = EsunnyOrderType.LimitOrder; // req.Hedge = EsunnyHedgeType.Speculation; // InvokeAPI(EsunnyWrapperAction.OrderInsert, req); // } // return req; //} int InvokeAPI(EsunnyWrapperAction action, object req) { return EsunnyWrapper.InvokeAPI(this._instance, action, req); //IntPtr p = IntPtr.Zero; //if (req != null) //{ // p = Marshal.AllocHGlobal(Marshal.SizeOf(req)); // Marshal.StructureToPtr(req, p, true); //} //int result = EsunnyWrapper.Process(this._instance, action, p); //if (req != null) //{ // Marshal.DestroyStructure(p, req.GetType()); //} }