MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 649

 
Artyom Trishkin:

2.ゼロより多い」とはどういう意味ですか?

バッファに何らかの価格があることを意味し、そうでない場合はバッファに価格がないことを意味します。

アルチョム・トリシキン

データウィンドウのこのインジケータのバッファ値には、何が表示されていますか?

価格か、それとも何もないか。
 
Ghabo:

バッファに何らかの価格があることを意味し、そうでない場合はバッファに価格がないことを意味します。

EMPTY_VALUEは「空の」バッファ値で、多くのインジケータがデフォルトで使用し、DBL_MAXの値を持っています - そしてこれはゼロよりも非常に大きいです。だから聞いているんです。

if(M_A > 0 && M_A < EMPTY_VALUE) をチェックしてみてください。

 
Artyom Trishkin:

EMPTY_VALUEの 値は、多くのインジケータがデフォルトで使用する「空の」バッファの値で、DBL_MAXという、ゼロより非常に大きな値を持っています。だから聞いているんです。

if(M_A > 0 && M_A < EMPTY_VALUE) を確認してみてください。

シグナルは、とてもそこにある。これかな?

void OnInit() {
  time=Time[0];
}
//////////////////////////////
if(М_А>0 && M_A < EMPTY_VALUE)  
{
if(time!=Time[0])
   {
    time=Time[0]; 
    AL(Symbol()+" "+Period()+" УХ ТЫ",2);//
   }
 }

起動時にアラートは出ないが、インジケータを装着したバーでシグナルが表示されるということですか?

初期化時にすでにバーの開始時刻と同じ になっているので、どうでしょ う。

どのように判断するのか?

 
Ghabo:

シグナルは、とてもそこにある。それだけですか?

つまり、起動時にアラートは出ないが、インジケータを装着したバーにシグナルが表示されるとアラートが出るということですか?

初期化 時に、時間はすでにバーのオープン時間と等しいので、どうでしょ う。

どのように解決するのか?

OnInit()の初期化時間を削除。

void OnCalculate()
  {
   static datetime time=0;
//---
   if(М_А>0 && M_A < EMPTY_VALUE)  
     {
      if(time!=Time[0])
        {
         time=Time[0]; 
         AL(Symbol()+" "+Period()+" УХ ТЫ",2);//
        }
     }
  }
 
Taras Slobodyanik:

ということで、設定は完了しましたので、あとは書き込み/読み込みを追加するだけです。

このコードは機能するのか、すべきなのか?実IDのグローバル 変数から取得した後に発散してしまうのですが。そして、できればインジケーターという形で例を挙げてください。ありがとうございます。
 
inter78:
このコードは機能するのか、すべきなのか?実IDのグローバル 変数から取得した後に発散してしまうのですが。また、可能であれば、インジケーターの形で例を挙げてください。ありがとうございます。

私のコードは、私のために動作します、私はあなたのコードを見ることができません。
下さい)

 

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

MQL4初心者のための質問、アルゴリズムやコードに関するヘルプとディスカッション

タラス・スロボディアニク さん 2018.10.05 11:01

まあ、グローバル変数に複雑なことは何もないんですけどね。
- 変数名は接頭辞+記号+期間、値=チャートID
- 開始時に、プレフィックスを持つ変数を検索し、その変数を比較します。
- チャートが存在しない場合、そのようなチャートが存在するかどうかを確認し、存在しない場合は、変数を削除します。
- チャートが私たちのものであれば、名前からシンボルとピリオドを取り、さらに変数を削除(または書き換える)します。



変数の接頭辞の意味とその使い方を読者に理解してもらうためです。このようなグローバル変数を作成する方法を例として教えてください。

GPTは4週間保存とありますが、これは端末の電源を切っても大丈夫なのでしょうか?

 
psyman:

変数のプレフィックスが何なのか、なぜそれが必要なのか、ヘルプには何も書かれていません。このようなグローバル変数を作成する例を教えてください。

GPTは端末の電源を切っても4週間保存されると書いてありますが?

名前のプレフィックスは、どこまでが自分の変数でどこからが他人の変数なのかを識別できるようにするためのもので、プレフィックスはすべての変数を一度に削除することができますよ、という意味です。

int  GlobalVariablesDeleteAll( 
   string     prefix_name=NULL,     // все глобальные переменные, чьи имена начинаются с префикса 
   datetime   limit_data=0          // все глобальные переменные, которые изменялись ранее ранее указанной даты 
   );

例えば

string   GV_prefix="ZZ_";                                               //префикс имени для всех своих
string   prefix_gv=GV_prefix+_Symbol+"_"+TFtoStr(ind_period)+"_";       //префикс имени для конкретного символа и периода

GlobalVariablesDeleteAll(prefix_gv); //удалить все переменные со своим префиксом


   //создание и запись глобальных переменных в цикле
   int num=0;
   for(int i=lines_all-1;i>=end;i--)
      {
      string name=prefix_gv+"Price_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].price);
      
      name=prefix_gv+"TimeBeg_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].time_start);
      
      name=prefix_gv+"TimeEnd_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].time_end);
      
      name=prefix_gv+"Visible_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].visible);
      
      name=prefix_gv+"Direction_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].direct);
      
      num++;
      }


ps. 名前に情報を保存/抽出することも可能です。

 

今、私たちは何を言っているのかがわかった。

=変数名は接頭辞+記号+期間、値=チャートID

なぜそんなに複雑なのか?期間だけを保存したい場合は、チャートのidで 名前をつけることができます。

 
psyman:

今、私たちは何を言っているのかがわかった。

=変数名は接頭辞+記号+期間、値=チャートID

なぜ、こんなに複雑なのか?ピリオドだけを格納したい場合は、チャートIDを 命名することができます。

一例として書いているだけです)

は、その記号を覚える必要がないのであれば

名前が単なるチャートIDの場合、不要な変数はどのように削除するのですか?
(頻繁に使用する場合は、多くの変数が存在することになります)

prefixがない場合 - 同じことですが、不要な変数を削除する方法は?