"ダミー "からの質問 - ページ 138

 
joo:
スクリプトでない場合、すべてのロジックはOnChartEvent()の中で/から実行/呼び出される必要があるのでしょうか?

どこでもできる、タイマーもある。

周期的なロジックが必要な場合は、タイマに入れればよい。

ロジックがイベントドリブンである場合、chartevent.

 
sergeev:

どこでもできる、タイマーもある。

周期的なロジックが必要な場合は、タイマに入れればよい。

ロジックがイベントドリブンである場合、charteventでは。

これがロジックです。

1.プログラムの開始(charteventにスローされます)。

2. ダイアログボックス(ファイル一覧)から、ファイル名を取得する。

3.ファイル名でファイルを 開き、データを受信して処理します。

4.プログラムを終了した。

それだけなんです。この場合、どのように整理すればよいのか、少なくとも模式的に示してください。

Документация по MQL5: Файловые операции / FileOpen
Документация по MQL5: Файловые операции / FileOpen
  • www.mql5.com
Файловые операции / FileOpen - Документация по MQL5
 
joo:

そんなロジックです。

1.プログラムを開始する(チャート上で投げる)。

ディスクをスキャンし、ファイルを見つけ、リスト(コントロール)を表示するウィンドウを作成します。

2. ダイアログボックス(ファイル一覧)から、ファイル名を取得。

OnChartEvent.マウスのクリックを処理する。リストのどの行がクリックされたか、それぞれ、ファイルがわかる。

3.ファイル名でファイルを 開き、データを取得し、処理した。

OnChartEvent.Go」ボタンをマウスでクリックする処理。一覧からファイル名を受信。さらに、このファイルは、純粋にあなたのデータ処理です。

4.プログラムを終了する。

ExpertRemove()

 
sergeev:
...

なるほど、これですっきりしました、ありがとうございます。

でも、試しに、エキスパートを作ってみたんです。チャート上で何も起こっていないときでも印刷される-そして、そうであってはならない。

#include <Controls\ControlsDialog.mqh>
CControlsDialog ExtDialog;

int OnInit()
{
//--- create application dialog
  if(!ExtDialog.Create(0,"Controls",0,20,20,360,324))
    return(-1);
//--- run application
  ExtDialog.Run();
  return(0);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- destroy dialog
  ExtDialog.Destroy();
}
//+------------------------------------------------------------------+
//| Expert chart event function                                      |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,         // event ID  
                  const long& lparam,   // event parameter of the long type
                  const double& dparam, // event parameter of the double type
                  const string& sparam) // event parameter of the string type
{
  ExtDialog.ChartEvent(id,lparam,dparam,sparam);
  Print("dsfsdfsdfsdf");
}
//+------------------------------------------------------------------+
 
Yedelkin:

まあ、どんなクラスメソッドも ただのコードですからね。ここでこのコードを解析してみてください。

ありがとうございました。動作するようになりました。
 
joo:

なるほど、これですっきりしました、ありがとうございます。

でも、試しにExpert Advisorを作ってみました。チャート上で何も起こっていないときでも印刷される-そして、そうであってはならない。

いいえ、チャートの上でマウスを動かしているから印刷されるのです。

 
sergeev:

いや、チャートの上でマウスを動かしているから印刷が行われているんだよ。

確かに、私は罪を犯しました。チャートの上にマウスを移動させたので、印刷されてしまったのです。
削除済み  

こんにちは。

興味本位で質問する。以下はそのコードです。

class cl2;

class cl1
{
public:
        int q;
        void fn2(cl2 &t){t.i = 87;}
};


class cl2
{
public:
        int i;
        void fn(cl1 &w){w.q = 9;}
};

考え方は次のとおりです。

  • クラスは2つ(#1、#2)あります。
  • クラス#1がクラス#2をつつく
  • クラス2がクラス1をつついている。

MQLではエラーなくコンパイルできますが、VSではコンパイルできません(未定義のクラスは使えないと言われます)。なぜ?

 
220Volt:

MQLではエラーなくコンパイルできますが、VSではコンパイルできません(未定義のクラスは使えないと言われます)。なぜ?

パタムスタ mql5 の方が良い!

;)

削除済み  
MetaDriver:

だって、mql5の方がいいんだもん!

;)

そうですね、プラス記号をつけたほうがいいかもしれませんね ))