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

 
本文中のすべての値を要約する方法を教えてください。
void Hmin(){datetime   h = iBars(NULL,PERIOD_H1); 
       ObjectCreate(0,"Hmin"+h,OBJ_TEXT,1,TimeCurrent(),0);     
       double Hmin=ObjectDescription("Hmin"+h);     
       ObjectSetText("Hmin"+h,MathMin(Hmin,AccountEquity()-AccountBalance()),15,"Arial",clrWhite);
       ObjectSetInteger(0,"Hmin"+h,OBJPROP_ANCHOR,ANCHOR_RIGHT);  
           }
このコードでは、それらを作成するだけです
 
Дмитрий:

こんにちは、よろしくお願いします...

MathMax は、2 つの数値の最大 値を返します。つまり、2 つの同じ配列 high[rates_total] から、差分が -1 と -2 のバーの最大数値を返します?

簡単に言うと、最初の配列が12345で、2番目の配列が1234の場合、この関数は5を返すのでしょうか?

いいえ、この関数は12345を返します。

 
Дмитрий:

こんにちは、よろしくお願いします...

MathMax は、2 つの数値の最大 値を返します。つまり、2 つの同じ配列 high[rates_total] から、差分が -1 と -2 のバーの最大値を返します?

簡単に言うと、最初の配列が12345で、2番目の配列が1234の場合、この関数は5を返すのでしょうか?

high[rates_total-1]とhigh[rates_total-2]の2つの最大値が返されることになります。

アドレスhigh[rates_total-1]に値12345があり、アドレスhigh[rates_total-2]に値1234がある場合、これら2つの値のうちどちらが大きいか?

12345は1234より明らかに一桁大きい。high[rates_total-1]の値12345が返されます。

 
Artyom Trishkin:

high[rates_total-1]とhigh[rates_total-2]の2つの最大値が返されます。

high[rates_total-1]に値12345、high[rates_total-2]に値1234が含まれる場合、この二つの値のうちどちらが大きいか。

12345は1234より明らかに一桁大きい。high[rates_total-1]の値12345が返されます。

ありがとうございます...しかし、high[rates_total-1]がhigh[rates_total-2]よりも既に1本大きい場合、文字列の合理性に疑問がある。

それとも、ここでは別の意味があるのでしょうか?

ありがとうございます。

 
Дмитрий:

ありがとうございます...が、これは、high[rates_total-1] が high[rates_total-2] よりも既に1本多い場合、文字列の合理性に疑問を投げかけるものである。

それとも、ここに何か意味があるのでしょうか?

ありがとうございます。

バーと何か関係があるのでしょうか?

同じ配列の2つのバーの高い 値を比較しています。rates_total-1 と rates_total-2 は、比較する 2 本のバーのどの値かを示しています。

rate_total-1とrate_total-2にあるバーのHigh値を比較しているのであって、インデックスの値を比較しているわけではありません。

MathMax(rates_total-1, rates_total-2) - ここで rates_total-1 が常に返されます。

 
Rustam Bikbulatov:
本文中のすべての値を合計する方法を教えてください。このコードでは、作成するだけです。

バランス・マイナス・エクイティ・バリューを取得したいのですか?

 
Artyom Trishkin:

バーと何か関係があるのでしょうか?

Highの 値を比較しているのですが、これはオンになっている...

ありがとうございます...明瞭化のため)
 

皆さん、ごきげんよう。

MT4で、ALL TIKESというモデルで、ローソク足の分足で、Expert Advisorをテストしています。私の仕事は、コードの実行にかける時間をできるだけ少なくするプログラムを作ることです。しかし、驚いたのは!!!!

このコードでは、プログラムはティックごとにチェックし、コード実行に6秒を費やしています。375ミリ秒。

void OnTick()
{
Tick++;
if (Tick!=x3)
{
Print("---------------------КАЖДЫЙ ТИК ----------Tick-----=",Tick);
x3=Tick;
}
}

このプログラムは、すべてのティックをチェックするのではなく、各分ローソクの最初のティックだけをチェックすれば、コードの実行に費やす時間はずっと短くなるように思えたのです。

 
void OnTick()
{
Tick++;

if (Minute()!=x3)//&&Seconds()==0

{
Print("---------------------КАЖДЫЙ ТИК ----------Tick-----=",Tick, "  Bid  ",   Bid, "  LoY  ",   LoY);
x3=Minute();
}
}



しかし、プログラムは6秒を 費やした。219msec.です。このことから、60秒に1回だけ括弧内の式をチェックするようにプログラムしているにもかかわらず、1目盛りごとにこの式をチェックし、前のコードとほぼ同じ時間を実行に費やしているという結論に達しました。
そして、モデルをVALUABLE VALUESに 変更し、2番目のバリアントを実行しました。しかし、プログラムの 実行時間は同じ6 秒だった。219ミリ秒。


QUESTION .MT4でALL TICKモデルで プログラムを作ることは可能ですか、すべてのティックではなく、新しい分キャンドルの最初のティックをチェックし、それはコードの実行にはるかに少ない時間を費やすだろう可能であれば、どのような機能、言語構成が考えられるか。
ありがとうございます。

 
datetime current, last;

void OnTick()
   {
   current=iTime(symbol,frame,0);
   if(last==current) return;
   last=current;

   } 
 
Aleksei Stepanenko:

私のコードをあなたのコードと一致するように変更しました。

datetime current, last;
void OnTick()
{
Tick++;
current=iTime( NULL,0,0);
if(last==current) return;
last=current;
{
Print("---------------------КАЖДЫЙ ТИК ----------Tick-----=",Tick);
}
}


プログラムがコードを実行するのにかかった時間......。6 , 235, すなわち、私のコード(6.375)より少ないが、数倍 少ないわけではない
. プログラムは各分ローソクのオープニングで一度だけティック値をチェックする必要があるので、それは数倍 少ないはずだと思われます。

どちらが悪いのか......そんな気がします。