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

 
Vitaly Muzichenko:

OnCalculate(...) イベントでタッチできない、どの関数でもタッチできるのに、この 関数にタッチできない。タイマーはオプションではなく、インジケータはそれほど頻繁に必要なものではなく、グラフィックアイテムのクリックで使用するのが良いだろう。

どのように実装するのか?

オブジェクトのクリックをインジケータとイベントハンドラでキャッチし、インジケータバッファを新しいスタート時点のように再計算するのです。OnCalculateを プルする必要はありません。
 
-Aleks-:

コードの中で最もCPUに負荷がかかる場所を正しく探す方法を教えてください。

エディターからコードプロファイリングを 実行する。
 
Artyom Trishkin:
エディターからコードプロファイリングを 実行する。

ありがとうございます。でも、オフラインで、つまり休みの日に、どうやってやるんですか?

 
何が問題なのでしょうか?

コードの一部です。

for(i=1; i<=Bars; i++)
{
if(Open[i]-Close[i]==0)

テスト時に、デバッガがif行でエラーを発生させる。配列が範囲外である。

よろしくお願いします。
 
Andy-D:
何が問題なのでしょうか?

コードの一部です。

for(i=1; i<=Bars; i++)
{
if(Open[i]-Close[i]==0)

テスト時に、デバッガがif行でエラーを発生させる。配列が範囲外である。

よろしくお願いします。
for(i=1; i<Bars; i++)
  {
   if(Open[i]-Close[i]==0)
     {

     }
  }
...
 
Sergey Gritsay:
for(i=1; i<Bars; i++)
  {
   if(Open[i]-Close[i]==0)
     {

     }
  }
...
ありがとうございます!助かりました。"<="を付けなかったのがいけなかったのでしょうか?変な話ですけどね。その理由がわからない。プラス記号はどこにつけるのですか?
 
Andy-D:
ありがとうございます!助かりました。"<="を付けなかったのがいけなかったのでしょうか?変な話ですけどね。その理由がわからない。プラス記号をどこにつけるか?
配列のインデックスは0から始まり、Bars-1(この場合)で終わります。そのため、Barsの値はアレイ オーバーランとなる。
 
Andy-D:
ありがとうございます!助かりました。"<="を付けなかったのがいけなかったのでしょうか?でも不思議ですね。 その理由が わからない。プラス記号をどこにつけるか?
配列のインデックスは0から始まるので、例えばBarsのバーの数が1であれば、この1本のバーから値を得るには、インデックス0を持つそのセルの値を取る必要があります。

以下は比較表です。

Barsのバー数
1 2 3 4 5 6 7 8 9 10 外部配列
データを参照するループインデックス
0 (i<Bars)1 (i<Bars)2 (i<Bars)3 (i<Bars) 4 (i<Bars)5 (i<Bars) 6 (i<Bars) 7 (i<Bars)8 (i<Bars)9 (i<Bars) 10 (i==Bars)
 
Sergey Gritsay:
そのためには、ローカルコンピュータの外にサーバーを作り、このサーバーを介してデータを転送する必要があります。MTでは、このデータを処理するインジケータやアドバイザーを書いたり、VPNサーバーに端末を置き、そこに自分のアカウントから友人のアカウントへの取引のコピー機を設定したりします。もう一つの方法は、シグナル サービスを通じて、指定されたレベルで実行された自分のトレードをコピーすることです。一般的には、自分の経済力を考慮して、適切なソフトを発注する必要があります。
似たようなマッピング原理のインジケータ(mq4)を見つけました。私はその結果を見てきましたが、私には合いませんでした。私独自のデータで、より正確だと思います。自作のデータがあるのですが、より正確にするため、不要なマッピングを削除し、データのパスを指定するなどの編集は可能でしょうか。ただ、基本として捉えてください。
 
Artyom Trishkin:
配列のインデックスは0から始まるので、例えばBarsのバーの数が1であれば、この1本のバーから値を得るには、インデックス0を持つそのセルの値を取る必要があります。

以下は比較表です。

Barsのバー数
1 2 3 4 5 6 7 8 9 10 外部配列
データを参照するループインデックス
0 (i<Bars)1 (i<Bars)2 (i<Bars)3 (i<Bars) 4 (i<Bars)5 (i<Bars) 6 (i<Bars) 7 (i<Bars)8 (i<Bars)9 (i<Bars) 10 (i==Bars)
ありがとうございました!これで納得です。