2020年4月24日金曜日

満月の日はチャートのピークになる? 満月EAソース付き

ひろぴーさんが満月の日に仮想通貨の価格が頂点になるとツイートしていました。
https://twitter.com/hiropi_fx/status/1253610559901057024

トレーディングビューって 月の満ち欠けまで表示できるようです。
やはりすごいの一言ですね
早速USDJPYで月を出してみました。
チャート上部黒丸●が満月 下の中抜き丸〇が新月です。


一致しているように見えます。
そんなことがあるのでしょうか?月は約30日周期です。
特定の日に例えば20日などにピークが来やすいのでしょうか
そこで、検証です。
調べてみると月の周期は29.530589日です。
月1回の取引です、長期の2005年からのデータで分析したいと思います。

満月の計算です。
2005年最初の満月は1月25日
MT4の時間datetimeは1970.1.1 00:00:00からの秒数です。
現在の秒TimeCurrent()から最初の満月の日を引きます。
これを86400でったあまりが1未満の日が29.53・・・周期の日になります。
(86400=24時間x60分x60秒)

新月エントリー満月クローズにしても成績が芳しくなかったので最適化します。
(ここで間違えていました💦じつは満月エントリー新月クローズを作っていました


閉じる日は2005.1.xにすれば月齢がてきとうにあいます。

int d;
input int day=1;
void OnTick()
{
   if(MathMod((TimeCurrent()-StringToTime("2005.1.25 00:00"))/86400,29.530589)<1
     )d=OrderSend(Symbol(),OP_BUY,0.1,Ask,0,0,0,NULL,1);
   if(MathMod((TimeCurrent()-StringToTime("2005.1."+day+"+ 00:00"))/86400,29.530589)<1)
      for(int i=OrdersTotal(); i>0;)
      {if(!OrderSelect(--i,0))continue;
      d=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),0);
      }
}

画像

2005.1.29 月齢18が成績がいいようです。

友人曰く「リーマンの極端な下降シーン以外では使えそうです。」

確かにそうですね。


ここでソースを見返して重大なことに気が付きました。
満月エントリーロング、月齢18日(Day=29)クローズにしていました💦

そこで修正したのがこちら
int d;
input int day=1;
void OnTick()
{
   if(MathMod((TimeCurrent()-StringToTime("2005.1."+day+"+ 00:00"))/86400,29.530589)<1
     )d=OrderSend(Symbol(),OP_BUY,0.1,Ask,0,0,0,NULL,1);
   if(MathMod((TimeCurrent()-StringToTime("2005.1.25 00:00"))/86400,29.530589)<1)
      for(int i=OrdersTotal(); i>0;)
      {if(!OrderSelect(--i,0))continue;
      d=OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),0);
      }
}
一番いいのは月齢23日(Day=4)ロングエントリー 満月クローズです。



これはこれでいいですね


0 件のコメント:

コメントを投稿