public void ProcessMessage(MarketEvent Data) { var path = Path.Combine(Path.GetTempPath(), $"{Data.Key()}_{DateTime.Today:yyyyMMdd}.csv"); //start new file at midnight using var writer = new StreamWriter(path, true); writer.WriteLine(Data.TextSerialize(new FileInfo(path).Length == 0)); }
TypePopUpWindow waitToShowWindow = TypePopUpWindow.NONE; // █ окно которое ожидается для отображения (возможно ожидается ответ от сервера) public static void requestContent(TypePopUpWindow type) // █ запросить контент для окна (обычно приходит контент сразу для всех окон) контент сохраняется, потому окна при созданиях перед отправлением этого запроса туда заглядывают(). { lastTimeRequest = Time.time; MarketEvent.requestMarketItems(); //Debug.Log("█ запрос на получение данных, и ожидается открытие окна:" + type); getWinController.waitToShowWindow = type; }
static bool CreateAndOpenMarket15() { //创建 IMarket // char* path 指 xxx.exe 同级子目录中的 xxx.dll 文件 int err = -1; market = ITradeApi.XFinApi_CreateMarketApi("XTA_W32/Api/CTP_v6.3.15_20190220/XFinApi.CTPTradeApiSE.dll", out err); if (err > 0 || market == null) { Console.WriteLine(string.Format("* Market XFinApiCreateError={0};", StrCreateErrors[err])); return(false); } //注册事件 marketEvent = new MarketEvent(); market.SetListener(marketEvent); //连接服务器 OpenParams openParams = new OpenParams(); openParams.HostAddress = CfgSE.MarketAddress; openParams.BrokerID = CfgSE.BrokerID; openParams.UserID = CfgSE.UserName; openParams.Password = CfgSE.Password; openParams.IsUTF8 = true; market.Open(openParams); return(true); }
internal MarketEvent InvokeEvent(MarketEvent arg) { if (_api.ValidateEvent(arg)) { Market?.Invoke(_api, arg); } return(arg); }
public void SetCurrentMarket(MarketId marketId) { var market = GetMarket(marketId); SiteContext.Current.Currency = market.DefaultCurrency; _cookieService.Set(MarketCookie, marketId.Value); MarketEvent.OnChangeMarket(market, new EventArgs()); }
private static void AssertEvent(MarketEvent @event) { Assert.NotNull(@event); Assert.Equal(DateTime.Parse("2019-09-09T12:28:18Z"), @event.Timestamp); Assert.Equal(EventName, @event.Event); Assert.Equal(3510937344, @event.MarketId); Assert.Equal("Arnold Bastion", @event.StationName); Assert.Equal("Potrigua", @event.StarSystem); }
public void UpdateTimeIndex(MarketEvent market) { var marketHoldings = this.bars.Symbols.ToDictionary(symbol => symbol, cost => decimal.Zero); var cash = this.currentCash; var commision = this.currentComission; var total = this.currentCash; foreach (var symbol in this.bars.Symbols) { var qty = this.currentPositions[symbol]; var closePrice = this.bars.GetLastClosePrice(symbol); if (closePrice == null) { if (qty != 0) { throw new InvalidOperationException($"Unknown close price for {symbol} with position qty={qty}."); } closePrice = decimal.Zero; } var marketValue = qty * closePrice.Value; marketHoldings[symbol] = marketValue; total += marketValue; } var change = this.initialCapital != decimal.Zero ? ((total - this.initialCapital) / this.initialCapital) * 100 : decimal.Zero; var holding = new Holding(); foreach (var kvp in marketHoldings) { holding.SymbolHoldings.Add(kvp.Key, kvp.Value); } holding.Comission = commision; holding.Cash = cash; holding.Total = total; holding.Change = change; var dateTime = market.CurrentTime; if (this.HoldingHistory.ContainsKey(dateTime)) { this.HoldingHistory[dateTime] = holding; } else { this.HoldingHistory.Add(dateTime, holding); } }
// receive update from market library private void r_MarketUpdate(object sender, MarketEvent e) { dBytes = e.Data; /* since the market update works on a different thread, it is required to * explicitally invoke this function on the thread it was created. Otherwise * it would fail, giving an error from the datagridview function specifically * made to give safe thread access. */ BeginInvoke(new MethodInvoker(BindData)); }
////////////////////////////////////////////////////////////////////////////////// //行情测试 static void MarketTest() { //创建 IMarket // char* path 指 xxx.exe 同级子目录中的 xxx.dll 文件 int err = -1; market = ITradeApi.XFinApi_CreateMarketApi("XTA_W32/Api/XTP_v1.1.18.13_20180516/XFinApi.XTPTradeApi.dll", out err); if (err > 0 || market == null) { Console.WriteLine(string.Format("* Market XFinApiCreateError={0};", StrCreateErrors[err])); return; } //注册事件 marketEvent = new MarketEvent(); market.SetListener(marketEvent); //连接服务器 OpenParams openParams = new OpenParams(); openParams.HostAddress = Cfg.MarketAddress; openParams.UserID = Cfg.UserName; openParams.Password = Cfg.Password; openParams.Configs.Add("AuthCode", Cfg.AuthCode); openParams.Configs.Add("ClientID", Cfg.ClientID);//可选 openParams.IsUTF8 = true; market.Open(openParams); /* * 连接成功后才能执行订阅行情等操作,检测方法有两种: * 1、IMarket.IsOpened()=true * 2、MarketListener.OnNotify中 * (int)XFinApi.TradeApi.ActionKind.Open == notifyParams.ActionType && * (int)ResultKind.Success == notifyParams.ResultType */ /* 行情相关方法 * while (!market.IsOpened()) * Thread.Sleep(1000); * * //订阅行情,已在MarketEvent.OnNotify中订阅 * XFinApi.QueryParams param = new XFinApi.QueryParams(); * param.ExchangeID = Cfg.ExchangeID; * param.InstrumentID = Cfg.InstrumentID; * market.Subscribe(param); * * //取消订阅行情 * market.Unsubscribe(param); */ }
public MarketEvent getMarketEvent() { if (marketEvent == null) { marketEvent = GameObject.Find("Network").GetComponent <MarketEvent>(); if (marketEvent == null) { Debug.Log("Error! [requestContent] marketEvent == null"); return(null); } ; } //Debug.Log("Error! [requestContent] ok"); return(marketEvent); }
private static void AssertFileEvent(MarketEvent @event) { Assert.NotNull(@event); Assert.Equal(DateTime.Parse("2019-09-07T12:48:31Z"), @event.Timestamp); Assert.Equal(EventName, @event.Event); Assert.Equal(3511645184, @event.MarketId); Assert.Equal("Michell Depot", @event.StationName); Assert.Equal("Eurybia", @event.StarSystem); Assert.Equal(96, @event.Items.Length); Assert.Equal(128049152, @event.Items[0].Id); Assert.Equal("$platinum_name;", @event.Items[0].Name); Assert.Equal("Платина", @event.Items[0].NameLocalised); Assert.Equal("$MARKET_category_metals;", @event.Items[0].Category); Assert.Equal("Металлы", @event.Items[0].CategoryLocalised); Assert.Equal(0, @event.Items[0].BuyPrice); Assert.Equal(56471, @event.Items[0].SellPrice); Assert.Equal(42494, @event.Items[0].MeanPrice); Assert.Equal(0, @event.Items[0].StockBracket); Assert.Equal(3, @event.Items[0].DemandBracket); Assert.Equal(0, @event.Items[0].Stock); Assert.Equal(5053, @event.Items[0].Demand); Assert.True(@event.Items[0].Consumer); Assert.False(@event.Items[0].Producer); Assert.False(@event.Items[0].Rare); Assert.Equal(128924332, @event.Items[95].Id); Assert.Equal("$opal_name;", @event.Items[95].Name); Assert.Equal("Опалы бездны", @event.Items[95].NameLocalised); Assert.Equal("$MARKET_category_minerals;", @event.Items[95].Category); Assert.Equal("Минералы", @event.Items[95].CategoryLocalised); Assert.Equal(0, @event.Items[95].BuyPrice); Assert.Equal(753733, @event.Items[95].SellPrice); Assert.Equal(182168, @event.Items[95].MeanPrice); Assert.Equal(0, @event.Items[95].StockBracket); Assert.Equal(1, @event.Items[95].DemandBracket); Assert.Equal(0, @event.Items[95].Stock); Assert.Equal(1, @event.Items[95].Demand); Assert.True(@event.Items[95].Consumer); Assert.False(@event.Items[95].Producer); Assert.False(@event.Items[95].Rare); }
void OnMarketEventRespound() // получения ответа от сервера { //Debug.Log("█ данные получил"); MarketEvent marketEvent = GameObject.Find("Network").GetComponent <MarketEvent>(); //marketEvent.response; //Debug.Log("[OnReady] in WindowController" + waitToShowWindow); var name = getStringByType(waitToShowWindow); crystalItems = main.purchase.getMarketItesByName(name); goldFromCrystalExchange = getMarketEvent().response.data.Exchange; sortRubinItems(); sortGoldItems(); if (waitToShowWindow != TypePopUpWindow.NONE) { showingWindow = waitToShowWindow; Debug.Log("█ showingWindow == " + showingWindow); createAndShowWindow(showingWindow); //waitToShowWindow = TypePopUpWindow.NONE; } }
internal void InvokeMarketEvent(MarketEvent arg) { MarketEvent?.Invoke(this, arg); }
internal void InvokeMarketEvent(MarketEvent arg) => MarketEvent?.Invoke(null, arg);
public void ProcessMessage(MarketEvent Data) { Log.Information(Data.TextSerialize(false)); }