buyairt / project

0 stars 0 forks source link

plaza2 #11

Open buyairt opened 3 years ago

buyairt commented 3 years ago

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Windows.Navigation; using System.Windows.Shapes;

namespace twsclassic //twsclassic.Window1.this1 //twsclassic.PortfolioName.AccountSeria { using System; using System.Windows; using System.Windows.Forms; using System.Windows.Media; using System.Windows.Media.Imaging; using System.Threading; //using Client; using System.Collections.Generic; using System.IO; using System.Windows.Forms;

using Ecng.Collections;
using Ecng.Common;
using Ecng.Serialization;
using Ecng.Xaml;
using Ecng.Configuration;

using StockSharp.Algo;
using StockSharp.Algo.Candles;
using StockSharp.Algo.Testing;
using StockSharp.BusinessEntities;
using StockSharp.Configuration;
using StockSharp.Localization;
using StockSharp.Logging;
using StockSharp.Messages;
using StockSharp.Xaml;
using StockSharp.Xaml.Charting;

using Newtonsoft.Json;
/// <summary>
/// Логика взаимодействия для SettingStock.xaml
/// </summary>

public partial class SettingStock : Window //: W
{
    public SettingStock()
    {
        InitializeComponent();

        ClientVisual.UpdateGraf.Tics += UpdateGraf_Tics;
    }
    string TCH(string ti)
    {
        if (ti.Length == 1) return "0" + ti;
        return ti;
    }

    string FRECH(string ti)
    {
        if (ti.Length == 1) return "00" + ti;
        if (ti.Length == 2) return "0" + ti;
        return ti;
    }
    private void UpdateGraf_Tics(object sender, ClientVisual.Send_UpdateGraf e)
    {
        if (e.text == null) return;
        if (e.text == "") return;

        try
        {

            CORPLLC. LogTableA1BBx LogTableA1BBx = new CORPLLC. LogTableA1BBx();
            try
            {
                LogTableA1BBx.Message1 = e.text;
            }
            catch { }
            try
            {
                LogTableA1BBx.Time1 = e.stopwatch.ToString();
            }
            catch { }

            try

            {
                //  LogTable. LogTableA1BBx1.Add(LogTableA1BBx);

                //   LogsText.Content += LogTableA1BBx.Time1 + " " + LogTableA1BBx.Message1 + Environment.NewLine;

            }
            catch { }

        }
        catch { }

        this.Dispatcher.BeginInvoke((Action)(() =>
        {
            //   LogTableA1BB.ItemsSource = LogTable.LogTableA1BBx1;
            //   LogTableA1BB.Items.Refresh();
        }));

        try
        {
            this.Dispatcher.BeginInvoke((Action)(() =>
            {
                //string ee = e.text.ToString();

                // System.Diagnostics.Stopwatch stopwatch = System.Diagnostics.Stopwatch.StartNew();
                // var timetick2 = e.stopwatch.Elapsed;// - stopwatch.Elapsed;
                //Console.WriteLine("stream " + number + " " + " ms=" + (timetick2).ToString() + "  ");

                DateTime localDate = e.stopwatch;
                string timesdroop = TCH(localDate.Hour.ToString()) + ":" + TCH(localDate.Minute.ToString()) + ":" + TCH(localDate.Second.ToString()) + "." + FRECH(localDate.Millisecond.ToString());
                LogsText.Text = timesdroop + " " + e.text/*.ToUpper()*/ + Environment.NewLine + LogsText.Text;
                // totalMessage = 0;
                int len = LogsText.Text.ToString().Length;
                if (len > 5000)
                {
                    try
                    {
                        double len_i = len;
                        len_i /= 2;
                        string copu = LogsText.Text.ToString();
                        string new_ = copu.Substring(0, (int)len_i);
                        int need = len - (int)len_i;
                        string save = copu.Substring((int)len_i, need);

                        int tle1 = new_.Length;
                        int tle2 = save.Length;

                        try
                        {
                            System.IO.File.AppendAllText("logs/logs" + localDate.Year.ToString() + "-" + localDate.Month.ToString() + "-" + localDate.Day.ToString() + ".txt", save);
                        }
                        catch
                        {
                            try
                            {
                                System.IO.File.WriteAllText("logs/logs" + localDate.Year.ToString() + "-" + localDate.Month.ToString() + "-" + localDate.Day.ToString() + ".txt", save);
                            }
                            catch
                            {
                            }
                        }
                        LogsText.Text = new_;// copu;
                    }
                    catch
                    {
                    }
                    /*try
                    {
                        System.IO.File.AppendAllText ("logs/logs" + localDate.Year.ToString() +"-"+ localDate .Month.ToString() + "-" + localDate.Day.ToString()+  ".txt", textBox9.Text);
                    }
                    catch
                    {
                        try
                        {
                            System.IO.File.WriteAllText  ("logs/logs" + localDate.Year.ToString() + "-" + localDate.Month.ToString() + "-" + localDate.Day.ToString() + ".txt", textBox9.Text);
                        }
                        catch { }  
                    }
                    textBox9.Text = "";*/
                }
            }));
        }
        catch
        {
        }
        //next

        /*      for (int i = 0; i < SendTableForm.Total; i++)
          {
              string[] text = SendTableForm.SentTextTable[i].Split(new Char[] { ',' });
              if (text.Length > 5)
              {

                  string bid_slow = "0";
                  string bid_fast = "0";
                  string spread = "0";

                  if (SendTableForm.symb[i] != null)
                      coletable.OPEN(SendTableForm.symb[i], ref bid_slow, ref bid_fast, ref spread);

                  if (ClientVisual.coleccOrderTable.open(SendTableForm.symb[i]))
                  {
                      if (Close_Time.TIME() < 5000)
                          row1[4] = " wait      ";
                      else
                          row1[4] =
                      " X         ";
                  }
                  else
                  {
                      row1[4] = " -      ";
                  }

                  Table_1 Table_1 = new Table_1();
                  Table_1.Symbol = SendTableForm.symb[i];
                  Table_1.Slow = bid_slow;
                  Table_1.Fast   = bid_fast;
                  Table_1.Spread = spread;

                      this.Dispatcher.BeginInvoke((Action)(() =>
                      {           
                          dataGridView1.ItemsSource = Table_1XXX;
                          dataGridView1.Items.Refresh();
                      }));

                  for (int z = 0; z < 5; z++)
                  {   
                  }

                  for (int z = 0; z < 1; z++)
                  {   
                  }

              } 

          }  */

        //  throw new NotImplementedException();
    }

    // private const string _settingsFile = "c://temp/connection.xml";

    /// <summary>
    /// иницилизация логирования
    /// </summary>
    /// 
    bool start1 = false;

    public void OnInits()
    {
        if ( start1) return;
        start1 = true;

        CORPLLC .Trade1._realConnector = _realConnector;

        if (CORPLLC .Window1.this1 == null)
        {
            ClientVisual.UpdateGraf.SendUpdate(DateTime.Now, "error Window1 this null ", 1, 1, 1, "");
            return;
        }
        if (CORPLLC .Window1.this1 == null)
        {
            ClientVisual.UpdateGraf.SendUpdate(DateTime.Now, "error PortfolioName AccountSeria null ", 1, 1, 1, "");
            return;
        }
        //   twsclassic.Window1.this1 = this1x;

        _logManager.Listeners.Add(new GuiLogListener(Log));
        _logManager.Sources.Add(_realConnector);

        try
        {
            //загружает коннект логин пароль. например если выключали программу
            if (File.Exists(CORPLLC . FileSettingStock._settingsFile))
            {
                _realConnector.Load(new XmlSerializer<SettingsStorage>().Deserialize(CORPLLC . FileSettingStock._settingsFile));
            }
        }
        catch
        {
        }
    }

    private readonly LogManager _logManager = new LogManager();

    Connector _realConnector = new Connector();

    /// <summary>
    /// пользователь вводит нужный фид
    /// </summary>

    //  System.Windows. Windows this1;

    void setting()
    {
        if (!_realConnector.Configure(CORPLLC . Window1.this1))
            return;
        new XmlSerializer<SettingsStorage>().Serialize(_realConnector.Save(), CORPLLC . FileSettingStock._settingsFile);
    }
    private Security _security;
    private void SecurityPicker_OnSecuritySelected(Security security)
    {
        if (security == null)
            return;
        _security = security;

        string path = System.IO.Directory.GetCurrentDirectory();// 
                                                                //   Directory.CreateDirectory(path + "\\" +  );
        OpenFileDialog openFileDialog1 = new OpenFileDialog();
        string put = _security.Class + " " + _security.Code;
        put = put.Replace("#", "").Replace(" ", "").Replace(".", "");
        string put2 = path + "\\" + Client.defaults.mysettinstrument + "\\" + put /*+ " " + _security.Code*/  ;

        string save_secyrity = JsonConvert.SerializeObject(_security);
        System.IO.File.WriteAllText(put2 + ".txt", save_secyrity);

        //подписываемся под котировки
        _realConnector.SubscribeMarketDepth(security);
        _realConnector.SubscribeTrades(security);
        _realConnector.SubscribeLevel1(security);

        // OpenBuy(security);

        //     OpenSell();
    }

    //закрытие ордера
    private void OrderGrid_OnOrderCanceling(Order order)
    {
        _realConnector.CancelOrder(order);
    }

    //регистрация нвоого орддера до откртия
    private void OrderGrid_OrderRegistering()
    {
        var pfDataSource = new PortfolioDataSource();

        pfDataSource.AddRange(_realConnector.Portfolios);

        var newOrder = new OrderWindow
        {
            Order = new Order { Security = _security },
            SecurityProvider = _realConnector,
            MarketDataProvider = _realConnector,
            Portfolios = pfDataSource,
        };

        if (newOrder.ShowModal(CORPLLC . Window1.this1))
        {
            var order = newOrder.Order;

            _realConnector.RegisterOrder(order);
        }
    }

    //регистрация нвоого орддера, после открытия
    private void OrderGrid_OnOrderReRegistering(Order order)
    {
        var pfDataSource = new PortfolioDataSource();
        pfDataSource.Add(order.Portfolio);

        var window = new OrderWindow
        {
            Title = LocalizedStrings.Str2976Params.Put(order.TransactionId),
            SecurityProvider = _realConnector,
            MarketDataProvider = _realConnector,
            Portfolios = pfDataSource,
            Order = order.ReRegisterClone(newVolume: order.Balance)
        };

        if (window.ShowModal(CORPLLC . Window1.this1))
        {
            _realConnector.ReRegisterOrder(order, window.Order);
        }
    }

    bool connec_old = false;
    void connect()
    {
        if (connec_old == true) return;
        connec_old = false;

        OnInits();

        try
        {
            //загружает коннект логин пароль. например если выключали программу
            if (File.Exists(CORPLLC . FileSettingStock._settingsFile))
            {
                _realConnector.Load(new XmlSerializer<SettingsStorage>().Deserialize(CORPLLC . FileSettingStock._settingsFile));
            }
        }
        catch
        {
        }

        if (_realConnector != null)
        {
            _logManager.Sources.Remove(_realConnector);
        }
        _logManager.Sources.Add(_realConnector);

        //подписывается на кал баки
        InitLive();

        try
        {
            //привяжем список доступных символов к таблице
            SecurityPicker.SecurityProvider = new FilterableSecurityProvider(_realConnector);
        }
        catch { }

        //конектимся
        _realConnector.Connect();
        CORPLLC . Trade1._realConnector = _realConnector;

        Find.IsEnabled = true;
    }
    void InitLive()
    {
        //в таблицу добавляет новые ордера
        _realConnector.NewOrder += OrderGrid.Orders.Add;
        //в тут я сам добавляю ордер в свою коллекцию
        _realConnector.NewOrder += _realConnector_NewOrder;
        //новые котировки
        _realConnector.OrderBookReceived += OnDepth;
        //ошибки октрытия
        _realConnector.MassOrderCancelFailed += (transId, error) =>
           CORPLLC . Window1.this1.GuiAsync(() => System.Windows.MessageBox.Show(CORPLLC . Window1.this1, error.ToString(), LocalizedStrings.Str716));

    }           //поиск символов
    private void FindClick(object sender, RoutedEventArgs e)
    {
        var wnd = new SecurityLookupWindow
        {
            ShowAllOption = _realConnector.MarketDataAdapter.IsSupportSecuritiesLookupAll(),
            Criteria = new Security
            {
                Code = "USD",
                Currency = StockSharp.Messages.CurrencyTypes.USD,
                UnderlyingSecurityType = StockSharp.Messages.SecurityTypes.Currency
            }
        };

        if (!wnd.ShowModal(CORPLLC . Window1.this1))
            return;

        _realConnector.LookupSecurities(wnd.CriteriaMessage);
    }
    void OpenSell(Security SecurityExp)
    {

    }

    void OpenBuy(Security SecurityExp)
    {

    }
    //новые котировки
    private void OnDepth(Subscription subscription, QuoteChangeMessage depth)
    {
        StockSharp.Messages.QuoteChange[] askM = depth.Asks;
        decimal ask1 = askM[0].Price;
        StockSharp.Messages.QuoteChange[] bidM = depth.Bids;
        decimal bid1 = bidM[0].Price;
        double ask = Convert.ToDouble(ask1);
        double bid = Convert.ToDouble(bid1);

        for (int i = 0; i < Client.SendTableForm.Total; i++)

        {

            if (ClientVisual.savelogic.alltrader.trader[Client.SendTableForm.symb[i]].Security != null)
            {
                if (ClientVisual.savelogic.alltrader.trader[Client.SendTableForm.symb[i]].Security.Code == depth.SecurityId.SecurityCode)
                {
                    FinMyAndCreate(Client.SendTableForm.symb[i]);

                    string ff = Client.SendTableForm.symb[i];
                    ff = ff.Replace("/", "");

                    FinMyAndCreate(ff);

                    IBApi.global.prices[Client.SendTableForm.symb[i]].ask = ask;
                    IBApi.global.prices[Client.SendTableForm.symb[i]].bid = bid;

                    IBApi.global.prices[ff].ask = ask;
                    IBApi.global.prices[ff].bid = bid;
                }
            }
        }
    }
    void FinMyAndCreate(string symb)
    {
        bool seache = false;

        foreach (KeyValuePair<string, IBApi.price> kvp in IBApi.global.prices)
        {
            if (symb == kvp.Key)

                seache = true;
        }
        if (!seache)
        {
            IBApi.price price1 = new IBApi.price();

            IBApi.global.prices.Add(symb, price1);
        }
    }

    //orders
    Order copy = null;

    List<CORPLLC . OrderMy> list_order_open = new List<CORPLLC.OrderMy>();
    List<CORPLLC.OrderMy> itog_orders = new List<CORPLLC.OrderMy>();

    private void _realConnector_NewOrder(Order obj)
    {
        {
            CORPLLC. OrderMy OrderMy = new CORPLLC. OrderMy();
            OrderMy.obj = obj;
            OrderMy.Direction = obj.Direction;

            OrderMy.Volume = Convert.ToDouble(obj.Volume);
            OrderMy.Security = obj.Security;
            CORPLLC.  Trade1.priceclose.Add(OrderMy);
        }

        copy = obj;
        for (int i = 0; i < list_order_open.Count; i++)
        {
            if (list_order_open[i].Security == obj.Security)
            {
                if (obj.Direction == Sides.Buy)
                    list_order_open[i].Volume += Convert.ToDouble(obj.Volume);

                if (obj.Direction == Sides.Sell)
                    list_order_open[i].Volume -= Convert.ToDouble(obj.Volume);

                list_order_open[i].obj = obj;
                list_order_open[i].Direction = obj.Direction;
            }
        }
        bool Have = false;
        for (int i = 0; i < list_order_open.Count; i++)
        {
            if (list_order_open[i].Security == obj.Security)
            {
                Have = true;
            }
        }
        if (!Have)
        {
            CORPLLC. OrderMy OrderMy = new CORPLLC. OrderMy();
            OrderMy.obj = obj;
            OrderMy.Direction = obj.Direction;
            OrderMy.Security = obj.Security;

            OrderMy.Volume = Convert.ToDouble(obj.Volume);
            if (obj.Direction == Sides.Sell)
                OrderMy.Volume = -Convert.ToDouble(obj.Volume);

            list_order_open.Add(OrderMy);

            CORPLLC  . Trade1.priceclose.Add(OrderMy);
        }
        List<CORPLLC.OrderMy> itog_orders_Cesh = new List<CORPLLC.OrderMy>();
        for (int i = 0; i < list_order_open.Count; i++)
        {
            if (list_order_open[i].Volume != 0)
            {
                CORPLLC  .  OrderMy OrderMy1 = list_order_open[i];

                itog_orders_Cesh.Add(list_order_open[i]);
            }
        }
        CORPLLC   .   Trade1.itog_orders = itog_orders_Cesh;
    }

    private void Button_Click_18(object sender, RoutedEventArgs e)
    {

    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        //start
        ClientVisual.UpdateGraf.SendUpdate(DateTime.Now, "connect EX", 1, 1, 1, "");

        connect();

    }

    private void Button_Click_1(object sender, RoutedEventArgs e)
    {
        OnInits();
        //setting
        setting();
    }
}

}

namespace IBApi // IBApi . global . prices { using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading;

public class price
{
    public double ask = 0;
    public double bid = 0;
}
public class NeedQuotes
{
    public string Symb1 = "EUR";
    public string Symb2 = "USD";
    public int number = 0;

}
public static class global
{
    public static List<NeedQuotes> list_NeedQuotes = new List<NeedQuotes>();
    public static Dictionary<string, price> prices = new Dictionary<string, price>();
}

}

namespace CORPLLC {

using System;
using System.Windows;
using System.Windows.Forms;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Threading;
//using Client;
using System.Collections.Generic;
using System.IO;

using Ecng.Collections;
using Ecng.Common;
using Ecng.Serialization;
using Ecng.Xaml;
using Ecng.Configuration;

using StockSharp.Algo;
using StockSharp.Algo.Candles;
using StockSharp.Algo.Testing;
using StockSharp.BusinessEntities;
using StockSharp.Configuration;
using StockSharp.Localization;
using StockSharp.Logging;
using StockSharp.Messages;
using StockSharp.Xaml;
using StockSharp.Xaml.Charting;

using Newtonsoft.Json;

public static class Window1
{
    public static Window this1 = null;
    public static string PortfolioName;
}
public static class PortfolioName
{
    public static string AccountSeria = null;
}
public static class FileSettingStock
{
    public static string _settingsFile = "connection.xml";
}
//Trade1._realConnector

/// <summary>
/// структура ордеров
/// </summary>
public class OrderMy
{
    public  Security Security;
    public Sides Direction;
    public decimal OpenPrice;
    public double Volume;
    public Order obj;
}

/// <summary>
/// колекция ордеров
/// </summary>
public static class Trade1
{
    public static StockSharp.Algo.Connector _realConnector;

    public static List<OrderMy> itog_orders = new List<OrderMy>();

    public static List<OrderMy> priceclose = new List<OrderMy>();

//    public static StockSharp.Algo.Connector _realConnector;

}

}