Topics
Replies
lamfete
19 May 2014, 15:51
Need help again.
I want to insert every tick of the price into MySQL.
There is no error when I build my code. But the tick price is not entered in the database.
using System; using cAlgo.API; using cAlgo.API.Indicators; using cAlgo.API.Collections; using System.Linq; using MySql.Data.MySqlClient; namespace cAlgo.Indicators { [Indicator(ScalePrecision = 5, IsOverlay = false, AccessRights = AccessRights.None)] public class TickChart : Indicator { MySqlConnection conn = null; #region Constructors public TickChart(string hostname, string database, string username, string password) { hostname = "localhost"; database = "test"; username = "root"; password = ""; conn = new MySqlConnection("host=" + hostname + ";database=" + database + ";username=" + username + ";password=" + password + ";"); } public TickChart(string hostname, string database, string username, string password, int portNumber) { hostname = "localhost"; database = "test"; username = "root"; password = ""; conn = new MySqlConnection("host=" + hostname + ";database=" + database + ";username=" + username + ";password=" + password + ";port=" + portNumber.ToString() + ";"); } public TickChart(string hostname, string database, string username, string password, int portNumber, int connectionTimeout) { hostname = "localhost"; database = "test"; username = "root"; password = ""; conn = new MySqlConnection("host=" + hostname + ";database=" + database + ";username=" + username + ";password=" + password + ";port=" + portNumber.ToString() + ";Connection Timeout=" + connectionTimeout.ToString() + ";"); } #endregion #region Open/Close Connection private bool Open() { //This opens temporary connection try { conn.Open(); return true; } catch { //Here you could add a message box or something like that so you know if there were an error. return false; } } private bool Close() { //This method closes the open connection try { conn.Close(); return true; } catch { return false; } } #endregion public void Insert(string table, string column, string value) { //Insert values into the database. table = "test1"; column = "ask, bid"; value = Ask + ", " + Bid; //Example: INSERT INTO names (name, age) VALUES('John Smith', '33') //Code: MySQLClient.Insert("names", "name, age", "'John Smith, '33'"); string query = "INSERT INTO " + table + " (" + column + ") VALUES (" + value + ")"; try { if (this.Open()) { //Opens a connection, if successful; run the query and then close the connection. MySqlCommand cmd = new MySqlCommand(query, conn); cmd.ExecuteNonQuery(); this.Close(); } } catch { } return; } [Output("Ask", Color = Colors.Blue)] public IndicatorDataSeries Ask { get; set; } [Output("Bid", Color = Colors.Red)] public IndicatorDataSeries Bid { get; set; } //private MarketDepth _marketDepth; private static void ShiftDataSeries(IndicatorDataSeries dataSeries) { for (var i = 0; i < dataSeries.Count - 1; i++) { dataSeries[i] = dataSeries[i + 1]; } } private static void FillDataSeries(IndicatorDataSeries dataSeries, double value, int startIndex, int count) { for (var i = startIndex; i < startIndex + count; i++) dataSeries[i] = value; } public override void Calculate(int index) { if (!IsRealTime) return; if (!double.IsNaN(Ask[index])) { ShiftDataSeries(Ask); ShiftDataSeries(Bid); } FillDataSeries(Ask, Symbol.Ask, index, 50); FillDataSeries(Bid, Symbol.Bid, index, 50); var spread = Math.Round((Symbol.Ask - Symbol.Bid) / Symbol.PipSize, 1); ChartObjects.DrawText("Spread label", "Spread:\t" + spread + " pips", StaticPosition.BottomRight); } } }
@lamfete
lamfete
17 May 2014, 06:47
RE:
Spotware said:
Dear lamfete,
You specified reference in the wrong format. Instead of
reference: MySql.Data.dllyou need to write
//#reference: MySql.Data.dllHowever such approach is already obsolete. We can recommend you to read an article Legacy References
thank you for your help :)
@lamfete
lamfete
15 May 2014, 09:20
Hi,
I tried to connect cAlgo and mysql.
when I add reference: MySql.Data.dll and build it, I got this error:
a namespace cannot directly contain members such as fields or methods
this is my source code :
reference: MySql.Data.dll using System; using cAlgo.API; using cAlgo.API.Indicators; using cAlgo.API.Collections; using System.Linq; namespace cAlgo.Indicators { [Indicator(ScalePrecision = 5, IsOverlay = false, AccessRights = AccessRights.None)] public class TickChart : Indicator { [Output("Ask", Color = Colors.Blue)] public IndicatorDataSeries Ask { get; set; } [Output("Bid", Color = Colors.Red)] public IndicatorDataSeries Bid { get; set; } //private MarketDepth _marketDepth; private static void ShiftDataSeries(IndicatorDataSeries dataSeries) { for (var i = 0; i < dataSeries.Count - 1; i++) { dataSeries[i] = dataSeries[i + 1]; } } private static void FillDataSeries(IndicatorDataSeries dataSeries, double value, int startIndex, int count) { for (var i = startIndex; i < startIndex + count; i++) dataSeries[i] = value; } public override void Calculate(int index) { if (!IsRealTime) return; if (!double.IsNaN(Ask[index])) { ShiftDataSeries(Ask); ShiftDataSeries(Bid); } FillDataSeries(Ask, Symbol.Ask, index, 50); FillDataSeries(Bid, Symbol.Bid, index, 50); var spread = Math.Round((Symbol.Ask - Symbol.Bid) / Symbol.PipSize, 1); ChartObjects.DrawText("Spread label", "Spread:\t" + spread + " pips", StaticPosition.BottomRight); } } }
@lamfete
lamfete
19 May 2014, 18:39
I made a several changes and debugging.
It seemly something wrong with the connection.
@lamfete