◆配列のサイズを0に指定して初期化するとエラー
double aaa[];
int size = 0;
ArrayResize(aaa,size); ArrayInitialize(aaa,size);
=>ArrayInitialize function internal error
対策:運用上問題ないけど気持ち悪いので、sizeが0より大きいかチェックすること。
◆バックテスト時の現在時刻取得あれこれ
バックテスト時に現在時刻が取れない。
LocalCurrentもTimeLocalも一緒になる。
他通貨や他時間でも0タイムで現在時間にならない。直近の時間はこれでは取れなかった。
Print(TimeToStr(Time[0]));
Print(TimeToStr(iTime(NULL,PERIOD_M15,1)));
Print(TimeToStr(iTime(NULL,PERIOD_M5,1)));
Print(TimeToStr(TimeLocal()));
Print(TimeToStr(TimeCurrent()));
Print(TimeToStr(iTime("AUDUSD",PERIOD_M5,1)));
仕方ないのでNTPサーバーから取ってきたけど、これはなんとも。。。orz
Win32でPCから時刻取りたいけどわからない。
◆バックテストではOrdersHistory周りは全部取れない。
0件扱い。
◆バックテスト用オフラインチャートではTimeCurrentは使わない
TimeCurrentではなくTime[0]を使う。
TimeCurrentは、最後にサーバーに接続した時間が取れるようで(M1足以外でも分レベルで分かるのはいいけど)、
ヒストリー入れ替えた後に見てみたら、1週間前の日付が取れててインジがおかしくなってしまった。
Time[0]でも大丈夫な場合はTime[0]を使う。
◆多次元配列のサイズ
int aaa[][4];
ArrayResize(aaa,8);
Print("size:"+ArraySize(aaa)); ⇒ 32 8×4の32になる
ArrayResize(aaa,4);
Print("size:"+ArraySize(aaa)); ⇒ 16 4×4の32になる
ArrayResizeは、1次元目の数を指定することになる。