コード例 #1
0
ファイル: Program.cs プロジェクト: aliyome/BitFlyerDotNet
        static void Main(string[] args)
        {
            var factory = new RealtimeSourceFactory();

            factory.ErrorHandlers += (error) =>
            {
                Console.WriteLine("Error: {0} Socket Error = {1}", error.Message, error.SocketError);
            };

            Console.WriteLine("1) RealtimeExecution sample");
            Console.WriteLine("2) RealtimeTicker sample");
            Console.WriteLine("3) RealtimeOrderBook sample");

            switch (GetCh())
            {
            case '1':
                RealtimeExecutionSample(factory);
                break;

            case '2':
                RealtimeTickerSample(factory);
                break;

            case '3':
                RealtimeOrderBookSample(factory);
                break;
            }

            Console.ReadLine();
            _disposables.Dispose();
            Console.ReadLine();
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: aliyome/BitFlyerDotNet
        static IDisposable SubscribeExecutionSource(RealtimeSourceFactory factory, BfProductCode productCode)
        {
            var source = factory.GetExecutionSource(productCode);

            return(source.Subscribe(exec =>
            {
                Console.WriteLine($"{exec.ExecutedTime} P:{exec.Price} A:{exec.Side} B:{exec.Size}");
            }));
        }
コード例 #3
0
ファイル: Program.cs プロジェクト: aliyome/BitFlyerDotNet
        static IDisposable SubscribeTickerSource(RealtimeSourceFactory factory, BfProductCode productCode)
        {
            var source = factory.GetTickerSource(productCode);

            return(source.Subscribe(ticker =>
            {
                Console.WriteLine($"{ticker.Timestamp} P:{ticker.LastTradedPrice} A:{ticker.BestAsk} B:{ticker.BestBid}");
            }));
        }
コード例 #4
0
        private static void Main(string[] args)
        {
            var factory = new RealtimeSourceFactory();
            //var disp = SubscribeTickerSource(factory, ProductCode.BTCUSD);
            var disp = SubscribeExecutionSource(factory, ProductCode.FXBTCJPY);

            Console.ReadLine();
            disp.Dispose();
        }
コード例 #5
0
        private static async Task RealtimeTickerSample(RealtimeSourceFactory factory)
        {
            var tickerSource = await factory.GetTickerSource(ProductCode.BTCJPY);

            tickerSource.Subscribe(ticker =>
            {
                Console.WriteLine($"{ticker.ProductCode} {ticker.Timestamp.ToLocalTime()} {ticker.BestBid} {ticker.BestAsk} {ticker.LastTradedPrice}");
            });
        }
コード例 #6
0
ファイル: Program.cs プロジェクト: aliyome/BitFlyerDotNet
        static void Main(string[] args)
        {
            var factory = new RealtimeSourceFactory();

            //SubscribeTickerSource(factory, BfProductCode.BTCUSD).AddTo(_disposables);
            //SubscribeExecutionSource(factory, BfProductCode.FXBTCJPY).AddTo(_disposables);
            SubscribeOrderbookSource(factory, BfProductCode.FXBTCJPY).AddTo(_disposables);
            Console.ReadLine();
            _disposables.Dispose();
        }
コード例 #7
0
ファイル: Program.cs プロジェクト: aliyome/BitFlyerDotNet
 static void RealtimeExecutionSample(RealtimeSourceFactory factory)
 {
     factory.GetExecutionSource(BfProductCode.FXBTCJPY).Subscribe(tick =>
     {
         Console.WriteLine("{0} {1} {2} {3} {4} {5}",
                           tick.ExecutionId,
                           tick.Side,
                           tick.Price,
                           tick.Size,
                           tick.ExecutedTime.ToLocalTime(),
                           tick.ChildOrderAcceptanceId);
     }).AddTo(_disposables);
 }
コード例 #8
0
 public void Initialize()
 {
     if (Client == null)
     {
         Client = new BitFlyerClient();
     }
     if (RealtimeSource == null)
     {
         RealtimeSource = new RealtimeSourceFactory(Client);
     }
     RealtimeSource.AvailableMarkets.ForEach(productCode =>
     {
         _markets.Add(productCode, new BfTradingMarket(this, productCode));
     });
 }
コード例 #9
0
        private static async Task Main(string[] args)
        {
            var factory = new RealtimeSourceFactory();

            factory.ErrorHandlers += (error) =>
            {
                Console.WriteLine("Error: {0} Socket Error = {1}", error.Message, error.SocketError);
            };


            await RealtimeTickerSample(factory);


            Console.ReadLine();
        }
コード例 #10
0
ファイル: Program.cs プロジェクト: fiatsasia/BitFlyerDotNet
        static void Main(string[] args)
        {
            // ログファイル出力設定
            // Time / JSON

            LoadRunsettings(args[0]);
            var key    = Properties["ApiKey"];
            var secret = Properties["ApiSecret"];

            _client = new BitFlyerClient(key, secret);

            _factory = new RealtimeSourceFactory(key, secret);
            _factory.MessageReceived += OnRealtimeMessageReceived;
            _factory.Error           += (error) => Console.WriteLine("Error: {0} Socket Error = {1}", error.Message, error.SocketError);
            _factory.GetTickerSource(ProductCode).Subscribe(ticker =>
            {
                _ticker = ticker;
                //Console.WriteLine($"Ask:{_ticker.BestAsk} Bid:{_ticker.BestBid}");
            }).AddTo(_disposables);
            _factory.GetChildOrderEventsSource().Subscribe(OnChildOrderEvent).AddTo(_disposables);
            _factory.GetParentOrderEventsSource().Subscribe(OnParentOrderEvent).AddTo(_disposables);

            while (true)
            {
                Console.WriteLine("========================================================================");
                Console.WriteLine("C)hild order  >");
                Console.WriteLine("P)arent order >");
                Console.WriteLine("");
                Console.WriteLine("Q)uit");
                Console.WriteLine("========================================================================");

                switch (GetCh())
                {
                case 'C':
                    ChildOrderMain();
                    break;

                case 'P':
                    ParentOrderMain();
                    break;

                case 'Q':
                    _disposables.Dispose();
                    return;
                }
            }
        }
コード例 #11
0
ファイル: Program.cs プロジェクト: aliyome/BitFlyerDotNet
        static IDisposable SubscribeOrderbookSource(RealtimeSourceFactory factory, BfProductCode productCode)
        {
            var source = factory.GetOrderBookSource(productCode);

            return(source.Select(orderBook => orderBook.GetSnapshot(15)).Subscribe(obs =>
            {
                foreach (var ask in obs.Asks.Reverse())
                {
                    Console.WriteLine($"Ask: P:{ask.Price} S:{ask.Size}");
                }
                Console.WriteLine($"Mid: P:{obs.MidPrice}");
                foreach (var bid in obs.Bids.Reverse())
                {
                    Console.WriteLine($"Bid: P:{bid.Price} S:{bid.Size}");
                }
            }));
        }
コード例 #12
0
ファイル: Program.cs プロジェクト: aliyome/BitFlyerDotNet
 static void RealtimeTickerSample(RealtimeSourceFactory factory)
 {
     factory.GetTickerSource(BfProductCode.FXBTCJPY).Subscribe(ticker =>
     {
         Console.WriteLine("{0} {1} {2} {3} {4} {5} {6} {7} {8} {9} {10} {11}",
                           ticker.ProductCode,
                           ticker.Timestamp.ToLocalTime(),
                           ticker.TickId,
                           ticker.BestBid,
                           ticker.BestAsk,
                           ticker.BestBidSize,
                           ticker.BestAskSize,
                           ticker.TotalBidDepth,
                           ticker.TotalAskDepth,
                           ticker.LastTradedPrice,
                           ticker.Last24HoursVolume,
                           ticker.VolumeByProduct);
     }).AddTo(_disposables);
 }
コード例 #13
0
ファイル: Program.cs プロジェクト: aliyome/BitFlyerDotNet
        static void RealtimeOrderBookSample(RealtimeSourceFactory factory)
        {
            var left = Console.CursorLeft;
            var top  = Console.CursorTop;

            factory.GetOrderBookSource(BfProductCode.FXBTCJPY)
            .Select(orderBook => orderBook.GetSnapshot(15)) // Take 15 orders from 300 orders
            .Subscribe(obs =>
            {
                Console.SetCursorPosition(left, top);
                foreach (var ask in obs.Asks.Reverse())
                {
                    Console.WriteLine($"{ask.Size.ToString("##0.00000000#")} {ask.Price}           ");
                }
                Console.WriteLine($"Mid:       {obs.MidPrice}");
                foreach (var bid in obs.Bids.Reverse())
                {
                    Console.WriteLine($"           {bid.Price} {bid.Size.ToString("##0.00000000#")}");
                }
            }).AddTo(_disposables);
        }
コード例 #14
0
 public RealtimeOhlcSourceFactory(RealtimeSourceFactory realtimeFactory, ExecutionCachedSourceFactory historicalFactory)
 {
     _realtimeFactory   = realtimeFactory;
     _historicalFactory = historicalFactory;
 }
コード例 #15
0
 public BfTradingAccount(BitFlyerClient client, RealtimeSourceFactory realtimeSource)
 {
     Client         = client;
     RealtimeSource = realtimeSource;
 }