質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.39%
MQL4

MQL4とは、MT4(MetaTrader4)で用いられるプログラム言語です。MT4は無料で使えるチャートソフトあり、MQL4を使うことで分析ツールのオリジナルスクリプトの作成ができます。

Q&A

2回答

4401閲覧

MQL4 配列に動的に値を追加したい

yuudai

総合スコア65

MQL4

MQL4とは、MT4(MetaTrader4)で用いられるプログラム言語です。MT4は無料で使えるチャートソフトあり、MQL4を使うことで分析ツールのオリジナルスクリプトの作成ができます。

0グッド

0クリップ

投稿2021/01/30 09:28

前提・実現したいこと

配列に値を動的に追加したい。
どのようにすれば動的に値を追加できますか?

発生している問題・エラーメッセージ

Array out of range

該当のソースコード

void OnStart() { //--- double a[]; for(int i=0; i < 20; i++){ a[i] = i;//この行でエラーが出る Print(a[i]); } double mean = iMAOnArray(a,5,5,0,MODE_SMA,0); Print(mean); }

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ArrayResizeで配列のサイズを変更できます。

ただ、なぜかiMAOnArrayの呼び出しの有無でa[i] = iの行の結果が異なる現象がでました。
インジケータであれば問題なく動きますが。。

MQL4

1// スクリプト 2#property strict 3 4void OnStart() 5{ 6 double a[]; 7 ArrayResize(a, 20); 8 for(int i = 0; i < 20; i++) 9 { 10 a[i] = i; 11 Print(a[i]); 12 } 13 14 // 下記の行が有効だとa[i] = iでarray out of rangeが発生 15 //double mean = iMAOnArray(a, 5, 5, 0, MODE_SMA, 0); 16 //Print(mean); 17}

投稿2021/02/03 14:08

mah

総合スコア591

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

20個データ入れるよって、宣言したら、やりたいことと異なりますか?

double a[20];

投稿2021/02/01 11:30

k-4

総合スコア11

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yuudai

2021/02/01 13:52 編集

そもそもやりたいことはMACDのシグナルをEMAで計算することです。 今はとりあえず無理やりarraycopyで配列をずらして新しい値を代入してという風にしています。 double a[9]; double signal; //openかどうかを確認するために使う int gVolumeBak = 0; int OnInit(){ for(int i=9,int arr_i=0; arr_i<9; i--, arr_i++){ a[arr_i] = iMACD(NULL, 1, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, i); } } void OnTick(){ if (Volume[0] < gVolumeBak) {   //バーのopenで1回だけ処理したい内容をここに記載する MACD = iMACD(NULL, 1, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, 1); ArrayCopy(a, a, 0, 1, 8); // 配列をずらす a[8] = MACD;//追加する //初期化 gVolumeBak = 0; } else {    //今のVolume[0]をセット gVolumeBak = Volume[0]; } signal = iMAOnArray(a,9,9,0,MODE_EMA,0); } この欄に書くとインデントがうまくいかないなw
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.39%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問