月曜日の窓

I’m the king of the world!

本日の担当は、
ザキトワ大好き”マサル”です。
日本語で”勝利”という意味。

さて、前回から、人類未踏の世界征服を目指して
ひっそりとPython、AIを勉強している

その世界征服の様子をちょっとずつ紹介していきたい。

世界征服のための第一歩

今回は、コンピュータによる自動為替取引。

皆さんは、月曜日の窓、という言葉をご存じだろうか、FXをしている人の間では結構有名な言葉だが、
簡単に説明しておくと、

為替取引は、基本的には、月曜日~金曜日までの平日にしか行われていない。
特に、日本、アメリカ、ヨーロッパの各市場は、土日は、休みだ。

いわゆる、キリスト教の安息日が採用された国は休みだ。

それに対して、イスラム圏の国では、金曜日が休日、つまり、日曜は休みではない。
キリストの安息日をかたくなに否定している。

となると、ごく一部の国ではあるが、土日も為替取引が行われているわけである。

で、休み明けの月曜日、為替取引が開始されると、そこに、週末との価格差が開いているような状況が起こる。

これを、俗に、月曜日の窓、という。

一般に、この価格差、100%ではないが、高い確率で、元の価格へ戻る傾向が高い。
すなわち、為替の動く方向がある程度の確率で推定できるわけである。

さて、これだけの条件がわかっているので、これをコンピュータに自動で処理することができれば、高い確率で利益を取得することができそうな気がする。

で、まず、最初は、MQL4でのプログラミングになる。
(将来的には、Pythonで機械学習した結果を元にMQL4で取引条件を記述してみたい。)
プログラムの内容は

  1. 月曜日と金曜日の価格差があるかどうか?また、
    それが、スプレッドよりも大きいかどうか?
    (手数料にあたるスプレッドよりも小さければ、意味がない。)価格差があり、スプレッドよりも大きければ、
  2. 上の方向に窓が開いているのか、下の方向に窓が開いているのか
    上の方向へ空いていれば、ショートから入り、
    下の方向に窓が開いていれば、ロング
  3. 決済条件は、元の値段に戻った時。

一応これだけでいいのだが、万が一、閉じなかった場合のことも考えて、
やはり損切りのための条件をつけておかなければならない。

とりあえず、今回は、エントリー、上記の1,2までのプログラムを書いてみた。
次回、決済条件と、損切り条件をつけて、バックテストの結果を紹介してみたい。

一応断っておくが、プログラムの正確性は、一切保証しない。
もし、今後、このブログでの知識を利用して、損害を被ることがあったとしても、自己の責任において処理してください。

int Ticket_S=0;
int Ticket_S=0;
int Ticket_L=0;

OnTick{
double Spread = MarketInfo(Symbol(),MODE_SPREAD);/*スプレッド確認*/
double WeekEnd = iClose(NULL,PERIOD_D1,1);/*日足の終値*/
double WeekStart = iOpen(NULL,PERIOD_D1,0);/*日足の始値*/
double Gap = WeekStart – WeekEnd;

if(MathAbs(Gap)>Spread && DayOfWeek()==1){
if(Gap>0 && (Ticket_S==0 || Ticket_S==-1)){
Ticket_S = OrderSend( Symbol(), OP_SELL, 0.1, Bid, 3, 0, 0, “SELL”, 0, 0, Red );
}else if(Gap<0 && (Ticket_L==0 || Ticket_L==-1)){
Ticket_L = OrderSend( Symbol(), OP_BUY, 0.1, Ask, 3, 0, 0, “BUY”, 0, 0, Blue );
}
}
}