public static void GetDataFromOANDA(int id, string ccyPair) { var db = new DataBase(); var start = new DateTime(2017, 2, 8, 2, 40, 0); var last = new DateTime(2017, 8, 10, 0, 0, 0); while (start < last) { var result = Rest.GetCandles(ccyPair, id, start, 5000, granularity: "M10"); result.ForEach(data => { var insertSQL = $@" INSERT INTO USDJPY_10m( time, openBid, openAsk, highBid, highAsk, lowBid, lowAsk, closeBid, closeAsk, openMid, highMid, lowMid, closeMid ) VALUES ( '{data.time.ToString("yyyy-MM-dd HH:mm:ss")}', {data.openBid}, {data.openAsk}, {data.highBid}, {data.highAsk}, {data.lowBid}, {data.lowAsk}, {data.closeBid}, {data.closeAsk}, {data.openMid}, {data.highMid}, {data.lowMid}, {data.closeMid} ) "; db.ExecuteNonQuery(insertSQL); }); start = result.Last().time; } }
/// <summary> /// 直近dataCount本のデータを取得し,DBに追加 /// </summary> private List <Candle> GetCandle(int dataCount = 500) { var result = Rest.GetCandles("USD_JPY", AccId, count: dataCount); var sql = "SELECT MAX(time) FROM USDJPY_10m"; var lastDate = DB.ExecuteScalar(sql, DateTime.MinValue); foreach (var data in result.Where(data => data.time > lastDate)) { var insertSQL = $@" INSERT INTO USDJPY_10m( time, openBid, openAsk, highBid, highAsk, lowBid, lowAsk, closeBid, closeAsk, openMid, highMid, lowMid, closeMid ) VALUES ( '{data.time.ToString("yyyy-MM-dd HH:mm:ss")}', {data.openBid}, {data.openAsk}, {data.highBid}, {data.highAsk}, {data.lowBid}, {data.lowAsk}, {data.closeBid}, {data.closeAsk}, {data.openMid}, {data.highMid}, {data.lowMid}, {data.closeMid} ) "; DB.ExecuteNonQuery(insertSQL); } //テクニカル指標生成 return(result); }
static void Main(string[] args) { var db = new DataBase(); var id = int.Parse(ConfigurationManager.AppSettings["AccountId"]); //var result = Rest.GetAccountDetails(8048648); //var result = Rest.GetInstruments(id); //var result = Rest.GetPositions(id); //var result = Rest.GetTradeList(id); //var result = Rest.GetCandles("USD_JPY", id,count:5000); //var result = Rest.GetOrderList(id); //var dir = new Dictionary<string, string>(); //dir.Add("instrument", "USD_JPY"); //dir.Add("units", "10000"); //dir.Add("side", "sell"); //dir.Add("type", "market"); //Rest.PostMarketOrder(id, dir); var start = new DateTime(2005, 1, 1); var last = new DateTime(2017, 1, 1); while (start < last) { var result = Rest.GetCandles("USD_JPY", id, start, 5000, granularity: "M10"); result.ForEach(data => { var insertSQL = $@" INSERT INTO USDJPY_10m( time, openBid, openAsk, highBid, highAsk, lowBid, lowAsk, closeBid, closeAsk, openMid, highMid, lowMid, closeMid ) VALUES ( '{data.time.ToString("yyyy-MM-dd hh:mm:ss")}', {data.openBid}, {data.openAsk}, {data.highBid}, {data.highAsk}, {data.lowBid}, {data.lowAsk}, {data.closeBid}, {data.closeAsk}, {data.openMid}, {data.highMid}, {data.lowMid}, {data.closeMid} ) "; db.ExecuteNonQuery(insertSQL); }); start = result.Last().time; } }