예제 #1
0
        public void SendOrderToMarketMANUALCLOSE(Trade trade)
        {
            double price = trade.BuyorSell == Trade.BuySell.Buy ? HiSat.LivePrice.Offer : HiSat.LivePrice.Bid;

            ExcelLink.xlTradeOrder o = new xlTradeOrder()
            {
                BS       = trade.BuyorSell,
                Price    = price,
                Volume   = trade.TradeVolume,
                Contract = WebSettings.General.OTS_INST,
            };

            try
            {
                e.Connect();
                e.WriteOrder(o);
                e.Disconnect();
                OrderSendEvent oe = new OrderSendEvent();
                oe.Success = true;
                oe.Trade   = trade;
                onOrderSend(this, oe);
                e.StartCheckWhenOrderCompletedTimer(10000);
            }
            catch (Exception ex)
            {
                OrderSendEvent oe = new OrderSendEvent();
                oe.Success = false;
                oe.Trade   = trade;
                onOrderSend(this, oe);
            }
        }
        public async Task WHEN_invalidEvent_THEN_sagaShouldIgnoreThatEvent()
        {
            // given
            ISaga newSagaState = await sagaCoordinator.
                                 Publish(new OrderCreatedEvent());

            ISagaEvent invalidEvent = new OrderSendEvent()
            {
                ID = newSagaState.Data.ID
            };

            // then
            await Assert.ThrowsAsync <SagaInvalidEventForStateException>(() =>
                                                                         // when
                                                                         sagaCoordinator.
                                                                         Publish(invalidEvent)
                                                                         );

            // then
            ISaga persistedSaga = await sagaPersistance.
                                  Get(newSagaState.Data.ID);

            persistedSaga.ShouldNotBeNull();
            persistedSaga.ExecutionState.CurrentState.ShouldBe(nameof(StateCreated));
            persistedSaga.ExecutionState.CurrentStep.ShouldBe(null);
            // blad nie powinien zmienic stanu sagi
            persistedSaga.ExecutionState.History.ShouldContain(step => step.StepName == "OrderCreatedEventStep1" && step.CompensationData == null && step.HasSucceeded());
            persistedSaga.ExecutionState.History.Count.ShouldBe(3);
        }
예제 #3
0
        public void SendOrderToMarketGenetic(Trade trade)
        {
            if (trade.BuyorSell != Trade.BuySell.None)
            {
                double price = WebSettings.TradeApproach.AdjustPriceToStrategy(trade, HiSat.LivePrice.Bid, HiSat.LivePrice.Offer);
                trade.TradedPrice = price;
                ExcelLink.xlTradeOrder o = new xlTradeOrder()
                {
                    BS       = trade.BuyorSell,
                    Price    = price,
                    Volume   = trade.TradeVolume,
                    Contract = trade.InstrumentName,
                };


                e.Connect();
                e.WriteOrder(o);
                e.Disconnect();
                OrderSendEvent oe = new OrderSendEvent();
                oe.Success = true;
                oe.Trade   = trade;
                onOrderSend(this, oe);
                e.StartCheckWhenOrderCompletedTimer(10000);
            }
        }
        public void SendOrderToMarketGenetic(Trade trade)
        {
            if (trade.BuyorSell != Trade.BuySell.None)
            {
                double price = WebSettings.TradeApproach.AdjustPriceToStrategy(trade, HiSat.LivePrice.Bid, HiSat.LivePrice.Offer);
                trade.TradedPrice =  price;
                ExcelLink.xlTradeOrder o = new xlTradeOrder()
                {
                    BS = trade.BuyorSell,
                    Price = price,
                    Volume = trade.TradeVolume,
                    Contract = trade.InstrumentName,

                };

               
                e.Connect();
                e.WriteOrder(o);
                e.Disconnect();
                OrderSendEvent oe = new OrderSendEvent();
                oe.Success = true;
                oe.Trade = trade;
                onOrderSend(this, oe);
                e.StartCheckWhenOrderCompletedTimer(10000);
            }
        }
        public void SendOrderToMarket(Trade trade)
        {
            if (trade.BuyorSell != Trade.BuySell.None)
            {
                double price = WebSettings.TradeApproach.AdjustPriceToStrategy(trade, HiSat.LivePrice.Bid, HiSat.LivePrice.Offer);

                ExcelLink.xlTradeOrder o = new xlTradeOrder()
                {
                    BS = trade.BuyorSell,
                    Price = price,
                    Volume = trade.TradeVolume,
                    Contract = trade.InstrumentName,

                };

                try
                {

                    if (ManualTrade.CanCloseTrade(trade))
                    {
                        WebUpdate.SetManualTradeTrigger(false);
                        e.Connect();
                        e.WriteOrder(o);
                        e.Disconnect();
                        OrderSendEvent oe = new OrderSendEvent();
                        oe.Success = true;
                        oe.Trade = trade;
                        onOrderSend(this, oe);
                        e.StartCheckWhenOrderCompletedTimer(10000);
                    }

                }
                catch (Exception ex)
                {
                    OrderSendEvent oe = new OrderSendEvent();
                    oe.Success = false;
                    oe.Trade = trade;
                    onOrderSend(this, oe);
                }
            }
        }
예제 #6
0
        public void SendOrderToMarket(Trade trade)
        {
            if (trade.BuyorSell != Trade.BuySell.None)
            {
                double price = WebSettings.TradeApproach.AdjustPriceToStrategy(trade, HiSat.LivePrice.Bid, HiSat.LivePrice.Offer);

                ExcelLink.xlTradeOrder o = new xlTradeOrder()
                {
                    BS       = trade.BuyorSell,
                    Price    = price,
                    Volume   = trade.TradeVolume,
                    Contract = trade.InstrumentName,
                };

                try
                {
                    if (ManualTrade.CanCloseTrade(trade))
                    {
                        WebUpdate.SetManualTradeTrigger(false);
                        e.Connect();
                        e.WriteOrder(o);
                        e.Disconnect();
                        OrderSendEvent oe = new OrderSendEvent();
                        oe.Success = true;
                        oe.Trade   = trade;
                        onOrderSend(this, oe);
                        e.StartCheckWhenOrderCompletedTimer(10000);
                    }
                }
                catch (Exception ex)
                {
                    OrderSendEvent oe = new OrderSendEvent();
                    oe.Success = false;
                    oe.Trade   = trade;
                    onOrderSend(this, oe);
                }
            }
        }
        public void SendOrderToMarketMANUALCLOSE(Trade trade)
        {
            double price = trade.BuyorSell == Trade.BuySell.Buy ? HiSat.LivePrice.Offer : HiSat.LivePrice.Bid;

            ExcelLink.xlTradeOrder o = new xlTradeOrder()
            {
                BS = trade.BuyorSell,
                Price = price,
                Volume = trade.TradeVolume,
                Contract = WebSettings.General.OTS_INST,

            };

            try
            {
                e.Connect();
                e.WriteOrder(o);
                e.Disconnect();
                OrderSendEvent oe = new OrderSendEvent();
                oe.Success = true;
                oe.Trade = trade;
                onOrderSend(this, oe);
                e.StartCheckWhenOrderCompletedTimer(10000);
            }
            catch (Exception ex)
            {
                OrderSendEvent oe = new OrderSendEvent();
                oe.Success = false;
                oe.Trade = trade;
                onOrderSend(this, oe);
            }
        }