public static async Task InitializeAccountMenu(IOandaApiConnection connection) { var selection = -1; while (selection != 0) { // Print out menu header Console.Clear(); Console.WriteLine("==========="); Console.WriteLine("= Account ="); Console.WriteLine("==========="); Console.WriteLine("1) All accounts"); Console.WriteLine("2) Specific account"); Console.WriteLine("0) Go back to the Main Menu"); // Wait for the user selection Console.WriteLine(""); Console.Write("Please input the menupoint: "); selection = Utilities.TryParseIntegerValue(Console.ReadLine(), 0, 2); // Show submenu details based on the selection switch (selection) { case 1: ShowAllAccounts(connection); break; case 2: await ShowOneAccountSelector(connection); break; } } }
private static async Task ShowOneAccountMenu(IOandaApiConnection connection, string selectedAccountId) { var selection = -1; while (selection != 0) { // Print out menu header Console.Clear(); Console.WriteLine("=================================="); Console.WriteLine($"= Account '{selectedAccountId}' ="); Console.WriteLine("=================================="); Console.WriteLine("1) Account details"); Console.WriteLine("2) Trading"); Console.WriteLine("0) Go back to the Main Menu"); // Wait for the user selection Console.WriteLine(""); Console.Write("Please input the menupoint: "); selection = Utilities.TryParseIntegerValue(Console.ReadLine(), 0, 2); // Show submenu details based on the selection switch (selection) { case 1: await ShowOneAccountDetails(connection, selectedAccountId); break; case 2: await TradeMenu.InitializeTradeMenu(connection, selectedAccountId); break; } } }
private static async Task ShowOneAccountSelector(IOandaApiConnection connection) { var selection = -1; while (selection != 0) { // Print out menu header Console.Clear(); Console.WriteLine("===================="); Console.WriteLine("= Specific account ="); Console.WriteLine("===================="); // Print out accounts as menu points var accounts = connection.GetAccounts(); foreach (var account in accounts.Select((content, index) => new { index = index + 1, content })) { Console.WriteLine($"{account.index}) {account.content.Id}"); } // Add exit menu point Console.WriteLine("0) Exit"); // Wait for user selection Console.WriteLine(""); Console.Write("Please select an account: "); selection = Utilities.TryParseIntegerValue(Console.ReadLine(), 0, Convert.ToInt32(accounts.Count())); // Handle selection if (selection != 0) { await ShowOneAccountMenu(connection, accounts.ElementAt(selection - 1).Id); } } }
public static async Task InitializeInstrumentMenu(IOandaApiConnection connection) { var selection = -1; while (selection != 0) { // Print out menu header Console.Clear(); Console.WriteLine("=============="); Console.WriteLine("= Instrument ="); Console.WriteLine("=============="); Console.WriteLine("1) Instrument candles"); Console.WriteLine("0) Go back to the Main Menu"); // Wait for the user selection Console.WriteLine(""); Console.Write("Please input the menupoint: "); selection = Utilities.TryParseIntegerValue(Console.ReadLine(), 0, 1); // Show submenu details based on the selection switch (selection) { case 1: await ShowInstrumentCandles(connection); break; } } }
public static async Task InitializeMainMenu(IOandaApiConnection connection) { var selection = -1; while (selection != 0) { Console.Clear(); Console.WriteLine("============="); Console.WriteLine("= Main menu ="); Console.WriteLine("============="); Console.WriteLine("1) Account"); Console.WriteLine("2) Instrument"); Console.WriteLine("0) Exit"); Console.WriteLine(""); Console.Write("Please input the menupoint: "); selection = Utilities.TryParseIntegerValue(Console.ReadLine(), 0, 2); switch (selection) { case 1: await AccountMenu.InitializeAccountMenu(connection); break; case 2: await InstrumentMenu.InitializeInstrumentMenu(connection); break; } } }
public static async Task InitializeTradeMenu(IOandaApiConnection connection, string selectedAccountId) { var selection = -1; while (selection != 0) { // Print out menu header Console.Clear(); Console.WriteLine("========="); Console.WriteLine("= Trade ="); Console.WriteLine("========="); Console.WriteLine("1) Open trades"); Console.WriteLine("2) Open new trade"); Console.WriteLine("0) Go back to the Account Menu"); // Wait for the user selection Console.WriteLine(""); Console.Write("Please input the menupoint: "); selection = Utilities.TryParseIntegerValue(Console.ReadLine(), 0, 2); // Show submenu details based on the selection switch (selection) { case 1: await ShowOpenTrade(connection, selectedAccountId); break; case 2: await ShowOpenNewTrade(connection, selectedAccountId); break; } } }
public static IOandaApiConnection InitializeApiConnection() { IOandaApiConnection connection = null; while (connection == null) { try { Console.WriteLine("=========================="); Console.WriteLine("= Connect to OANDA's API ="); Console.WriteLine("=========================="); Console.WriteLine(""); var server = ServerSelector(); var token = InputToken(); connection = new OandaApiConnectionFactory().CreateConnection(server, token); } catch (ApiException ae) { Console.WriteLine($"Failed to initialize connection. Exception message: {ae.Message}. Please double check that the server and the access token are correct."); Console.WriteLine(""); } } return(connection); }
private static async Task ShowOneAccountDetails(IOandaApiConnection connection, string selectedAccountId) { Console.Clear(); Console.WriteLine("=========================================="); Console.WriteLine($"= Account '{selectedAccountId}' details ="); Console.WriteLine("=========================================="); Console.WriteLine(""); // Load details for the selected accounts var accountDetails = await connection.GetAccount(selectedAccountId).GetDetailsAsync(); Console.WriteLine(JToken.Parse(accountDetails.ToJson())); Console.WriteLine(""); // Wait for a keypress to go back to menu selector Console.WriteLine("Press any key to continue"); Console.ReadKey(); }
private static void ShowAllAccounts(IOandaApiConnection connection) { // Print out menu header Console.Clear(); Console.WriteLine("================"); Console.WriteLine("= All accounts ="); Console.WriteLine("================"); Console.WriteLine(""); // Collect and print out accounts var accounts = connection.GetAccounts(); foreach (var account in accounts) { Console.WriteLine(JToken.Parse(account.ToJson())); Console.WriteLine(""); } // Wait for a keypress to go back to menu selector Console.WriteLine("Press any key to continue"); Console.ReadKey(); }
private static async Task ShowOpenTrade(IOandaApiConnection connection, string selectedAccountId) { // Print out menu header Console.Clear(); Console.WriteLine("==============="); Console.WriteLine("= Open trades ="); Console.WriteLine("==============="); Console.WriteLine(""); // Collect and print out open trades for the account var trades = await connection.GetAccount(selectedAccountId).Trades.GetOpenTradesAsync(); foreach (var trade in trades) { Console.WriteLine(JToken.Parse(trade.ToJson())); Console.WriteLine(""); } // Wait for a keypress to go back to menu selector Console.WriteLine("Press any key to continue"); Console.ReadKey(); }
/// <summary> /// Instrument constructor to setup the connection and instrument name /// </summary> /// <param name="connection">The Oanda API connection</param> /// <param name="instrument">The instrument name</param> public Instrument(IOandaApiConnection connection, InstrumentName instrument) { _connection = connection; _instrument = instrument; }
/// <summary> /// Trades constructor to initialize the connection and accountId /// </summary> /// <param name="connection">The Oanda API connection</param> /// <param name="accountId">The account id within the connection</param> public Trades(IOandaApiConnection connection, string accountId) { _connection = connection; _accountId = accountId; }
/// <summary> /// Account implementation constructor /// Sets up the connection. /// </summary> /// <param name="connection">The Oanda API connection</param> /// <param name="accountId">The account ID</param> public Account(IOandaApiConnection connection, string accountId) { _connection = connection; _accountId = accountId; Trades = new Trades(_connection, _accountId); }
private static async Task ShowInstrumentCandles(IOandaApiConnection connection) { // Print out menu header Console.Clear(); Console.WriteLine("======================"); Console.WriteLine("= Instrument candles ="); Console.WriteLine("======================"); Console.WriteLine(""); // Let the user select from instruments Console.WriteLine("Please select the instrument"); Console.WriteLine("-----------------------------"); var availableInstruments = Enum.GetValues(typeof(InstrumentName)).Cast <InstrumentName>().ToList(); foreach (var instrument in availableInstruments.Select((name, index) => new { index = index + 1, name })) { Console.WriteLine($"{instrument.index}) {instrument.name}"); } Console.WriteLine(""); Console.Write("Selected instrument: "); var selectedInstrument = Utilities.TryParseIntegerValue(Console.ReadLine(), 1, Convert.ToInt32(availableInstruments.Count)); Console.WriteLine(""); // Let the user select the candle granularity Console.WriteLine("Please select the candle granularity"); Console.WriteLine("-------------------------------------"); var availableGranularities = Enum.GetValues(typeof(CandlestickGranularity)).Cast <CandlestickGranularity>().ToList(); foreach (var granularity in availableGranularities.Select((name, index) => new { index = index + 1, name })) { Console.WriteLine($"{granularity.index}) {granularity.name}"); } Console.WriteLine(""); Console.Write("Selected granularity: "); var selectedGranularity = Utilities.TryParseIntegerValue(Console.ReadLine(), 1, Convert.ToInt32(availableGranularities.Count)); Console.WriteLine(""); // Let the user input how many days to show Console.WriteLine("Please input how many days to show"); Console.WriteLine("-----------------------------------"); Console.Write("Days (max 5000 candlestick will be shown): "); var selectedDays = Utilities.TryParseIntegerValue(Console.ReadLine(), 1); Console.WriteLine(""); // Load details for the instrument var candles = await connection .GetInstrument(availableInstruments.ElementAt(selectedInstrument - 1)) .GetCandlesByTimeAsync(availableGranularities.ElementAt(selectedGranularity - 1), DateTime.UtcNow.AddDays(selectedDays * -1), DateTime.UtcNow); Console.WriteLine("Candles"); Console.WriteLine("---------------------------------"); Console.WriteLine(""); Console.WriteLine(JToken.Parse( new CandlesResponse( availableInstruments.ElementAt(selectedInstrument - 1), availableGranularities.ElementAt(selectedGranularity - 1), candles as List <Candlestick>).ToJson() ) ); Console.WriteLine(""); // Wait for a keypress to go back to menu selector Console.WriteLine("Press any key to continue"); Console.ReadKey(); }
private static async Task ShowOpenNewTrade(IOandaApiConnection connection, string selectedAccountId) { // Print out menu header Console.Clear(); Console.WriteLine("=================="); Console.WriteLine("= Open new trade ="); Console.WriteLine("=================="); Console.WriteLine(""); // Let the user select from instruments Console.WriteLine("Please select the instrument"); Console.WriteLine("-----------------------------"); var availableInstruments = Enum.GetValues(typeof(InstrumentName)).Cast <InstrumentName>().ToList(); foreach (var instrument in availableInstruments.Select((name, index) => new { index = index + 1, name })) { Console.WriteLine($"{instrument.index}) {instrument.name}"); } Console.WriteLine(""); Console.Write("Selected instrument: "); var selectedInstrument = Utilities.TryParseIntegerValue(Console.ReadLine(), 1, Convert.ToInt32(availableInstruments.Count)); Console.WriteLine(""); // Let the user input how many units to trade Console.WriteLine("Please input how many units to trade"); Console.WriteLine("-------------------------------------"); Console.Write("Number of units to trade: "); var unitsToTrade = Utilities.TryParseIntegerValue(Console.ReadLine()); Console.WriteLine(""); // Let the user select from the trade directions Console.WriteLine("Please select the direction"); Console.WriteLine("----------------------------"); var availableDirections = Enum.GetValues(typeof(TradeDirection)).Cast <TradeDirection>().ToList(); foreach (var direction in availableDirections.Select((name, index) => new { index = index + 1, name })) { Console.WriteLine($"{direction.index}) {direction.name}"); } Console.WriteLine(""); Console.Write("Selected direction: "); var selectedDirection = Utilities.TryParseIntegerValue(Console.ReadLine(), 1, Convert.ToInt32(availableDirections.Count)); Console.WriteLine(""); // Let the user input how many units to trade Console.WriteLine("Lease input how far the trailing stop loss should be"); Console.WriteLine("-----------------------------------------------------"); Console.Write("Trailing stop loss in PIPs: "); var trailingStopLossInPips = Utilities.TryParseIntegerValue(Console.ReadLine(), 1); Console.WriteLine(""); var tradeOpenResponse = await connection.GetAccount(selectedAccountId).Trades.OpenTradeAsync( availableInstruments.ElementAt(selectedInstrument - 1), availableDirections.ElementAt(selectedDirection - 1), unitsToTrade, trailingStopLossInPips ); }