2020年11月24日火曜日

プロフィットファクタ 続編 PFは何取引必要なのか

 昨日のPFの続編です。

その前にごめんなさいがあります。

ブロガーが新しくなったのですが、今まで見ていなかったコメントが大量に出てきました。
ごめんなさい。結構古いものもありましたので本当に申し訳ないのですが、またどんどん送っていただければ嬉しく思いますm(__)m


さて、昨日のPFの続きです。

昨日は1EA KARATHを見本に何取引あればPFは安定するのかという話を書きました。難しい数学抜きで実践的なものと考えていますが、1EAではどうかと思いますので

現在回している5EAを追加しました。
開発して回しているEAは90ほどあるのですがここは代表作ということでこの5つです。
全てワンポジEAです。


FEAT SYSTEMに出品している5つです。
最終取引のPFから最大何%乖離しているかをみました。

ちなみに一番よかったのは1506回取引したCassynEU 2.01でした。

10%乖離に必要な取引数は最大390回でした。
5%乖離は1030回です。
1000取引というと1日1回取引するEAで4年ほどでしょうか
こうなってくるとフォワードのPFは参考にならないということになります。

10%を目標で最大390回 
EAユーザーの好きなボリンジャーバンド的2σで406回です。

1日1回程度の取引のEAは非常に多いと思います。
これのフォワードを1-2年動かした場合のPFは10%誤差があります。

ここから考えると
①PFは少数第一位まででいい(そんなに精度が良くない)
②優劣をつけるには少なくとも0.2以上の差が欲しい
③フォワードの場合1年以上計測していないと意味がない(取引数300-400必要)


PFはバックテストで見るのがいいようです










2020年11月23日月曜日

プロフィットファクタ は何取引すれば信頼性がでるのでしょうか 1例紹介

 プロフィットファクタはいったい何でしょうか

計算式)総利益÷総損失

1を切ったら利益が出ていないというのは計算式からもわかります。

しかし上はいくらでしょうか

PFは含み損を抱えている時にポジションを閉じなければ無限に値を上げることができます。

PFが大きすぎるのは取引数が少ない、もしくはグリッドトレードのようなものになります。

そこで少し考察を書いてみました。

https://feat.trgy.co.jp/pf/

書きながら検証方法を検討しました。

EAを一つ用意しそのEAが10回取引したときのPF

20回取引したときのPF・・・・1500回取引したときのPFとならべて誤差を確認しました。
使ったEAはKARATH 

挿入したコードはこちらです

input int ExpertCnt=100;

if(OrdersHistoryTotal()>=ExpertCnt)ExpertRemove();


ExpertCntを10から10ステップで1510まで回します。
1510回の根拠はもともとの取引数が1501回だったことによります。





過去最大の乖離率を表示しました。

最終1501回取引したときのPFは1.91です




30回取引したところでの乖離は90%でした。
EAによって差は出ると思いますが30取引のフォワードのPFは全く信用できないということです。

40回取引で大きく下がりました 36% 本来のPF1が1.36になるということです。まだまだですね。

グラフが縦長で醜いのでおなじ%が続くところは非表示にしています。

270回取引をすると10%以下になりました。年間の平日が260日程度ですので毎日1回取引をするEAを1年回した場合PFは1割の誤差ということです。
PF1.0と1.2のEAは同じPFかもしれないということになります。

もう何個かEAを回して同じテストをするともう少し値が見えてくるかもしれません。
例えば5EAを回して10%を切る値を捜した場合一番多く取引数が必要だったEAの値を基準にします。
あくまでも1例紹介ですが、1年程度まわしたフォワード試験のPFは誤差が非常に大きいという結論です。

PFを見るならバックテストがいいようです。
一年(正確には270回)取引をしたEA同士を比較する場合でも1割の誤差があるので0.2程度の差は誤差と意識して使いましょう














2020年10月5日月曜日

FOREX EXCHANGE EA-1グランプリキャンペーン

 FOREX EXCHANGE社のEA-1グランプリのプレゼントEAを作ることになりました。


思えばEA-1グランプリの立案者は私なのですが、いつものようにボランティア的な立場

いや、立案して採用していただいたので逆にこちらがお金を払うべきだったかもしれませんが・・・

そんな中、気を使っていただいたのかキャンペーンのEA開発依頼が来ました。


さて、いつもはアルファベットをごちゃごちゃ並べたよくわからない名前のEAが多いのですが、今回の名前は「KATRATH・カラス」です。

THは舌を噛んでθと発音してください 

詳細はこちら





----- 以下最初に考えていた文章 【没】-----




もともとカナダってやつはよくわからない

首都の名前すら知らない

ただ、やつらの旗には親近感を覚える

赤白の旗を掲げるのは我らが日本とシンガポール、モナコ、マカオの入り口香港、そしてカナダ。共通しているのはシングル0である

奴らの通貨はまた謎が多い。
隣の合衆国に流され、原油が動くとカンガルーと踊る
だが本質は女王陛下の通貨だ

こんなカナダのカナディアンドル通称CADはメジャー通貨の一つ
だが、これについて多くを語るやつはいないだから、僕は調べてみたんだこの謎めいたカナディアン・ドルを!!!

そして見えたのはやつだった。キイロい夕陽をバックに相場を駆け抜けるやつの名は






















2020年9月19日土曜日

ラウンドナンバー

 ラウンドナンバーは本当に影響があるのでしょうか

USDJPY M15の2005-の終値の少数1,2桁の個数を取ってみました

=INT(F1*100)/100-INT(F1)

101.156->0.15
109.012->0.01

となります

この個数を数えてグラフにしました。


0と50(0.50)は少ないのでこの価格にいることは少ないようです。
よくみると10 20 30 40 60 70 80 90(0.1 0.2・・・0.9)もへこんでいます。

つまり
大ラウンドナンバー0にいることはかなり少ない
中ラウンドナンバー0.50は少ない
小ラウンドナンバー0.x0はちょっと少ない

ということかと思います。

ラウンドナンバーに価格が近づくと反転するのか、通過するときは素早く進むのでしょうか

EURUSD

AUDJPY

EURGBP

大体傾向はあっているようです

むかし ROUNDナンバー付近でトレイリングストップするEAを作りましたが、時期によって成績にムレがありました。

活性を計測してトレンドフォローか戻るのかを見ると面白いEAができるかもしれませんね















2020年9月15日火曜日

HUBによる遅延

 サーバー用PCを2台追加で買いました。

1台目i5 9400F モニター4枚引っ付けて開発&仕事用です
2台目i5 10400F モニター無し MT4 13枚 90EAを回していますがCPU使用率5%程度 完全にオーバースペック
そして追加購入したのがi5 9400 を2台モニター無し
こちらは各32MT4を回す予定ですがおそらくオーバースペックと思います。

本日はパーツが届かず 組み立ては明日になる予定ですが、

HUBとLANケーブルが届いたので少し試験をしてみました。

HUBを使うとPINGに影響はあるのでしょうか

そこでTY3までのPINGをMT4で計測してみました。

インターネットは100Mbps
PCのLANは1,000Mbps
LANケーブルは cat.7です
(cat.5以下は100Mbps 7以上は10Gbps対応)
HUBはBUFFALOのLSW6-GT-8NS 3000円くらいの奴です

①直接

②ルーター ループ検出OFF

③ルーター ループ検出 ON

LANケーブルを抜き差しするとMT4がティロリン♪と騒ぎます

さて結果

①直接 3ms

②ルーター ループ検出OFF 15ms

③ルーター ループ検出 ON 22ms

ケーブルはcat.5 cat.7 で比較しましたが差はわかりませんでした。

運用サーバーに安いHUBは使わない方がよさそうです





2020年8月31日月曜日

MT5 の過去データ (スプレッド編)

MT5ーFXが現在AVA、OANDA、フィリップ証券、外為ファイネスト(近日?)と増えています。
余談ですがMT5ーCFD(株価)はOANDA、eワラント

MT4からMT5移行は利用者にとっては便利なことばかりですが、開発者目線では様々な課題があります。もちろん、MT4でできなかったことがMT5でできるといったこともありますので、それhそれで楽しみです。

今回は課題の一つ過去データの中のスプレッドについてです

その前に時間について
MT4ではGMT +2/+3がスタンダードです
日足が1週間5日にするためにはこの時間がいいようです
さて、MT5は
AVA       GMT0
OANDA     GMT+2/+3(冬+2/夏+3)
フィリップ証券   JST(日本時間GMT+9)
外為ファイネスト  GMT+2/+3(予想)

AVA社、フィリップ証券は本社時間です
ちなみにフィリップ証券は結婚できない男のビルだったと・・・
阿部寛 いや 正確には阿部寛 のHPのファンです

さて過去データーとスプレッド
今回はこんなコードをで月別にスプレッドを最低、平均、最高とティック数(Cnt)をし「操作ログ」に出力します。
3社をまとめてEXCELにいれて紹介させていただきます。

#property strict
long Sum[2100][13],Cnt[2100][13],Max[2100][13],Min[2100][13],SP;
MqlDateTime AMSER;
void OnInit()
   {
   for(int i=0;i<2100;i++)
      {
      for(int j=1;j<=12;j++)Min[i][j]=99999;
      } 
   }
void OnTick()
   {
   TimeToStruct(TimeCurrent(),AMSER);
   SP=SymbolInfoInteger(_Symbol,SYMBOL_SPREAD);
   Cnt[AMSER.year][AMSER.mon]++;
   Sum[AMSER.year][AMSER.mon]+=SP;
   if(Min[AMSER.year][AMSER.mon]>SP)Min[AMSER.year][AMSER.mon]=SP;
   if(Max[AMSER.year][AMSER.mon]<SP)Max[AMSER.year][AMSER.mon]=SP;
   }
void OnDeinit(const int reason)
   {
   Print(_Symbol);
   for(int i=0;i<2100;i++)
      {
      for(int j=1;j<=12;j++)
         {
         if(!Cnt[i][j])continue;
         Print(i,".",j," Average: ",Sum[i][j]/Cnt[i][j]," Max: ",Max[i][j]," Min: ",Min[i][j]," Cnt: ",Cnt[i][j]);       
         }
      }
   }


①開始時期3社ともに1971.5からです。
平均、最大、最小すべて固定です。
Cntがほぼ同じです。時差で多少ずれるのかもしれません。
データーも1日1回程度、現在スプレッド1Pips以下ですのでここのデータ試験をしても参考にはなりません。おそらく一方的な右肩下がりになるでしょう




②その後27年ほどしてから急にCntが増えます。


③さらに2004年になると
ここで固定されていたスプレッドが急に10下がります。
2005年にさらに10下がります。







④そして2009年11月~各社揃って変動スプレッドの開始です。




⑤ここまでAVA社は常に他2社より7少ないスプレッドをキープしていましたが、
他社が6以下になると0になります。
マイナススプレッドは無いようです(笑)



⑥スプレッドが1pipsを下回るのは2013年付近です。
このあたりならバックテストに使用できそうです




⑦AVA社は2019.1から他社ー7ではなくなりました。
確かMT5始めたのはこの頃です。
OANDAは2019.7から平均スプレッドが現実的な値になっています。
フィリップ証券と同じ値なので過去データーは実配信データーでなくメタ社の物かもしれません。
フィリップ証券
ローンチした2020.7あたりからスプレッドが増えています。
ここからは実配信データのように見えます。



結論 配信される過去データはメタ社の物

1999年以前は日足でしか使えない(配信数が少ない)
2013年以前はスプレッドが大きい3-5PIPs バックテストしても現実的ではない。
AVA フィリップ証券はローンチ後からリアルデータ

※途中フィリップ証券と間違えて書いているところがあります。
フィリップスはオランダの家電屋さんですね💦
ごめんなさいm(__)m