public async Task <BinanceOrder> BinancePostOrdersAsync(BinanceOrder order)
        {
            BinanceOrder binanceOrder = null;

            try
            {
                ProcessLogBroadcast?.Invoke(MessageType.General, $"[Binance] Post Order Information.");
                ServerTime serverTime = await UpdateTimeServerAsync();

                Request request = new Request(_connectionAdapter.Authentication.EndpointUrl, "POST",
                                              $"/api/v3/order?");
                if (order.OrderType == OrderType.Market)
                {
                    request.RequestQuery = $"timestamp={serverTime.ServerTimeLong}&symbol={order.Symbol.ToUpper()}" +
                                           $"&side={order.OrderSide.ToString().ToUpper()}" +
                                           $"&type={order.OrderType.ToString().ToUpper()}&quantity={order.OrderSize}";
                }
                else
                {
                    request.RequestQuery = $"timestamp={serverTime.ServerTimeLong}&symbol={order.Symbol.ToUpper()}" +
                                           $"&side={order.OrderSide.ToString().ToUpper()}&type={order.OrderType.ToString().ToUpper()}" +
                                           $"&quantity={order.OrderSize}&price={ order.LimitPrice}&timeInForce=GTC";
                }
                string json = await _connectionAdapter.RequestAsync(request);

                binanceOrder = JsonSerializer.Deserialize <BinanceOrder>(json);
                ProcessLogBroadcast?.Invoke(MessageType.JsonOutput, $"UpdateAccountsAsync JSON:\r\n{json}");
            }
            catch (Exception e)
            {
                ProcessLogBroadcast?.Invoke(MessageType.Error,
                                            $"Method: BinancePostOrdersAsync\r\nException Stack Trace: {e.StackTrace}");
            }
            return(binanceOrder);
        }
        public async Task <BinanceOrder> BinanceCancelOrdersAsync(BinanceOrder binanceOrder)
        {
            try
            {
                ProcessLogBroadcast?.Invoke(MessageType.General, $"Cancelling order.");
                ServerTime serverTime = await UpdateTimeServerAsync();

                Request request = new Request(_connectionAdapter.Authentication.EndpointUrl,
                                              "DELETE",
                                              $"/api/v3/order?")
                {
                    RequestQuery =
                        $"symbol={binanceOrder.Symbol}&orderId={binanceOrder.ID}&timestamp={serverTime.ServerTimeLong}"
                };
                string json = await _connectionAdapter.RequestAsync(request);

                if (!string.IsNullOrEmpty(json))
                {
                    binanceOrder = JsonSerializer.Deserialize <BinanceOrder>(json);
                }
                ProcessLogBroadcast?.Invoke(MessageType.JsonOutput, $"BinanceCancelOrdersAsync JSON:\r\n{json}");
            }
            catch (Exception e)
            {
                ProcessLogBroadcast?.Invoke(MessageType.Error,
                                            $"Method: BinanceCancelOrdersAsync\r\nException Stack Trace: {e.StackTrace}");
            }
            return(binanceOrder);
        }
Exemple #3
0
    public static long NowTicks()
    {
        float      num   = 0f;
        ServerTime value = ServerTimes.Value;

        return(DateTime.UtcNow.Ticks + value.localOffset + (long)(1E+07f * num));
    }
Exemple #4
0
        /// <summary>
        /// 系统初始化
        /// </summary>
        private void Init()
        {
            #region 查询返修信息

            DateTime dtBegin, dtEnd;
            ServerTime.GetMonthlyBalance(ServerTime.Time, out dtBegin, out dtEnd);
            dateTimePickerET.Value = dtBegin.AddDays(1).Date;
            RefreshDataGridViewOfRepairInfo();

            #endregion

            string[] productType = null;

            if (!m_productInfoServer.GetAllProductType(out productType, out error))
            {
                MessageDialog.ShowErrorMessage(error);
                return;
            }

            List <string> lstProductType = productType.ToList();

            lstProductType.RemoveAll(p => p.Contains(" FX"));

            cmbOldCVTType.Items.Clear();
            cmbNewCVTType.Items.Clear();

            cmbOldCVTType.Items.AddRange(lstProductType.ToArray());
            cmbNewCVTType.Items.AddRange(lstProductType.ToArray());

            cmbOldCVTType.SelectedIndex = 0;
            cmbNewCVTType.SelectedIndex = 0;
        }
Exemple #5
0
 private bool IsEndOfWeek() {
   var isEow = ServerTime.DayOfWeek == DayOfWeek.Friday && ServerTime.ToUniversalTime().Hour > 20
     || (!TradeOnBOW && IsBeginningOfWeek());
   if(isEow)
     Log = new Exception(new { isEow } + "");
   return isEow;
 }
Exemple #6
0
        public void CanConvertDateTimeFromServerTimeZoneToStandardUserTimeZone()
        {
            var service = new ServerTime();

            var serverDateTimeBeforeSaving = new DateTime(2014, 02, 22, 13, 24, 00);
            var parsedTimeBeforeSaving     = service.ConvertServerTimeToStandardUserTime(serverDateTimeBeforeSaving);

            Assert.AreEqual(14, parsedTimeBeforeSaving.Hour);
            Assert.AreEqual(24, parsedTimeBeforeSaving.Minute);

            var serverDateTimeInSaving = new DateTime(2014, 09, 22, 13, 24, 00);
            var parsedTimeInSaving     = service.ConvertServerTimeToStandardUserTime(serverDateTimeInSaving);

            Assert.AreEqual(15, parsedTimeInSaving.Hour);
            Assert.AreEqual(24, parsedTimeInSaving.Minute);

            var serverDateTimeAfterSaving = new DateTime(2014, 12, 22, 13, 24, 00);
            var parsedTimeAfterSaving     = service.ConvertServerTimeToStandardUserTime(serverDateTimeAfterSaving);

            Assert.AreEqual(14, parsedTimeAfterSaving.Hour);
            Assert.AreEqual(24, parsedTimeAfterSaving.Minute);

            var serverDateTimeBreakingPOint = new DateTime(2013, 10, 01, 10, 24, 00);
            var parsedTimeBreakingPOint     = service.ConvertServerTimeToStandardUserTime(serverDateTimeBreakingPOint);

            Assert.AreEqual(12, parsedTimeBreakingPOint.Hour);
            Assert.AreEqual(24, parsedTimeBreakingPOint.Minute);
        }
Exemple #7
0
 private void StrategyShortPut() => UseAccountManager(am => {
   var puts = OpenPuts().ToList();
   var distanceOk = (from curPut in CurrentPut
                     from openPut in puts.OrderBy(p => p.contract.Strike).Take(1).ToList()
                     let strikeAvg = curPut.strikeAvg
                     let openPutPrice = openPut.price.Abs()
                     let openPutStrike = openPut.contract.Strike
                     where curPut.option.LastTradeDateOrContractMonth == openPut.contract.LastTradeDateOrContractMonth
                     && strikeAvg + openPutPrice > openPutStrike
                     select true
                     ).IsEmpty();
   var hasOptions = puts.Count +
     am.UseOrderContracts(OrderContracts =>
     (from put in CurrentPut
      join oc in OrderContracts.Where(o => !o.isDone & o.order.Action == "SELL") on put.instrument equals oc.contract.Instrument
      select true
      )).Concat().Count();
   var hasSellOrdes = am.UseOrderContracts(OrderContracts =>
   (from oc in OrderContracts.Where(o => !o.isDone && o.contract.IsPut && !o.contract.IsCombo && o.order.Action == "SELL")
    select true
    )).Concat().Count();
   if(distanceOk && hasOptions < TradeCountMax) {
     TradeConditionsEval()
       .DistinctUntilChanged(td => td)
       .Where(td => td.HasUp())
       .Take(1)
       .ForEach(_ => {
         var pos = -puts.Select(p => p.position.Abs()).DefaultIfEmpty(TradingRatio.ToInt()).Max();
         CurrentPut?.ForEach(p => {
           Log = new Exception($"{nameof(TradeConditionsTrigger)}:{nameof(am.OpenTrade)}:{new { p.option, pos, Thread.CurrentThread.ManagedThreadId }}");
           am.OpenTrade(p.option, pos, p.ask, 0.2, true, ServerTime.AddMinutes(5));
         });
       });
   }
 });
        public void UpdateStatus(int id, int status, String repairer, String comment)
        {
            SqlCommand cmd;

            cmd = cnn.CreateCommand();
            if (status == 3)
            {
                cmd.CommandText = "UPDATE [PTR].[dbo].[FailRecord] SET [status] = @stt,[TimeResume]=@now, [Repairer]=@repairer,[Comment]=@comment WHERE [RecordId] = @id";
                cmd.Parameters.AddWithValue("@now", ServerTime.current());
                cmd.Parameters.AddWithValue("@id", id);
                cmd.Parameters.AddWithValue("@stt", status);
                cmd.Parameters.AddWithValue("@repairer", repairer);
                cmd.Parameters.AddWithValue("@comment", comment);
                cmd.ExecuteNonQuery();
                cmd             = cnn.CreateCommand();
                cmd.CommandText = "UPDATE [PTR].[dbo].[FailRecord] SET [Duration] = DATEDIFF(MINUTE,[TimeStop],[TimeResume]) WHERE [RecordId] = @id";
                cmd.Parameters.AddWithValue("@id", id);
                cmd.ExecuteNonQuery();
            }
            else
            {
                cmd.CommandText = "UPDATE [PTR].[dbo].[FailRecord] SET [status] = @stt, [Repairer]=@repairer WHERE [RecordId] = @id";

                cmd.Parameters.AddWithValue("@id", id);
                cmd.Parameters.AddWithValue("@stt", status);
                cmd.Parameters.AddWithValue("@repairer", repairer);
                cmd.ExecuteNonQuery();
            }
        }
Exemple #9
0
        public void CanConvertToServerTimeZoneFromStandardUser()
        {
            var service = new ServerTime();

            var dateToConvertBeforeSaving = new DateTime(2014, 02, 22, 15, 24, 00);
            var parsedTimeBeforeSaving    = service.ConvertUserStandardTimeToServerTime(dateToConvertBeforeSaving);

            Assert.AreEqual(14, parsedTimeBeforeSaving.Hour);
            Assert.AreEqual(24, parsedTimeBeforeSaving.Minute);

            var dateToConvertInSaving = new DateTime(2014, 09, 22, 15, 24, 00);
            var parsedTimeInSaving    = service.ConvertUserStandardTimeToServerTime(dateToConvertInSaving);

            Assert.AreEqual(13, parsedTimeInSaving.Hour);
            Assert.AreEqual(24, parsedTimeInSaving.Minute);

            var dateToConvertAfterSaving = new DateTime(2014, 12, 22, 15, 24, 00);
            var parsedTimeAfterSaving    = service.ConvertUserStandardTimeToServerTime(dateToConvertAfterSaving);

            Assert.AreEqual(14, parsedTimeAfterSaving.Hour);
            Assert.AreEqual(24, parsedTimeAfterSaving.Minute);

            var dateToConvertBreakingPOint = new DateTime(2013, 10, 01, 10, 24, 00);
            var parsedTimeBreakingPOint    = service.ConvertUserStandardTimeToServerTime(dateToConvertBreakingPOint);

            Assert.AreEqual(8, parsedTimeBreakingPOint.Hour);
            Assert.AreEqual(24, parsedTimeBreakingPOint.Minute);
        }
Exemple #10
0
    // Update is called once per frame
    void Update()
    {
        if (!Channel.GetNetwork().IsClient())
        {
            DateTime now = new DateTime();
            now = DateTime.Now;
            TimeSpan duration = now - last_clientupdate;
            if (duration > TimeSpan.FromMilliseconds(100))
            {
                float time = Time.time;
                last_clientupdate = now;
                network_data.move_player m = new network_data.move_player();
                IDictionaryEnumerator    i = Channel.FirstEntity();
                while (i.MoveNext())
                {
                    GameObject g = (GameObject)i.Value;
                    m.set((int)i.Key, Channel.GetChannel());
                    m.position = ((GameObject)i.Value).transform.localPosition;
                    m.velocity = ((GameObject)i.Value).GetComponent <ship>().GetVelocity();
                    m.rotation = ((GameObject)i.Value).transform.localRotation;
                    m.time     = time;
                    byte[] data1 = network_utils.nData.Instance.SerializeMsg <network_data.move_player>(m);

                    foreach (KeyValuePair <int, GameObject> gg in ShipList)
                    {
                        gg.Value.GetComponent <channel>().SendToChannel(ref data1);
                    }
                }
            }
        }
        ServerTime.Update(Time.deltaTime);
    }
Exemple #11
0
        private void btnDelete_Click(object sender, EventArgs e)
        {
            try
            {
                string strDateNy = ServerTime.GetMonthlyString(Convert.ToDateTime(dgv_Main.CurrentRow.Cells["Date"].Value));

                string strNowNy = ServerTime.GetMonthlyString(ServerTime.Time);

                if (strDateNy != strNowNy)
                {
                    MessageDialog.ShowPromptMessage("不能跨月删除发票");
                    return;
                }

                if (MessageBox.Show("您是否确定要删除发票号为【" + dgv_Main.CurrentRow.Cells["InvoiceCode"].Value.ToString()
                                    + "】的发票?", "消息", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    if (m_findVoice.DeleteInvoiceInfo(dgv_Main.CurrentRow.Cells["InvoiceCode"].Value.ToString(), out m_err))
                    {
                        MessageBox.Show("删除成功!", "提示");
                    }
                    else
                    {
                        MessageBox.Show("删除失败 " + m_err, "提示");
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }

            dgv_Main.DataSource = GetProviderName(m_findVoice.GetInvoiceInfo(dtp_Start.Value, dtp_End.Value));
            dgv_Mx.DataSource   = null;
        }
        public async Task <List <BinanceFill> > UpdateBinanceFillsAsync(Product product)
        {
            try
            {
                ProcessLogBroadcast?.Invoke(MessageType.General, $"Updating Fills Information.");
                ServerTime serverTime = await UpdateTimeServerAsync();

                Request request = new Request(_connectionAdapter.Authentication.EndpointUrl,
                                              "GET",
                                              $"/api/v3/myTrades?")
                {
                    RequestQuery =
                        $"symbol={product.ID}&recvWindow=5000&timestamp={serverTime.ServerTimeLong}&limit=10"
                };
                string json = await _connectionAdapter.RequestAsync(request);

                if (!string.IsNullOrEmpty(json))
                {
                    BinanceFill = JsonSerializer.Deserialize <List <BinanceFill> >(json);
                }
                ProcessLogBroadcast?.Invoke(MessageType.JsonOutput, $"UpdateAccountsAsync JSON:\r\n{json}");
            }
            catch (Exception e)
            {
                ProcessLogBroadcast?.Invoke(MessageType.Error,
                                            $"Method: UpdateFillsAsync\r\nException Stack Trace: {e.StackTrace}");
            }
            return(BinanceFill);
        }
Exemple #13
0
 private IEnumerator TickTime()
 {
     while (true)
     {
         ServerTime.Update(Time.deltaTime);
         yield return(new WaitForEndOfFrame());
     }
 }
 private void CmdMovePlayer(GameObject ply, int t)
 {
     if (ServerTime.CheckSynchronization(t) && base.GetComponent <CharacterClassManager>().curClass == 3 && Vector3.Distance(base.GetComponent <PlyMovementSync>().position, ply.transform.position) < 3f)
     {
         base.GetComponent <PlayerStats>().HurtPlayer(new PlayerStats.HitInfo(40f, "SCP:106", "SCP:106"), ply);
         this.CallRpcMovePlayer(ply);
     }
 }
Exemple #15
0
        private void btnOK_Click(object sender, EventArgs e)
        {
            //if (ServerTime.Time.Day >= 25 && dtpBeginDate.Value.Month < ServerTime.Time.Month)
            //{
            //    MessageDialog.ShowPromptMessage("每月25号之后不允许对上个月的考勤再做统计!");
            //    return;
            //}

            if (MessageBox.Show("节假日、异常登记等所有信息是否都已经处理完成?", "消息", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                DataTable dtResult = m_dayBookServer.GetDayBookViewByDate(dtpBeginDate.Value.ToString(), dtpEndDate.Value.ToString());

                try
                {
                    for (int j = 0; j < dtResult.Rows.Count; j++)    //循环在职需要考勤的员工
                    {
                        string workID = dtResult.Rows[j]["员工编号"].ToString();

                        HR_AttendanceSetting attendanceSet = m_attendanceSchemeServer.GetAttendanceSettingByWorkID(workID);
                        string[]             schemeCode    = attendanceSet.SchemeCode.Split(' ');
                        string mode = m_attendanceSchemeServer.GetAttendanceSchemeByCode(schemeCode[0]).AttendanceMode;

                        DateTime starTime, endTime;

                        starTime = dtpBeginDate.Value;
                        endTime  = dtpEndDate.Value;

                        if (mode.Contains("非自然"))
                        {
                            ServerTime.GetMonthlyBalance(dtpBeginDate.Value, out starTime, out endTime);
                            endTime = endTime.AddDays(-1);
                        }

                        if (!m_attendanceServer.AddAttendanceSummary(workID, starTime, endTime, out m_error))
                        {
                            MessageDialog.ShowPromptMessage(m_error);
                            return;
                        }
                    }

                    if (!m_attendanceServer.AddAttendanceSummaryByAllowOverTime(out m_error))
                    {
                        MessageDialog.ShowPromptMessage(m_error);
                        return;
                    }

                    MessageDialog.ShowPromptMessage("人员考勤统计已经完成");
                }
                catch (Exception)
                {
                    throw;
                }
            }
            else
            {
                return;
            }
        }
        private void btnSelect_Click(object sender, EventArgs e)
        {
            DateTime startTime = ServerTime.StartTime(dtpStart.Value);
            DateTime endTime   = ServerTime.EndTime(dtpEnd.Value);

            DataTable tempTable = m_serverDeliveryInSpection.SelectFinalInspectionList(startTime, endTime);

            customDataGridView1.DataSource = tempTable;
        }
        public override void Log(LogWriter logWriter, DBInputOutput.DBWriter dbWriter = null, int assetid = -1)
        {
            DateTime dTime = ServerTime.GetRealTime();

            if (dbWriter != null)
            {
                dbWriter.InsertOrderLog(dTime, OrderId, "CancelFailed", 0, "", assetid);
            }
            logWriter.WriteLine(dTime.ToString(DateTimeFormat) + " | Order cancel failed. OrderId: " + OrderId);
        }
Exemple #18
0
        public override void Log(LogWriter logWriter, DBInputOutput.DBWriter dbWriter = null, int assetid = -1)
        {
            DateTime dTime = ServerTime.GetRealTime();

            if (dbWriter != null)
            {
                dbWriter.InsertOrderLog(dTime, OrderId, "Failed", Cookie, Reason, assetid);
            }
            logWriter.WriteLine(dTime.ToString(DateTimeFormat) + " | Order failed. Cookie: {0}; OrderId: {1}; Reason: {2}", Cookie, OrderId, Reason);
        }
        public string Serialize()
        {
            PacketContainer cont = new PacketContainer()
            {
                type    = (int)type,
                data    = data,
                created = ServerTime.GetCurrentUnixTimestampMillis()
            };

            return(JsonConvert.SerializeObject(cont));
        }
Exemple #20
0
 void ScanRatesLengthByM1Wave(Func <TradingMacro, WaveRange> wave)
 {
     if (BarPeriod != BarsPeriodType.t1)
     {
         throw new Exception("ScanRatesLengthByM1Wave is only supported for BarsPeriodType." + BarsPeriodType.t1);
     }
     TradingMacroM1(wave)
     .Select(wr => ServerTime.AddMinutes(-wr.TotalMinutes))
     .SelectMany(date => UseRatesInternal(rates => rates.SkipWhile(r => r.StartDate < date).Count()))
     .ForEach(count => BarsCountCalc = count.Max(BarsCount));
 }
 public static void Get()
 {
     if (time == null)
     {
         Debug.Log("Script not attached to anything");
         GameObject obj = new GameObject("TimeHolder");
         localInstance = obj.AddComponent <ServerTime>();
         Debug.Log("Automatically Attached Script to a GameObject");
     }
     time.StartCoroutine(time.ServerRequest());
 }
 private void Awake()
 {
     if (localInstance != null && localInstance != this)
     {
         Destroy(this.gameObject);
     }
     else
     {
         localInstance = this;
     }
 }
        public override void Log(LogWriter logWriter, DBInputOutput.DBWriter dbWriter = null, int assetid = -1)
        {
            DateTime dTime = ServerTime.GetRealTime();

            if (dbWriter != null)
            {
                dbWriter.InsertPosition(dTime, Symbol, assetid, Amount, Planned, AvgPrice);
            }
            logWriter.WriteLine(dTime.ToString(DateTimeFormat) +
                                " | Update position. Symbol: {0}; Amount: {1}; Planned: {2}", Symbol, Amount, Planned);
        }
Exemple #24
0
 private void HandleInformTimer(object sender, ElapsedEventArgs e)
 {
     //dbWriter.InsertGeneral("Listening", "Listener");
     dbWriter.InsertSts(ServerTime.GetRealTime(), "Listener", "Listening");
     if (IsEndOfWork())
     {
         //dbWriter.InsertGeneral("Work Ended", "Listener");
         dbWriter.InsertSts(Stocks.ServerTime.GetRealTime(), "Listener", "Work Ended");
         DisconnectStockServer();
         Environment.Exit(0);
     }
 }
        public void ThrowsExceptionIfCurrentUserDoesNotHaveAccess()
        {
            var contactRepository = new LocalRepository <Contact>();
            var userRepository    = new LocalRepository <InsideUser>();
            var emailSender       = new Mock <IEmailSender>();
            var serverTime        = new ServerTime();

            var client = new Client();

            client.Name = "Kund";
            client.Id   = 8;

            var client2 = new Client();

            client2.Name = "Kund 2";
            client2.Id   = 18;


            var contact = new Contact();

            contact.LeadType = "Chat";
            contact.Id       = 14;
            contact.Date     = new DateTime(2014, 6, 13, 14, 22, 9);
            contact.Client   = client;
            contact.ClientId = 8;

            var currentUser = new InsideUser();

            currentUser.Email    = "*****@*****.**";
            currentUser.Name     = "Linus Lind";
            currentUser.Id       = "currentUserId";
            currentUser.Client   = client2;
            currentUser.ClientId = 18;

            contactRepository.Add(contact);
            userRepository.Add(currentUser);

            var controller = new SocialController(
                contactRepository,
                userRepository,
                emailSender.Object,
                serverTime);

            GenericIdentity genericIdentity = new GenericIdentity("user");

            genericIdentity.AddClaim(new Claim(ClaimTypes.NameIdentifier, "currentUserId"));
            controller.User = new ClaimsPrincipal(
                new GenericPrincipal(genericIdentity, null));

            var results = controller.SendContact(14, "*****@*****.**", "08 123 456", "Message\non two rows") as UnauthorizedResult;

            Assert.IsInstanceOfType(results, typeof(UnauthorizedResult));
        }
Exemple #26
0
        public override void Log(LogWriter logWriter, DBInputOutput.DBWriter dbWriter = null, int assetid = -1)
        {
            DateTime dTime = ServerTime.GetRealTime();

            if (dbWriter != null)
            {
                dbWriter.InsertOrderLog(dTime, OrderId, "UpdateOrder", Cookie, "", assetid, (int)State, (int)Action, (int)Type, Price, Amount, Stop, Filled);
            }
            logWriter.WriteLine(dTime.ToString(DateTimeFormat) +
                                " | Update order. Symbol: {0}; State: {1}; Action: {2}; Type: {3}; Price: {4}; Amount: {5}; Stop: {6}; Filled: {7}; " +
                                "Datetime: {8}; OrderId: {9}; Cookie: {10}", Symbol, State, Action, Type, Price, Amount, Stop, Filled, Datetime, OrderId, Cookie);
        }
        /// <summary>
        /// Сохранить текущее портфолио в БД
        /// </summary>
        /// <returns></returns>
        public async Task SaveCurrentPortfolioBDAsync()
        {
            var portfolio = await GetPortfolioCurrencyAsync(Tinkoff.Trading.OpenApi.Models.Currency.Rub);

            _context.PortfolioHistory.Add(new PortfolioHistory()
            {
                balance  = (double)portfolio.Balance,
                currency = CurrencyEnum.Rub,
                time     = ServerTime.GetDate()
            });

            await _context.SaveChangesAsync();
        }
Exemple #28
0
        protected override List <Order> PreparePlaceOrders()
        {
            WriteToLogDB("PreparePlaceOrders", "Started");
            Bar    bar       = DatabaseReader.SelectLastPrice(Symbol);
            double lastPrice = bar.Close;

            double buyPrice  = RoundToStep(lastPrice - 0.02);
            double sellPrice = RoundToStep(lastPrice + 0.02);
            int    buyVol    = 0;
            int    sellVol   = 0;

            if (CurrentState.Position == 0)
            {
                buyVol  = ContractsToTrade;
                sellVol = ContractsToTrade;
            }
            else if (CurrentState.Position < 0)
            {
                buyVol  = ContractsToTrade;
                sellVol = ContractsToTrade - Math.Abs(CurrentState.Position);
            }
            else
            {
                buyVol  = ContractsToTrade - Math.Abs(CurrentState.Position);
                sellVol = ContractsToTrade;
            }
            if (buyPrice >= sellPrice || (buyPrice <= 0 && buyVol != 0) || (sellPrice <= 0 && sellVol != 0))
            {
                throw new SmartException(ExceptionImportanceLevel.HIGH, "PreparePlaceOrders", "ContrTrendStrat", "buyPrice = " + buyPrice + ", sellPrice = " + sellPrice);
            }
            WriteToLogDB("PreparePlaceOrders", "Buy: Price = " + buyPrice + ", Volume = " + buyVol + "; Sell: Price = " + sellPrice + ", Volume = " + sellVol);
            List <Order> placeOrders = new List <Order>();

            DateTime dTime = ServerTime.GetRealTime();

            DatabaseWriter.InsertDecision(dTime, Symbol, ActionEnum.BUY, buyPrice, buyVol, 0);
            DatabaseWriter.InsertDecision(dTime, Symbol, ActionEnum.SELL, sellPrice, sellVol, 0);

            if (buyVol > 0)
            {
                placeOrders.Add(new Order(Symbol, GenerateCookie(), "", buyVol, 0, buyPrice, 0, ActionEnum.BUY, OrderTypeEnum.LIMIT));
            }
            if (sellVol > 0)
            {
                placeOrders.Add(new Order(Symbol, GenerateCookie(), "", sellVol, 0, sellPrice, 0, ActionEnum.SELL, OrderTypeEnum.LIMIT));
            }

            WriteToLogDB("PreparePlaceOrders", "Finished");
            return(placeOrders);
        }
        public bool IsAlive()
        {
            if (!tcpclient.Connected)
            {
                return(false);
            }
            if (!stillOk)
            {
                return(false);
            }
            long currentTime = ServerTime.GetCurrentUnixTimestampMillis();

            return((currentTime - lastHeartBeat) < PurgeTimout);
        }
Exemple #30
0
        public UserControlAttendanceDaybook(PlatformManagement.FunctionTreeNodeInfo nodeInfo)
        {
            InitializeComponent();

            m_authorityFlag = nodeInfo.Authority;

            DateTime dtStart, dtEnd;

            ServerTime.GetMonthlyBalance(ServerTime.Time, out dtStart, out dtEnd);

            dtpSelectStar.Value = dtStart;
            dtpSelectEnd.Value  = dtEnd.AddDays(-1);

            RefreshDataGridView();
        }