エラー、バグ、質問 - ページ 1027

 
Rosh:
このアカウントは、過度の取引行為により取引サーバーから禁止されました。取引プラットフォームは自身を保護し、無頓着に取引要求を 毎ティック送信するようなアカウントを無効化します。

トレードクエリーは当然のことながら、そこに修正が加えられていました。そういう戦略だったんですね。Expert Advisorがこれからどうなるかはわかりませんが、1ティックごとに修正を無効にしてみました。3ヶ月前のもので、統計も良好です。

 

Al_key:

ポータブルスイッチで解決するのか?

永久に/portableを無効にするか、UACを無効にして、再起動後に/portableなしでターミナルを 実行します。

 
avoitenko:

Bild 842/64 bit.キャンバを宣言するとき。

エラーが表示される。

未解決の静的変数 'CCanvas::m_default_colors' です。

この問題は私だけなのでしょうか?
静的変数に対する要求事項が変更されました。

このエラーは、グローバルレベルでスタティック変数を持つオブジェクトを使用しているためで、この場合、コンパイラはスタティック配列を明示的に配置することを要求します。
これは、プログラマが静的なクラス/構造体メンバの初期化順序を 明示的に指定するために必要なものである。

ここでの問題は、静的配列 'CCanvas::m_default_colors' を CCanvas コンストラクタで読み込んで使用し、CCanvas クラスオブジェクトを配置した後にプログラマが初期化すると、その値が CCanvas::CCanvas コンストラクタで期待通りにならないことにあります。したがって、コンパイラは、クラス/構造体オブジェクトが使用される前に、静的クラス/構造体メンバが配置され、初期化されていることを確認するためにチェックしています。

よく考えて、何かを変えるかもしれない。

Документация по MQL5: Основы языка / Переменные / Создание и уничтожение объектов
Документация по MQL5: Основы языка / Переменные / Создание и уничтожение объектов
  • www.mql5.com
Основы языка / Переменные / Создание и уничтожение объектов - Документация по MQL5
 

mcuel 5への切り替えを継続中。mt4では、このコードは問題なく動作していました。今度はmkuellに接続できない。

#import "libmysql.dll"
int mysql_init(int db);
int mysql_errno(int TMYSQL);
int mysql_real_connect( int TMYSQL,string host,string user,string password, string DB,int port,int socket,int clientflag);
int mysql_real_query(int TMSQL,string query,int length);
void mysql_close(int TMSQL);
#import

int i = 0;
int mysql;
string query;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
   mysql = mysql_init(mysql);
   if (mysql!=0) Print("allocated");
   string host="localhost";
   string user="root";
   string password="1111";
   string DB="fxdb";
   int clientflag=0;
   int port=3306;
   string socket="";
   int
   res=mysql_real_connect(mysql,host,user,password,DB,port, socket,clientflag);
   int err=GetLastError();
   if (res==mysql) Print("connected");
   else Print("error=",mysql," ",mysql_errno(mysql)," ");
   
 
   
   //mysql_real_query(mysql,query,length);
   //int myerr=mysql_errno(mysql);
   //if (myerr>0)Print("error=",myerr); else Print(i, "good"); 

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
      mysql_close(mysql);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   
  }
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//---
   
  }
//+------------------------------------------------------------------+

エラーが出ます。

2013.08.03 12:41:41 testMySql (AUDCAD,H1) error=313111904 2005年

ソケット変数の型の不一致の警告が出た、変数の代わりにNULLを入れてもダメ。また、МТ5では特殊な方法でDLLに文字列を転送していると聞いています。そんな感じなんですか?どのように対処したらよいかアドバイスをお願いします。

 
mql5:
静的変数の配置に関する要件が変更されました。
そのため、コンパイラは、クラス/構造体オブジェクトが使用される前に、静的クラス/構造体メンバが配置され、初期化されていることをチェックします。
ありがとうございます。これですべて納得です。
 
Al_key:
また、MT5は特殊な方法でDLLに文字列を送信していると聞いたことがあります。そういうものなのでしょうか。どのように対処したらよいか、アドバイスをお願いします。
この記事 には、MySQLデータベースへの接続の実例が掲載されています。
 
もう一つの質問:MT5標準を初めてインストールし、デモ口座はmetaquotesです。メジャーは4ペアだけで、USDCADはないですね。しばらくして、CFDやクナデックなど、さまざまなペアが追加されました。その後、/portableに切り替えました。もちろん、最低限必要なペアは今回もデフォルトで設定されているが、今回は何らかの理由で他のペアが読み込まれておらず、5番目のMTにUSDCADのデモがあることが非常に重要である。
 

TFを記憶し、M1に切り替え、現在のものに戻る。

問題:現在のTFの割り当てが覚えられない

int current_period_tf;
   string n;
   if(_Period==PERIOD_M1)  {current_period_tf=0x00000001;};
   if(_Period==PERIOD_M2)  {current_period_tf=0x00000002;};
   if(_Period==PERIOD_M3)  {current_period_tf=0x00000004;};
   if(_Period==PERIOD_M4)  {current_period_tf=0x00000008;};
   if(_Period==PERIOD_M5)  {current_period_tf=0x00000010;};
   if(_Period==PERIOD_M6)  {current_period_tf=0x00000020;};
   if(_Period==PERIOD_M10) {current_period_tf=0x00000040;};
   if(_Period==PERIOD_M12) {current_period_tf=0x00000080;};
   if(_Period==PERIOD_M15) {current_period_tf=0x00000100;};
   if(_Period==PERIOD_M20) {current_period_tf=0x00000200;};
   if(_Period==PERIOD_M30) {current_period_tf=0x00000400;};
   if(_Period==PERIOD_H1)  {current_period_tf=0x00000800;};
   if(_Period==PERIOD_H2)  {current_period_tf=0x00001000;};
   if(_Period==PERIOD_H3)  {current_period_tf=0x00002000;};
   if(_Period==PERIOD_H4)  {current_period_tf=0x00004000;};
   if(_Period==PERIOD_H6)  {current_period_tf=0x00008000;};
   if(_Period==PERIOD_H8)  {current_period_tf=0x00010000;};
   if(_Period==PERIOD_H12) {current_period_tf=0x00020000;};
   if(_Period==PERIOD_D1)  {current_period_tf=0x00040000;};
   if(_Period==PERIOD_W1)  {current_period_tf=0x00080000;};
   if(_Period==PERIOD_MN1) {current_period_tf=0x00100000;};
   ChartSetSymbolPeriod(ChartID(),_Symbol,PERIOD_M1);
   ObjectSetInteger(0,n,OBJPROP_TIMEFRAMES,current_period_tf);
   ChartSetSymbolPeriod(ChartID(),_Symbol,current_period_tf);

M1への切り替えができる

ChartSetSymbolPeriod(ChartID(),_Symbol,PERIOD_M1);

オブジェクトの場合

ObjectSetInteger(0,n,OBJPROP_TIMEFRAMES,current_period_tf);

が機能します。グラフの場合

ChartSetSymbolPeriod(ChartID(),_Symbol,current_period_tf);

コンパイラが出す

'current_period_tf' - can't convert enum

その謎は?

文字列でupd変換したり、型を変えてみたりしましたが、うまくいきません。

 
Al_key:
もう一つの質問:MT5標準を初めてインストールし、デモ口座はmetaquotesです。メジャーは4ペアだけで、USDCADはないですね。しばらくして、CFDやクナデックなど、さまざまなペアが追加されました。その後、/portableに切り替えました。もちろん、今回も最小限のペアはデフォルトで入っていますが、今回はなぜか他のペアがロードされず、MT5でUSDCADのデモがとても欲しいのです。
設定したプロファイルをデフォルトで保存する File - Profiles - Default
 
Silent:

...

その謎は?

文字列経由で変換したり、型を変えたりしてみましたが、うまくいきません。

int current_period_tf;
ENUM_TIMEFRAMES current_period_tf;