Exemplo n.º 1
0
        SlaveAccountModel()
        {
            if (!isInDesign)
            {
                syncronizeScheduler = new Schedulers.ThreadScheduler((s, e) => Log = e.Exception);
            }

            LocalTradesList  = new ListCollectionView(LocalTrades = new ObservableCollection <Trade>());
            AbsentTradesList = new ListCollectionView(AbsentTrades = new ObservableCollection <Trade>());

            fwLocal             = new FXW(this.CoreFX, t => { throw new NotImplementedException(); });
            tradeRequestManager = new TradeRequestManager(fwLocal);
            CoreFX.LoggedIn    += (s, e) => {
                //fwLocal.TradeAdded += fw_TradeAded;
                fwLocal.PriceChanged += fwLocal_PriceChanged;
                fwLocal.OrderRemoved += DoOrderRemoved;
                fwLocal.Error        += fwLocal_Error;
                RaisePropertyChanged(() => IsLoggedIn);
                Log = new Exception("Account " + TradingAccount + " logged in.");
            };
            CoreFX.LoginError += exc => {
                Log = exc;
                RaisePropertyChanged(() => IsLoggedIn);
            };
            CoreFX.LoggedOff += (s, e) => {
                Log = new Exception("Account " + TradingAccount + " logged out.");
                RaisePropertyChanged(() => IsLoggedIn);
                //fwLocal.TradeAdded -= fw_TradeAded;
                fwLocal.PriceChanged -= fwLocal_PriceChanged;
                fwLocal.OrderRemoved -= DoOrderRemoved;
                fwLocal.Error        -= fwLocal_Error;
            };
        }
Exemplo n.º 2
0
        void OpenTrade(FXW fw, string pair, bool buy, int lots, double limit, double stop, Trade masterTrade)
        {
            string serverTradeID            = masterTrade.Id;
            Func <string, bool> tradeExists = id => fw.GetTrade(serverTradeID) != null;

            if (!tradeExists(serverTradeID))
            {
                if (masterTradesPending.Contains(serverTradeID) || masterTradesSynced.Contains(serverTradeID))
                {
                    return;
                }
                masterTradesPending.Add(serverTradeID);
                PendingOrder po = null;
                Action <object, RequestEventArgs> reqiesFailedAction = (s, e) => {
                    if (po != null && e.RequestId == po.RequestId)
                    {
                        masterTradesPending.Remove(serverTradeID);
                        po  = null;
                        Log = new Exception(e.Error);
                    }
                };
                Action <Order> orderRemovedAvtion = order => {
                    var o = order.FixStatus;
                };
                Action <object, ErrorEventArgs> errorAction = (s, e) => {
                    if (serverTradeID == e.Remark)
                    {
                        masterTradesPending.Remove(serverTradeID);
                        po  = null;
                        Log = e.Error;
                    }
                };
                var rfh = new EventHandler <RequestEventArgs>(reqiesFailedAction);
                var orh = new OrderRemovedEventHandler(orderRemovedAvtion);
                var erh = new EventHandler <ErrorEventArgs>(errorAction);
                try {
                    fw.RequestFailed += rfh;
                    fw.OrderRemoved  += orh;
                    fw.Error         += erh;
                    po = fw.FixOrderOpen(pair, buy, lots, limit, stop, serverTradeID);
                    //if (po != null)          pendingTrade.GetUnKnown().ErrorMessage = "Waiting for " + po.RequestId;
                    var done = SpinWait.SpinUntil(
                        () => {
                        Thread.Sleep(100);
                        return(masterTradesPending.Contains(serverTradeID) && po != null && tradeExists(serverTradeID));
                    },
                        TimeSpan.FromSeconds(secondsToWaitForTrade));
                    if (tradeExists(serverTradeID))
                    {
                        masterTradesSynced.Add(serverTradeID);
                    }
                } catch (Exception exc) { Log = exc; } finally {
                    masterTradesPending.Remove(serverTradeID);
                    fw.RequestFailed -= rfh;
                    fw.OrderRemoved  -= orh;
                    fw.Error         -= erh;
                }
            }
            OpenTradeSchedulers.Remove(serverTradeID);
        }
Exemplo n.º 3
0
        private void Window_Initialized(object sender, EventArgs e)
        {
            Dispatcher.Invoke(new Action(() => {
                cmbPair.ResetText();
                cmbLotsToTradeBuy.ResetText();
                cmbLotsToTradeSell.ResetText();
                if (pair == "")
                {
                    MessageBox.Show("Pair is not selected!");
                    return;
                }
                if (isMainWindow)
                {
                    System.IO.File.Delete(logFileName);
                }
                fw                               = new Order2GoAddIn.FXCoreWrapper(app.FXCM);
                chartingWindow                   = new HedgeHog.Charting(this.Name, fw);
                corridorsWindow                  = new Corridors(this.Name);
                chartingWindow.TicksChanged     += chartingWindow_TicksChanged;
                chartingWindow.PriceGridChanged += ProcessPrice;
                chartingWindow.PriceGridError   += chartingWindow_PriceGridError;
                dataGrid1.AutoGeneratingColumn  += new EventHandler <Microsoft.Windows.Controls.DataGridAutoGeneratingColumnEventArgs>(dataGrid1_AutoGeneratingColumn);
                RaisePropertyChanged(() => title);
            }));

            //Window w = sender as Window;
            //w.Height = Properties.Settings.Default.MainWindowSize.Height;
            //w.Width = Properties.Settings.Default.MainWindowSize.Width;
            //w.Top = Properties.Settings.Default.MainWindowPos.Y;
            //w.Left = Properties.Settings.Default.MainWindowPos.X;
        }
Exemplo n.º 4
0
 private void btnLogin_Click(object sender, RoutedEventArgs e)
 {
     if (_coreFx.LogOn("D31538164001", "8802", true))
     {
         _fw             = new O2G.FXCoreWrapper(_coreFx, t => { throw new NotImplementedException(); });
         _fw.Error      += new EventHandler <HedgeHog.Shared.ErrorEventArgs>(_fw_Error);
         _fw.OrderError += new EventHandler <O2G.OrderErrorEventArgs>(_fw_OrderError);
         Log             = "Logged in.";
     }
 }
Exemplo n.º 5
0
        public void MyTestInitialize()
        {
            core.LoginError += new Order2GoAddIn.CoreFX.LoginErrorHandler(core_LoginError);
            o2g              = new FXCoreWrapper(core);

            //if (!core.LogOn("6519040180", "Tziplyonak713", false)) UT.Assert.Fail("Login");
            ////if (!core.LogOn("6519048070", "Toby2523", false)) UT.Assert.Fail("Login");
            //if (!core.LogOn("65245768", "1962", false)) UT.Assert.Fail("Login");
            if (!core.LogOn("D31712988001", "8482", true))
            {
                UT.Assert.Fail("Login");
            }
            //if (!core.LogOn("dturbo", "1234", true)) UT.Assert.Fail("Login");
            o2g.OrderRemoved += new OrderRemovedEventHandler(o2g_OrderRemovedEvent);
        }
Exemplo n.º 6
0
        public void GetTrades()
        {
            var account = o2g.GetAccount();

            Debug.WriteLine("StopAmount:{0}", account.StopAmount);
            var aID          = account.ID;
            var pair         = "USD/JPY";
            var baseUnitSize = o2g.GetBaseUnitSize(pair);
            var pipCost      = o2g.GetPipCost(pair);
            var lots         = 10000;
            var pips         = 10;

            MessageBox.Show(pips + " pips cost for " + lots + " of " + pair + " = " + FXW.PipsAndLotToMoney(pips, lots, pipCost, baseUnitSize));
            o2g.GetTrades("").Where(t => t.Stop > 0).ToList()
            .ForEach(t => Debug.WriteLine("Id:{0},Stop:{1}", t.Id, t.Stop));
        }