初心者の方からの質問 MQL4 MT4 MetaTrader 4 - ページ 22

 
A1exPit:
配列にデータを渡すと、array1[] = xのように順次埋まっていくという意味ですが、セル番号を直接指定しない場合、どのセルに値xが書き込まれるのでしょうか。

すべてのセルを同じ値で埋めたい場合は、ArrayInitialize() を使用してください。

異なる値を書きたい場合は、ループを順次使用します。特定のセルに書き込む必要がある場合は、そのアドレスを指定します。

 
Vitalie Postolache:

すべてのセルを同じ値で埋めたい場合は、ArrayInitialize() を使用してください。

異なる値を書きたい場合は、ループを順次使用します。特定のセルに書き込む必要がある場合は、そのアドレスを指定します。

ありがとうございます。

ArrayCopyで、前の配列のセル数と同じ大きさの新しい配列を作ることができますか?それとも、先に2つ目のアレイを作成し、その後にコピーすればよいのでしょうか?

int  ArrayCopy(
   void&        dst_array[],         // куда копируем
   const void&  src_array[],         // откуда копируем
   int          dst_start=0,         // с какого индекса пишем в приемник
   int          src_start=0,         // с какого индекса копируем из источника
   int          count=WHOLE_ARRAY    // сколько элементов
   );
 
A1exPit:

ありがとうございます。

ここでまた質問なのですが、ArrayCopyで、前の配列の埋まっているセルの数と同じ大きさの新しい配列を作ることはできるのでしょうか?それとも、先に2つ目のアレイを作ってからコピーしなければならないのでしょうか?

int  ArrayCopy(
   void&        dst_array[],         // куда копируем
   const void&  src_array[],         // откуда копируем
   int          dst_start=0,         // с какого индекса пишем в приемник
   int          src_start=0,         // с какого индекса копируем из источника
   int          count=WHOLE_ARRAY    // сколько элементов
   );
もちろん、まず創る。
 
Vitalie Postolache:
もちろん、まず創る。
今回もありがとうございました。
 
Spread = MarketInfo(Symbol(),MODE_SPREAD);
if ( Spread >= 0 ) ExtSpread [x] = Spread;
if ( TimeCurrent() - iTime( NULL, 0, 0) >= 60 ){
int Spread2[x];
ArrayCopy( Spread2[],ExtSpread[],0,0, WHOLE_ARRAY);}
x=x+1;
if (x > 1000) x = 0;

このように、ExtSpread[]にスプレッド値を書き込んで、1分足が終わったら、別の配列に移動させます。

サイズ ExtSpread[1000]の場合

もう一つ質問です。配列に0から始まる番号が付けられている場合、配列のサイズが1000であれば、最後のセルは999になるのでしょうか?

すると、x++とif ( x > 999 ) x=0というのが正しい。

 
A1exPit:
Spread = MarketInfo(Symbol(),MODE_SPREAD);
if ( Spread >= 0 ) ExtSpread [x] = Spread;
if ( TimeCurrent() - iTime( NULL, 0, 0) >= 60 ){
int Spread2[x];
ArrayCopy( Spread2[],ExtSpread[],0,0, WHOLE_ARRAY);}
x=x+1;
if (x > 1000) x = 0;

このように、ExtSpread[]にスプレッド値を書き込んで、1分足が終わったら、別の配列に移動させます。

サイズ ExtSpread[1000]の場合

もう一つ質問です。配列に0から始まる番号が付けられている場合、配列のサイズが1000であれば、最後のセルは999になるのでしょうか?

そうすると、x++ と if ( x > 999 ) x=0 が正しいことになります。

Spread = (int)MarketInfo(Symbol(),MODE_SPREAD);
if ( Spread >= 0 ) ExtSpread [x] = Spread;
if ( TimeCurrent() - iTime( NULL, 0, 0) >= 60 ){
int Spread2[];ArrayInitialize (Spread2,EMPTY_VALUE); ArrayResize( Spread2,x,0);
ArrayCopy( Spread2,ExtSpread,0,0, WHOLE_ARRAY);}
x=x+1;
if (x > 999) x = 0;
 
こんにちは!教えてください!アンドロイドでmt4 636バージョンをダウンロードしたのですが、ブローカーのリストが表示されないのです。ターミナル版はもうサポートされていないのでしょうか(( もしそうなら、どこで動作するものをダウンロードできますか?
 

延期となりました。

スコモロー さん 2016.12.04 18:58

コンパイル時にエラーが出る。何が問題なのか?解決にご協力ください
ファイル:
 
Vladimir Karputov:

延期となりました。

スコモロー さん 2016.12.04 18:58

コンパイル中にエラーが表示されます。何が問題なのか?解決するのを手伝ってください

ArrayInitialize(max,0) =>ArrayInitialize(arr,0) です

for(int a=1;a<=pr;a++) =>for(int a=1;a<pr;a++)

これは非常に非最適なコードで、起動時にターミナルが数分間ハングアップし、その後非常に遅くなり、複数のチャートで実行すると、全く動作しなくなります

 
Vitalie Postolache:

ArrayInitialize(max,0) =>ArrayInitialize(arr,0) です

for(int a=1;a<=pr;a++) =>for(int a=1;a<pr;a++)

これは非常に非最適なコードで、起動時にターミナルが数分間ハングアップし、その後非常に遅くなり、複数のチャートで実行すると、全く動作しなくなります

はい、ありがとうございます、すべて修正しました、エラーはありません。ラグ、そう、とても。最適化するためにどのような方向に動けばいいのか、それとも全部書き直さなければならないのか、教えてください。