edo1z blog

プログラミングなどに関するブログです

MetaTrader - 取引時間・スワップ・手数料・pips

取引時間

  • MT4, 5両方とも同じ関数がありますが、下記で一応取引時間が取れました。(MT4で試しています)
  • 戻り値がfalseの場合は、1日お休みということっぽい。
  • ただ、3番目の引数が謎。session_index
  • session_indexを1にしたら、全部falseになった。
string days[] = {SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY};
for (int i = 0; i < 7; i++) {
  datetime from;
  datetime to;
  bool result = SymbolInfoSessionTrade(pair, days[i], 0, from, to);
  Print(i, ": ", result, " ", days[i], " ", from, " ", to);
}

実行結果

0: false 0 1970.01.01 00:00:00 1970.01.01 00:00:00
1: true 1 1970.01.01 00:05:00 1970.01.02 00:00:00
2: true 2 1970.01.01 00:00:00 1970.01.02 00:00:00
3: true 3 1970.01.01 00:00:00 1970.01.02 00:00:00
4: true 4 1970.01.01 00:00:00 1970.01.02 00:00:00
5: true 5 1970.01.01 00:00:00 1970.01.01 23:50:00
6: false 6 1970.01.01 00:00:00 1970.01.01 00:00:00

懸案点

mqldiscussions.com

  • 上記によると、経験的に使えないときもあるよと言っている人もいるし、期限切れでも時間返ってくると言っている人もいる。
  • また、謎のsession_indexはとりあえず0にしておけばいいらしい。

スワップ

手数料

  • MT5なら、Commission()関数でとれるらしいので、やってみよう。
  • アカウントもってなかった。
  • しかし、ポジションの手数料と書いてあるから無理かもしれない。GUIだとしっかり表示される。

pips

mt4-ea.com

  • あー分かりやすい。最高。
  • USD/JPYみたいに、なんとかJPYは全部同じで、1pips = 0.01円(小数点第二位)らしい。
  • そして、右側が日本円以外は、1pips = 0.0001(小数点第四位)らしい。
  • 右側がJPYの場合、大体の場合、小数点3位まで表示されるらしい。
  • 右側がJPYじゃない場合、大体の場合、小数点5位まで表示されるらしい。
  • MTもこのルール通りだから、下記のようにしたら、pointをpipsに変えられる。
  • digitsが3なら、1pips = 0.01円だから、point / 10。
  • digitsが5なら、1pips = 0.0001だから、point / 10。

minagachi.com

  • これによると、digitが2、4のものもあるらしい。
  • 2, 4の場合は、pips == pointらしい。
  • 小数点そろえたいときは、とりあえず NormalizeDouble を使っておけば間違いないらしい。
 NormalizeDouble( stoploss , Digits());