2023年6月23日金曜日

SWAPを日本円で確認しよう


全通貨ペアのスワップポイントを取得するコードを3年ほど前に紹介しましたが、

一日何円入るのかはなかなかつかみにくいと思います。

 その時の記事


スワップポイントの確認方法














スワップタイプが4種類あり(パターン3は見たことがありません)
それぞれに計算方法があります。

2023年4月17日月曜日

仲値後の曜日の影響

t検定を用いて、仲値後の曜日が取引結果に及ぼす影響を調査してみました。

使用したサンプルデータは、9:55にドル円ショートの取引を行い、一定時間後にクローズするという単純な取引結果でした。


2005年以降の4670回の取引データを確認した結果は以下のようになった。



時間軸を考慮しない単純移動平均(SMA)及び加重移動平均(LWMA)を用いて、取引成績に対して曜日による影響を分析しました。その結果、金曜日には有意に高い成績が見られる一方、火曜日には有意に低い成績が観察されました。

統計的有意差があるかをt検定で調べてみた。

p値が0.05以下の場合有意差があるということになる。




t検定を用いて統計的な有意差を検証した結果、金曜日においては有意差があることが明らかとなりました。一方で、火曜日については有意差は認められませんでした。












2023年3月30日木曜日

いまさらながらのAUDNZD その2

AUDNZD 

H-Lの平均ボラティリティ(High÷Low) 年月

色は赤:大きい 黄色:普通 緑:小さい


2008後半 ~ 2009前半は、非常にボラティリティが高い!

※バックテストのチャートを見ると2007-2009に急成長し、あとはなだらかというグラフがあるが、この時期はボラティリティが高いので利益・損失が大きくなる。その結果2007-2009に最適化されてしまい、運用すると期待外れになりやすい。AUDNZDも同様の傾向 2010年以降の最適化がよさそうです。

年(時期)による影響は強いが、月による影響はないようだ。


2023年3月28日火曜日

いまさらながらのAUDNZD

AUDNZDについてTACA的分析とその備忘録

( ..)φメモメモ

※時間はすべてMT4時間(GMT+2/+3)です。

①通貨の平均的な動き


2005.4-2023.3(途中)データを平均化

一日の動きはこのような感じになりました。

オレンジ:Close-Open(終値から始値を引いた値 動きを確認)

  1. 0時から6時まで上昇(オセアニア時間)
  2. 6時から11:30まで下降
  3. 11:30から14時まで上昇
  4. 14時から下降
  5. 15時下降その後回復(アメリカ指標発表に伴うスプレッド拡大が影響)
グレー:High-Low(高値から安値を引いた値 ボラティリティを確認)

  1. 0時から5時まで高め(オセアニア時間)
  2. 8時ごろから上昇(ロンドン開始)
  3. 15時から17時上昇(NY指標発表?)
  4. 22時上昇(ノイズ?)
22時を分析
動きの大きなものトップ10のうち7個が水曜日うち3個はFOMC日程(時間は異なる)でした。
ノイズではないようです。



2023年1月25日水曜日

MT5 Tickが動いた理由の検証

 MT5はいろいろな理由でティックが動きます。

ティックが動いた理由はMqlTick構造体にSymbolInfoTick()変数で値を代入し、flagsを見ることで確認できます。


フラグの値は2進数です。




Tick.flagsの確認は以下のコードような流れになります。

void OnTick()
   {
   MqlTick Tick; //TickをMqlTick構造体に宣言
   SymbolInfoTick(Symbol(),Tick);//Tickのメンバに値を代入
   Comment(Tick.flags);//Tick.flagsの値をコメントに表示
   }

実際に表示すると2や4が表示されますが6も表示されます。
Bid,Ask両方の価格が変更されると6になります。

また、まれに0が戻ってくることがあります。
理由なきティックということでしょうか!



MT5取り扱いのFX会社4社でどのような数字が戻ってくるか確認しました。



0:理由なし

2:Bid価格変更

4:Ask価格変更

6:Bid+Ask価格変更


外為ファイネストは98,100,102と不思議な数字が出ています。

98=2+32+64 /100=4+32+64 102=6+32+64

32:買い取引

64:売り取引

外為ファイネストは常に売り買い取引のフラグが立っているようです。



どの業者でもTICK_FLAG_BID=2が立っていることを条件にする場合ビッド演算子を使います。

void OnTick()
   {
   MqlTick Tick; //TickをMqlTick構造体に宣言
   SymbolInfoTick(Symbol(),Tick);//Tickのメンバに値を代入
   if((Tick.flags & TICK_FLAG_BID)==TICK_FLAG_BID)
      Print(Tick.flags,"True");
   else
      Print(Tick.flags,"False");
   }

ビッド演算子 &は 2進数の同じ桁の数字が両方1の場合1になります。


例)0b0011 & 0b0110 -> 0b0010

0b0011

0b0110

---------

0b0010

 

先頭0bは2進数という意味です。

一番左の桁は両方0なので0になります 0&0 -> 0

左から2つ目の桁は0と1で0になります 0&1 -> 0

左から3つ目の桁は1と1で1です  1&1 -> 1

一番右の桁は 1と0で0です 1&0 → 0

0b0011 & 0b0110結果は0b0010になります。 

---------------------------------------------------

難解ですが二進数のフラグを調べるには便利な方法です。

ややこしいので例を4つほど記述します。


Tick.flags=2の場合 2は0b0010

TICK_FLAG_BID=2  2は0b0010

Tick.flag & TICK_FLAG_BID ->0b0010 = 2


Tick.flags=4の場合 4は0b0100

TICK_FLAG_BID=2   2は0b0010

Tick.flag & TICK_FLAG_BID ->0b0000 = 0


Tick.flags=6の場合 6は0b0110

TICK_FLAG_BID=2  2は0b0010

Tick.flag & TICK_FLAG_BID ->0b0010 = 2


Tick.flags=15の場合 6は0b1111

TICK_FLAG_BID=2  2は0b0010

Tick.flag & TICK_FLAG_BID ->0b0010 = 2