これはクールで実用的なアプリケーションだ!
MQがすべての信号についてこのデータを収集しない(あるいはアクセスできない)のは残念だ。便利なデータベースになるだろう。
最終的にはクールで実用的なアプリケーションとなった!
MQがすべての信号についてこのデータを収集しない(あるいはアクセスできない)のは残念だ。便利なデータベースになるだろうに。
データベースが彼らのAPIから 生成されるのであれば、「収集しない」とはどういう意味ですか?彼らは収集しないだけでなく、それを提供している。
MySQLに依存せず、ビルトインSQLiteにプロジェクトを適応させることができるようになったのは、「喜ばしい」ことだ。
- www.mql5.com
関連記事:SQLite:MQL5でSQLデータベースをネイティブに操作する
MQL5では、外部SQLサーバーを使用するよりも数十倍速く、ネイティブにデータベースを操作し、大容量を操作することができます。これは、高速SQLiteエンジンをMQL5サブシステムにシームレスに統合し、ネットワーク操作を完全に排除することで実現しました。
新しい記事 ネットワーク関数の適用、または DLL を使用しない MySQL: パートII - シグナル特性の変化を監視するプログラム はパブリッシュされました:
作者: Serhii Shevchuk
これは良いことだが、1つだけ問題がある!
Testorでテストする場合、ソケットを経由するとスイッチがオフに なり、データがリセットされません。そして、製品をテストする際にデータを使用することは非常に重要です。
それはそれでいいのだが、ひとつ問題がある!
Testorでテストする場合、ソケットを経由するとスイッチがオフに なり、データがリセットされません。そして、製品をテストする際にデータを使用することは非常に重要です。
- www.mql5.com
私のEAでは問題なく実装でき、コンパイルも完璧なのですが、時々エラーが発生してEAが終了してしまいます。
'MySQLTransaction.mqh'(365,36)の配列が範囲外 です。
//+------------------------------------------------------------------+
//| Parse received data |
//+------------------------------------------------------------------+
ENUM_TRANSACTION_STATE CMySQLTransaction::Incoming(uchar &data[], uint len)
{
int ptr=0; // index of the current byte in the 'data' buffer
ENUM_TRANSACTION_STATE result=MYSQL_TRANSACTION_IN_PROGRESS; // result of handling accepted data
while(len>0)
{
if(m_packet.total_length==0)
{
//--- If the amount of data in the packet is unknown
while(m_rcv_len<4 && len>0)
{
m_hdr[m_rcv_len] = data[ptr];
m_rcv_len++;
ptr++;
len--;
}
//--- Received the amount of data in the packet
if(m_rcv_len==4)
{
//--- Reset error codes etc.
m_packet.Reset();
m_packet.total_length = reader.TotalLength(m_hdr);
m_packet.number = m_hdr[3];
//--- Length received, reset the counter of length bytes
m_rcv_len = 0;
//--- Highlight the buffer of a specified size
if(ArrayResize(m_packet.data,m_packet.total_length)!=m_packet.total_length)
return MYSQL_TRANSACTION_ERROR; // internal error
}
else // if the amount of data is still not accepted
return MYSQL_TRANSACTION_IN_PROGRESS;
}
//--- Collect packet data
while(len>0 && m_rcv_len<m_packet.total_length)
{
m_packet.data[m_rcv_len] = data[ptr];
m_rcv_len++;
ptr++;
len--;
}
//--- Make sure the package has been collected already
if(m_rcv_len<m_packet.total_length)
return MYSQL_TRANSACTION_IN_PROGRESS;
//--- Handle received MySQL packet
m_packet.index = 0;
m_packet.type = MYSQL_PACKET_NONE;
if(m_packet.total_length>0)
{
if(m_packet.data[0]==0)
{
//--- Ok packet
m_packet.type = MYSQL_PACKET_OK;
m_packet.index++;
m_packet.affected_rows = reader.GetDataFieldLen(&m_packet);
m_packet.last_id = reader.GetDataFieldLen(&m_packet);
m_packet.server_status = reader.Uint16(&m_packet);
m_packet.warnings = reader.Uint16(&m_packet);
if(m_packet.index<m_packet.total_length)
m_packet.message = reader.DfString(&m_packet);
if((result = PacketOkHandler(&m_packet))==MYSQL_TRANSACTION_ERROR)
break;
}
else
if(m_packet.data[0]==0xfe)
{
//--- End Of File packet
m_packet.type = MYSQL_PACKET_EOF;
m_packet.index++;
m_packet.warnings = reader.Uint16(&m_packet);
m_packet.server_status = reader.Uint16(&m_packet);
if((result = PacketEOFHandler(&m_packet))==MYSQL_TRANSACTION_ERROR)
break;
}
else
if(m_packet.data[0]==0xff)
{
//--- Error packet
m_packet.type = MYSQL_PACKET_ERROR;
m_packet.index++;
m_packet.error.code = reader.Uint16(&m_packet);
if((result = PacketErrorHandler(&m_packet))==MYSQL_TRANSACTION_ERROR)
break;
}
else
if(!m_packet.number && m_packet.data[0]==0x0a)
{
//--- Greeting packet
m_packet.type = MYSQL_PACKET_GREETING;
if((result = PacketGreetingHandler(&m_packet))==MYSQL_TRANSACTION_ERROR)
break;
}
else
{
//--- Data packet
m_packet.type = MYSQL_PACKET_DATA;
if((result = PacketDataHandler(&m_packet))==MYSQL_TRANSACTION_ERROR)
break;
}
}
m_rcv_len = 0;
m_packet.total_length = 0;
}
return result;
} このエラーはAlgotradingを無効にしても発生します。
私のEAに問題なく実装しました。コンパイルは完璧ですが、時々エラーが発生してEAが終了します。
'MySQLTransaction.mqh'(365,36)の配列が範囲外です。
このエラーはAlgotradingを無効にしても発生します。
MySQLの部分を使おうとしているだけなのですが、"use `mytable`"コマンドを発行しても、"No database selected "というエラーが出続けます。
なぜこのようなことが起こるのか、何か考えられることはありますか?
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
新しい記事 ネットワーク関数の適用、または DLL を使用しない MySQL: パートII - シグナル特性の変化を監視するプログラム はパブリッシュされました:
前のパートでは、MySQLコネクタの実装をしました。 この記事では、シグナルプロパティを収集するためのサービスを実装し、時間の経過とともに変化を表示するためのプログラムを実装することで、そのアプリケーションを検討します。 実装された例は、ユーザーがシグナルのWebページに表示されないプロパティの変化を観察する必要がある場合、実用的な意味を持ちます。
動作中のアプリケーションは、図6に表示されます。
図6. 動作中のシグナル特性ダイナミクスを表示するためのプログラム
作者: Serhii Shevchuk