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

 
Artyom Trishkin:

インジケーターデジット(5)

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

もうひとつ質問させてください。同指標に基づく。ここでは、インジケータをチャートに 貼り付けると仮定します。Bid1の最初の値を取得する。そして、2つ目の値であるBid2を求める。そして、この2つの値を比較する必要があります。2つ目から1つ目を引いて、1つ目のBid1に足した数を求めます。

Bid1=1.11133

Bid2=1.11135

ビッド2-ビッド1=0.00002

Bid1+0.00002=1.11135

結果は元のインジケータと同じになると理解しています。

実装を見て、コードのロジックを理解したいだけなんです。

 
Alexey Viktorov:

ファイルのプロパティでロックを解除する必要があります。

ありがとうございました。:)
 
jaffer wilson :

2つのステートメント。

プリント:22.33

И

プリント:2.00000

なぜ出力が違うのですか?C / C ++では、上記のステートメントは問題なく動作します。

この問題について、どなたかお心当たりのある方はいらっしゃいますか?

 

mt5 の価格配列について教えてください。インジケーターではわからない。OnCalculateにある、価格を出力しています。

  for(int i=10; i>=0; i--)
         PrintFormat("s- open[%d] = %d",i,open[i]);

変な値段になるんですよ。

2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[10] = 1597040639
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[9] = -523642413
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[8] = 1691873517
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[7] = 590987500
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[6] = 1583296744
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[5] = 115448721
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[4] = 360090058
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[3] = -1597040639
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[2] = -856244680
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[1] = 366962006
2020.01.15 20:09:51.517 ZZ_And_Moving_Averages (EURUSD,H1)      s- open[0] = -1209462791

私は逆に、配列を作ってコピーしています(やってみて探しますが、よくわかりません)。

double Open[];//глобальная
CopyOpen(NULL,0,0,Bars_To_Process*2,Open); //OnCalculate
 for(int i=10; i>=0; i--)
         PrintFormat("Open[%d] = %d",i,Open[i]);//OnCalculate

そして、同じような結果を得ることができます。

2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[10] = 1356522471
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[9] = -1708366192
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[8] = -729800843
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[7] = 1499458982
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[6] = 167675523
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[5] = -90709709
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[4] = -321607151
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[3] = -314735203
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[2] = -314735203
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[1] = 1663011337
2020.01.15 20:10:11.557 ZZ_And_Moving_Averages (EURUSD,H1)      Open[0] = -1408749273

デートだとさらに面白いですね。OnCalculateにある日付を印刷するのですが。

for(int i=10; i>=0; i--)
         PrintFormat("s- time[%d] = %s",i,TimeToString(time[i]));

これはわかった。

2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[10] = 2015.12.02 10:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[9] = 2015.12.02 09:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[8] = 2015.12.02 08:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[7] = 2015.12.02 07:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[6] = 2015.12.02 06:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[5] = 2015.12.02 05:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[4] = 2015.12.02 04:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[3] = 2015.12.02 03:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[2] = 2015.12.02 02:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[1] = 2015.12.02 01:00
2020.01.15 20:17:04.421 ZZ_And_Moving_Averages (EURUSD,H1)      s- time[0] = 2015.12.02 00:00

そして、それをコピーするとき。

datetime Time[];
CopyTime(NULL,0,0,Bars_To_Process*2,Time);
for(int i=10; i>=0; i--)
         PrintFormat("Time[%d] = %s",i,TimeToString(Time[i]));

問題なくプリントアウトできます。

2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[10] = 2020.01.15 10:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[9] = 2020.01.15 11:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[8] = 2020.01.15 12:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[7] = 2020.01.15 13:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[6] = 2020.01.15 14:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[5] = 2020.01.15 15:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[4] = 2020.01.15 16:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[3] = 2020.01.15 17:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[2] = 2020.01.15 18:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[1] = 2020.01.15 19:00
2020.01.15 20:20:37.686 ZZ_And_Moving_Averages (EURUSD,H1)      Time[0] = 2020.01.15 20:00

しかし、デートだけでは遠くへは行けません。理解するのを助けてください。正しい始値、終値を得るにはどうしたらよいですか?

 
Yevhenii Levchenko:

mt5 の価格配列について教えてください。インジケーターではわからない。OnCalculateにある価格を出力しています。

for(int i=10; i>=0; i--)
         PrintFormat("s- open[%d] = %d",i,open[i]);

こんな感じで作ってください。

for(int i=10; i>=0; i--)
{
   Print("s- open[",i,"] = ",open[i]);
}

フォーマットされた出力で 間違った型指定をしている

 
Igor Makanu:

してください。

フォーマットされた出力に 間違った型指定が使用されている

イゴールさん、どうもありがとうございました。

fと入れればよかった...。勘違いしてました・・・私もArraySetAsSeriesを随所に入れる必要があります。ちょっと変な感じ...。

 
Igor Makanu:

お願いします

もしインジケーターのコードを一から書くのであれば、ArraySetAsSeries()を使うことはお勧めしません(MQL4から移植する場合は別の問題です)。

rate_totalを一番右のバーの数-1として使用すると、MQL5のインジケータのロジックに早く慣れることができます。

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

ゼロから書くのではなく・・・。mt4のインジケータをmt5に転送しています。
 
Oleg Bondarev:

もうひとつ質問させてください。同指標に基づく。ここでは、インジケータをチャートに 貼り付けると仮定します。Bid1の最初の値を取得する。そして、2つ目の値であるBid2を求める。そして、この2つの値を比較する必要があります。2つ目から1つ目を引いて、1つ目のBid1に足した数を求めます。

Bid1=1.11133

Bid2=1.11135

ビッド2-ビッド1=0.00002

Bid1+0.00002=1.11135

結果は元のインジケータと同じになると理解しています。

実装を見て、コードのロジックを理解したいだけなんです。

助けてください。自分一人ではどうにもならない。Bid値を比較するためのバッファx[ ]とプロットするためのバッファy[ ]を2つ作る。そして何もない。

 
Oleg Bondarev:

あなたの力が必要です。自分一人では何も動かせない。Bid値を比較するためのバッファx[ ]とプロットするためのバッファy[ ]を2つ作る。そして何もない。

質問が明確でない可能性があります。