2011/10/01

DWTHarrをMQL5に書き換えました。■■■

途中で放り投げたDWTHarrのMQL5版を作成してみました。
元ネタは、こちら

コード

//+------------------------------------------------------------------+
//|                                                      DWTHarr.mq5 |
//|                                          Copyright 2010, bighope |
//|                       http://expertadviser-bighope.blogspot.com/ |
//+------------------------------------------------------------------+
#property copyright "Copyright 2010, bighope"
#property link      "http://expertadviser-bighope.blogspot.com/"
#property version   "1.00"
//#property indicator_separate_window//サブチャート
#property indicator_chart_window//メインチャート
#property indicator_buffers    1
#property indicator_plots      1
#property indicator_type1         DRAW_LINE
#property indicator_style1        STYLE_SOLID
#property indicator_color1    Red
input int N     =  10;//対象データ数(2のN乗)
input int HBs   =  4;//高周波カット位置
input int LBs   =  10;//低周波カット位置
input int Shift =  0;//データのシフト数
int DWTPeriod;
//---------buffers
double IDWT[];
double g[];
double gs[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,IDWT,INDICATOR_DATA);
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0);
   DWTPeriod =(int)MathPow(2,N);
   ArrayResize(g,DWTPeriod);
   ArrayResize(gs,DWTPeriod);
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                    const int prev_calculated,
                    const datetime& Time[],
                    const double& Open[],
                    const double& High[],
                    const double& Low[],
                    const double& Close[],
                    const long& Tick_volume[],
                    const long& Volume[],
                    const int& Spread[])  
  {
//---
   int     k;
   int     DWTf,z;
   double  sum,difference;
   for(k=0;k<DWTPeriod;k++)g[k] = Open[rates_total-k-Shift-1];
   DWTf = DWTPeriod/2;
   //変換作業
   for(z=1;z<=N;z++)
   {
      for(k=0;k<DWTf;k++)
      {
         sum        =(g[k*2]+g[k*2+1])/2;
         difference =(g[k*2]-g[k*2+1])/2;
         gs[k]      =sum;
          //フィルタリング作業
          if((LBs>=z)&&(z>=HBs)){gs[DWTf+k] = difference;}else{gs[DWTf+k] = 0;}
       }
      ArrayCopy(g,gs);
      if(N>z) DWTf =DWTf/2; 
    }
      
    //逆変換
    for(z=1; z<=N ;z++)
    {
     
      for(k = 0; k < DWTf; k++) 
      {
         sum         =  g[k]+g[k+DWTf];
         difference  =  g[k]-g[k+DWTf];
         gs[2*k]       = sum;
         gs[2*k+1]     = difference;
      }
      ArrayCopy(g,gs);
      if(N>z)DWTf =2*DWTf;
     }

    //プロット
       for(k=0;k<DWTPeriod;k++){
        IDWT[rates_total-DWTPeriod-Shift+k] = g[DWTPeriod-k-1];
       }
   return(rates_total);
  }
//+------------------------------------------------------------------+


 

コメント

実は、コード表示のテストだったりします。^^;

2011/09/23

ATC2011参加締切5時間前■■■

ブログをしばらくお休みさせて頂きて、ようやく、年に一度のお祭り(ATC2011)の参加資格を手に入れることができまっした。ということで、今回は、ATC2011の楽しみ方(祭りの前編)をネタにしたいと思います。


ルール

代表的なルールを挙げると。
・使用するプラットフォームは、Metatrader5。
・テキストファイルなどのデータファイルは、使用可能だが、DLL及びEXEの使用は禁止。
・初期投資金額は、10,000(USドル) レバレッジ100
・取引可能通貨ペア12ペア 一覧
・1トレード当たりの最大ロット数5ロット、最少ロット数0.01ロット、合計ロット数15ロット
・大会期間は、2011年10月1日~12月31日
・予備テスト期間2011年1月1日~9月1日の間及び大会期間中に5回以上の取引を行うこと。
・コード内にバグの発生がなく、CPUリソースとPCメモリに対して効率的であること。
・予備テスト期間と、大会中で、EAの動作が異ならない事。
・スキャルピング禁止
などなど・・・ 詳しく知りたい方は、ココ



ルールから・・・

データファイルの使用が可能なため、事前に計算が必要な手法(NN)や大量な計算をする手法(回帰)、が可能です。また、予備テストの高速化をすることも可能でしょう。ただし、DLL禁止のため、必要なコードをMQL5コードに変換することを強いられます。
取引可能通貨が、12ペア用意されており、マルチに取引することが可能です。また、MT5は、MT4より細かく時間軸が設定できます。(M1/M2/M3/M4・・M12/ect)
ロット規制について、簡単なグラフを作ってみました。(縦軸がレバレッジ、横軸が証拠金、単純化のため、ペア単価を1として計算しています。)大会ルールでレバが、100以下となっているので100以上は無視してください。最大ロット(15ロット)が、規制されているため、証拠金が増えれば自動的にレバが下がることがわかります。ちなみに、証拠金が70k$時の15ロットは、レバ20となります。早期(大きなDD前)に、いかに証拠金を積み上げることができるかが勝敗を大きく左右することになるわけです。
REVA
スキャルピングの禁止は、うふふ・・



裏ルール?

大会に出場するEAは、事前審査に通過しなければなりません。もちろんEA内にバグがあってはなりませんが、バグがなくても以下の内容で、受け付けてもらえないことがあります。
・予備テストの時間超過(前回は、15分と言われていましたが、詳細は不明です。)
・予備テスト期間で、減益のEA(テストしてみたら蹴られました。下図が証拠です。)
tes
つまり、参加するEAがすべて、予備期間の収支をプラスで乗り切ったEAと言うわけです。



今回提出したEA

EA名:kazuya(一八)足したら9(^。^)y-.。o○
取引通貨:CHFがらみ以外の全通貨ペア(計9ペア)
成績:
kazuya
見解:初期の3か月の期間で見ると、51k$程度。。。orz



まとめ

いろいろなサイト、ブログで成績を上げている方がいますが、グラフを見たときに、どれだけ早く一定勾配(15ロット)になるかを見ると、そのEAの期待度がわかるのではないでしょうか?
『DD低いからもっと上げればよかったんじゃないの? 』とは、言わないでください。上げられない理由があるんです。。。orz でも、これが今の私の限界です。あとは、高見の見物と言うことで。。(^_^)/ッ