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

 
barabashkakvn:

MetaQuotes-Demoのサーバーに接続すると、更新検索が行われます。以下の場合に可能です。

  1. どこかの口座からMetaQuotes-Demoで開設した取引口座に切り替える。
  2. 端末を再起動する場合。
ありがとうございます。
 
joo:

:O

いいえ、エラーはもう表示されません。

シュレディンガーは、むしゃくしゃした子猫を探して部屋を歩き回っていたが、それは死んでも生きてもいない箱の中に鎮座していた。)))

 
tol64:

シュレディンガーは、むしゃくしゃした子猫を探して部屋を歩き回っていたが、子猫は死んでも生きてもいない箱の中に鎮座していた。)))

実に不思議なことです。次は何が動かなくなるんだろう?
 
joo:
実に不思議なことです。次回は何が原因で動かなくなるのか?
それはわからない。チェックを入れる必要がありますね。)
 
joo:

プリントを配置したところ......エラーは出なくなったのですが......。

量子力学における観測者効果とは...

式にNaNを滑り込ませたときだけ、あなたの状況を再現したのです。
 
Renat:
式にNaNを滑り込ませたときだけ、あなたの状況を再現したのです。

ということは、fabsは正常に動作するのか、しないのか?

 
joo:

は正常に動作しているのでしょうか?

正解です。
 

こんにちは、簡単なスキームと思われるものの実装について、ご相談させていただきます。

あるシンボルでうまく動作するEAがあります。一度に複数のシンボルに対応できるように "微調整 "したい。そのためには、データ配列を適切に作成する必要があります。その配列のメンバーは、複数の異なるシンボルに接続されたEAのすべてのインスタンスによってアクセスされる可能性があります。つまり、データ配列は1つだが、EAのインスタンスは複数存在する。各EAインスタンスは、配列のメンバーを読み、変更することができます。

私の理解では、静的なメンバー(static)を持つ配列を作成する必要があります。

簡単な例として、EAが装着されている全てのチャートのティック数の合計をカウントします。このEAを2つのチャートに貼り付けて、OnTick()イベントでカウンターを1つ増やします。簡単のために、配列の代わりに静的変数のカウンターを使うようにしました。残念ながら、各EAはそのカウンターでのみ動作し、カウンターは "共通 "ではありません。結果

symbol1, tick1 : counter = 0;

symbol1, tick2 : counter = 1;

symbol2, tick1 : counter = 0; - ここではcounter = 2を想定しています。

例えば、カウンターを持つ簡単なクラスを作りました。

//+------------------------------------------------------------------+
//|                                                   TestStatic.mqh |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class TestStatic
  {
private:
static int counter;
public:
                     TestStatic();
                    ~TestStatic();

static void IncreaseCounter();
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
TestStatic::TestStatic()
  {
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
TestStatic::~TestStatic()
  {
  }
//+------------------------------------------------------------------+
int TestStatic::counter=0;
TestStatic::IncreaseCounter()
  {
   Print("Symbol: "+_Symbol +", counter: "+ TestStatic::counter);
   TestStatic::counter++;
  };

以下はEAコードです。

//+------------------------------------------------------------------+
//|                                                Exp_testMulti.mq4 |
//|                        Copyright 2014, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
#property strict
#include <TestStatic.mqh>

static string tickCounter[2][2];

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
  
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   TestStatic::IncreaseCounter();
    
  }
//+------------------------------------------------------------------+

是非ともご教授ください!よろしくお願いします。

 
VangoghFX:

こんにちは、簡単なスキームと思われるものの実装について、ご相談させていただきます。

あるシンボルでうまく動作するEAがあります。一度に複数のシンボルに対応できるように "微調整 "したい。そのためには、データ配列を適切に作成する必要があります。その配列のメンバーは、複数の異なるシンボルに接続されたEAのすべてのインスタンスによってアクセスされる可能性があります。つまり、データ配列は1つだけだが、EAのインスタンスは複数存在する。各EAインスタンスは、配列のメンバーを読み、変更することができます。

私の理解では、静的なメンバー(static)を持つ配列を作成する必要があります。

簡単な例として、EAが装着されている全てのチャートのティック数の合計をカウントします。このEAを2つのチャートに貼り付けて、OnTick()イベントでカウンターを1つ増やします。簡単のために、配列の代わりに静的変数のカウンターを使うようにしました。残念ながら、各EAはそのカウンターでのみ動作し、カウンターは "共通 "ではありません。結果

symbol1, tick1 : counter = 0;

symbol1, tick2 : counter = 1;

symbol2, tick1 : counter = 0; - ここではcounter = 2を想定しています。

例えば、カウンターを持つ簡単なクラスを作りました。

以下はEAコードです。

是非ともご教授ください!よろしくお願いします。

午後具体的には、Tickを使った例を実装するために、ターミナルのグローバル変数(最近、このトピックに関する記事が 公開されました。)このような配列について...よくわからない、やってみようかな。しかし、もうひとつのバリエーションを提案することができます。一つのExpert Advisorで、作業に必要なシンボルを規定し、ご指摘のように、必要なデータの静的/グローバルな配列を作成します。そして、EAに必要な記号をすべてループさせます。
 
Tapochun:
こんにちは。具体的には、ティックの例では、グローバルターミナル変数が機能します(最近、これに関する記事が ありました)。このような配列について...よくわからないから、やってみたい。しかし、もうひとつのバリエーションを提案することができます。一つのExpert Advisorで、作業に必要なシンボルを規定し、ご指摘のように、必要なデータの静的/グローバルな配列を作成します。そして、Expert Advisorに必要なすべてのシンボルをループさせます。

ご返信ありがとうございました。

ここでは、一般的な考え方を説明するために、最も簡単でわかりやすいものとして、目盛りを使った例を挙げました。Expert Advisorはより複雑なアルゴリズムを使用します。

N個の記号を1つのEAに書き込むというバリエーションは、面倒で使いにくいので好きではありません。このトピックに関する記事はポータルにいくつかあり、私も見ました:しかし、私は大きなループ、配列、データのコピー、各シンボルの変数の多くのパックなどが好きではありません。シンボルごとに1つのEAコードを作成し(シンボルはEAがリンクされているチャートによって決定されます)、EAの各コピーが他のEAと並行して動作するという、よりシンプルで効率的なアプローチを使用したいと私は考えています。しかし、この場合、意思決定に必要な分析情報はお互いに共有されているのです。

グローバル変数というアイデアには惹かれましたが、どちらかというと手続き的なアプローチで、OOPの長所はすべて生かしたいですね。必要な分析データを配列の形でExpert Advisorに渡し、トレードの判断をさせるようなクラスを別に書く予定です。