예제 #1
0
        private void dataGridViewStopOrders_DoubleClick(object sender, EventArgs e)
        {
            var MouseEvent = (MouseEventArgs)e;
            var dataGrid   = (DataGridView)sender;

            dataGrid.ClearSelection();
            if (MouseEvent.Button == MouseButtons.Right)
            {
                var hti   = dataGrid.HitTest(MouseEvent.X, MouseEvent.Y);
                int index = hti.RowIndex;
                if (index >= 0)
                {
                    DataGridViewRow row = dataGrid.Rows[index];
                    row.Selected = true;
                    Common.Ext.NewThread(() =>
                    {
                        decimal number = Convert.ToDecimal(row.Cells[1].Value.ToString());
                        var sec        = this.SearchSecurity(row.Cells[2].Value.ToString());
                        if (sec != null)
                        {
                            Trader.CancelStopOrder(sec, number);
                        }
                    });
                }
            }
        }
예제 #2
0
        /// <summary>
        /// Инициализация панели с контроля сделки
        /// </summary>
        private void InitPanelControl()
        {
            numericUpDownMCPriceLastTrade.InitSecurity(Securities);
            numericUpDownMCStopTiks.InitWheelDecimal(0, 1000, 1, 0);
            numericUpDownMCTakeProfitTiks.InitWheelDecimal(0, 1000, 1, 0);

            //Получаем сохраненные данные
            numericUpDownMCStopTiks.Value       = SettingsDepth.Get("TiksControlStop");
            numericUpDownMCTakeProfitTiks.Value = SettingsDepth.Get("TiksControlTake");

            numericUpDownMCStopTiks.ValueChanged += (s, e) =>
            {
                SettingsDepth.Set("TiksControlStop", (int)numericUpDownMCStopTiks.Value);
            };
            numericUpDownMCTakeProfitTiks.ValueChanged += (s, e) =>
            {
                SettingsDepth.Set("TiksControlTake", (int)numericUpDownMCTakeProfitTiks.Value);
            };
            //ВЫставляем флажок на сохраненном проценте
            foreach (var percent in PERCENT)
            {
                var objRadio = GetRadioButtonByPercent(percent);
                if (objRadio.NotIsNull())
                {
                    if (percent == SettingsDepth.Get("PercentTakeOut"))
                    {
                        objRadio.Checked = true;
                    }
                    objRadio.CheckedChanged += (s, e) =>
                    {
                        SettingsDepth.Set("PercentTakeOut", percent);
                    };
                }
            }

            buttonMCClose.Click += (s, e) =>
            {
                var sOrders = GetStopOrdersForControl();
                foreach (var sOrd in sOrders)
                {
                    Trader.CancelStopOrder(sOrd);
                }
            };
            buttonMCReset.Click += (s, e) =>
            {
                LoopControl(true);
            };

            buttonACPriceUp.Click += (s, e) =>
            {
                numericUpDownMCStopTiks.Value++;
                numericUpDownMCTakeProfitTiks.Value = numericUpDownMCTakeProfitTiks.Value > 0 ? numericUpDownMCTakeProfitTiks.Value - 1 : 0;
            };
            buttonACPriceDown.Click += (s, e) =>
            {
                numericUpDownMCStopTiks.Value = numericUpDownMCStopTiks.Value > 0 ? numericUpDownMCStopTiks.Value - 1 : 0;
                numericUpDownMCTakeProfitTiks.Value++;
            };
        }
예제 #3
0
 public void LoopControl(bool ReCalculate = false)
 {
     if (checkBoxMCActivate.Checked)
     {
         var pos = GetPositionForControl();
         if (pos.NotIsNull() && pos.CurrentVolume > 0)
         {
             var sOrders = GetStopOrdersForControl();
             if (ReCalculate || !CheckStopOrdersForControls(sOrders))
             {
                 foreach (var sOrd in sOrders)
                 {
                     Trader.CancelStopOrder(sOrd);
                 }
                 return;
             }
             if (sOrders.NotIsNull() && sOrders.Count() == 0) ///*&& (!CheckStopOrdersForControls(sOrders)*/)
             {
                 //Защита от большого числа заявок
                 if (sOrders.Count() > 2)
                 {
                     ShowTransReply("Контроль риска. Стоп-заявки не снимаются.");
                     return;
                 }
                 var     lastMyTrade = GetLastMyTradeForControl(pos.Data.CurrentNet);
                 decimal Price       = 0;
                 if (lastMyTrade.NotIsNull())
                 {
                     //Если выбран, то берем цену из поля цены
                     if (checkBoxMCSetPrice.Checked)
                     {
                         Price = numericUpDownMCPriceLastTrade.Value;
                     }
                     else
                     {
                         Price = numericUpDownMCPriceLastTrade.Value = lastMyTrade.Trade.Price;
                     }
                 }
                 else
                 {
                     ShowTransReply("Контроль риска. Не удалось получить последнюю сделку.");
                     return;
                 }
                 if (Price > 0 && numericUpDownMCStopTiks.Value > 0 && numericUpDownMCTakeProfitTiks.Value > 0)
                 {
                     var newStopOrder  = GetStopOrderControl(pos.Data.CurrentNet, Price);
                     var takePos       = getCurrectPosByPercent(pos);
                     var newTakeProfit = GetTakeProfitOrderControl(pos.Data.CurrentNet, takePos, Price);
                     if (newStopOrder.NotIsNull() && checkBoxMCStopLoss.Checked)
                     {
                         Trader.CreateStopOrder(newStopOrder, StopOrderType.StopLimit);
                     }
                     if (newTakeProfit.NotIsNull() && checkBoxMCTakeProfit.Checked)
                     {
                         Trader.CreateStopOrder(newTakeProfit, StopOrderType.TakeProfit);
                     }
                 }
                 else
                 {
                     ShowTransReply("Контроль риска. Одно из значений равно 0.");
                     return;
                 }
             }
         }
         else
         {
             var sOrders = GetStopOrdersForControl();
             foreach (var sOrd in sOrders)
             {
                 Trader.CancelStopOrder(sOrd);
                 Trader.CancelAllOrder(Securities);
                 Trader.CancelAllStopOrder(Securities);
             }
             //Снимаем флаг фиксации цены, чтобы при последующих ордерах не выставлялось не корректно.
             checkBoxMCSetPrice.Checked = false;
         }
     }
 }