Symbol() シンボル関数 標準的なやり方。
NULL NULLでも
"" ””ダブルコーテーション 半角二文字で短い!
"USDJPY-a01" ←通貨ペア名指定 ※OANDAで実験しますので-a01が付いています。
私の予想ですと①”” ②NULL ③通貨ペア直接指定 ④Symbol()です。
理由ですが
Symbol()は関数呼び出しに時間がかかる
通貨ペア直接指定は指定文字を読み取り当てはめる行程がいる。
NULLは何もないから早い
NULLの中身は""と考えられる。NULLを””に変換する行程が不要
といってイメージです。いかがでしょうか?
//””
void OnTick()
{
int t=GetMicrosecondCount();
for(int i=0;i<1000000;i++)
{
double A=MarketInfo("",32);
}
Comment(GetMicrosecondCount()-t);
}
//NULL
void OnTick()
{
int t=GetMicrosecondCount();
for(int i=0;i<1000000;i++)
{
double A=MarketInfo(NULL,32);
}
Comment(GetMicrosecondCount()-t);
}
//Symbol()
void OnTick()
{
int t=GetMicrosecondCount();
for(int i=0;i<1000000;i++)
{
double A=MarketInfo(Symbol(),32);
}
Comment(GetMicrosecondCount()-t);
}
//直接指定
void OnTick()
{
int t=GetMicrosecondCount();
for(int i=0;i<1000000;i++)
{
double A=MarketInfo("USDJPY-a01",32);
}
Comment(GetMicrosecondCount()-t);
}
四つもあると見にくいですね。
インデントつけなければよかった・・・
結果発表です
こちらも見にくいので打ち直しました。
1st. Symbol1 "" 3,114,741
2nd Symbol3 Symbol() 3,141,865
3rd Symbol2 NULL 3,141,865
4th Symbol4 "USDJPY-a01" 3,277,976
順位は安定していますが直接入力のみ2ndから4thをうろうろしています。
安定していたのは4thでしたので最下位の烙印を押しました。
””が速いのは予想的中なのですが、Symbol()が速いのは少し驚きですね。
複数通貨ペアを操るときには直接入力が必要ですが、
単一通貨ペアで縛りたいときにはOnInit で縛るのがよさそうです。
0 件のコメント:
コメントを投稿