EXPERT ADVISOR

指標バスター2012beta 対応EA開発の方法について

指標バスター2012beta 対応EA開発の方法は非常にシンプルです。
ほんの数行を足すことで対応EAとして利用することが可能です。

まず、指標バスター2012 betaに同梱されている、[EconomicIndicatorBusterClient_Sample.mq4] をご覧ください。


#import "EconomicIndicatorBusterClient.dll"
   int IsBustered(string symbol, int gmt, double timeCurrent);
#import

extern int GMT = 3;
extern int StopLossPips = 100;
extern int TakeProfitPips = 100;
int MagicNumber = 1234;

int init() {
}

int deinit() {
   return(0);
}

int start() {
   // トレードのシグナル判定
   int signal = getTradeSignal();
   // シグナルが発生した場合
   if (signal == OP_BUY || signal == OP_SELL) {
      // シグナル発生時に指標バスターの時間フィルタ範囲内の場合は取引しない
      int isBustered = IsBustered(Symbol(), GMT, TimeCurrent());
      if (isBustered == 1) {
         return;
      }

      double openPrice;
      double takeProfitPrice;
      double stopLossPrice;
      
      switch (signal) {
         case OP_BUY:
            openPrice = Ask;
            stopLossPrice = openPrice - StopLossPips * Point;
            takeProfitPrice = openPrice + TakeProfitPips * Point;
            break;
         case OP_SELL:
            openPrice = Bid;
            stopLossPrice = openPrice + StopLossPips * Point;
            takeProfitPrice = openPrice - TakeProfitPips * Point;
            break;
      }      
      
      
      OrderSend(Symbol(), signal, 1, openPrice, 5,
             stopLossPrice, takeProfitPrice, NULL, MagicNumber, 0, CLR_NONE);
      
   }

   return(0);
}

int getTradeSignal() {

   // 既にポジションを持っている場合は何もしない
   bool hasPosition = SelectOrderByMagicNumber(MagicNumber);
   if (hasPosition) return (-1);
   
   // Sampleでは1時間足のRSIをシグナル判定とする
   double previouseRsi = iRSI(Symbol(), PERIOD_H1, 14, PRICE_CLOSE, 2);
   double rsi = iRSI(Symbol(), PERIOD_H1, 14, PRICE_CLOSE, 1);
   
   double rsiBorder_Buy = 20;
   double rsiBorder_Sell = 80;

   // RSIがBorderをまたいだらSignal
   if (rsiBorder_Buy < rsi && previouseRsi < rsiBorder_Buy) return (OP_BUY);
   if (rsi < rsiBorder_Sell && rsi < previouseRsi) return (OP_SELL);
   
   return (-1);
}

// MagicNumberに該当するポジションをSelectする
bool SelectOrderByMagicNumber(int magicNumber) {
   for (int i = OrdersTotal() - 1; 0 <= i ; i--) {
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == FALSE) break;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == magicNumber) {
         return (true);
      }
   }
   return (false);
}
//+------------------------------------------------------------------+



このように非常にシンプルなソースコードが記述してあります。
まずは、指標バスター2012のAPIを呼び出すための外部DLLを定義します。

#import "EconomicIndicatorBusterClient.dll"
   int IsBustered(string symbol, int gmt, double timeCurrent);
#import


次に、init,deinitですが、指標バスター2012を利用する上で、こちらで何か追記する必要はございません。
実際に指標バスター2012とやり取りする必要があるのは、OrderSendの直前になります。
こちらで、取引可能な状態かを IsBustered メソッドにて確認してください。
IsBustered メソッドは先ほどインポートする記述をしたdll側のメソッドです。

毎tickごとに確認をしてもよいのですが、バックテスト高速化のテクニックとして、OrderSendの直前での確認をするといった最小限の呼び出しにすることが推奨されます。

指標バスター2012beta 対応EA 動作環境について

指標バスター2012beta 対応EAを動作させる環境に必要なのは、指標バスター2012betaのインストールのみです。
Visual C++ のライブラリや.NET Frameworkのライブラリなどを別途ご用意いただく必要はありません。

また、指標バスター2012betaの動作に必要なライブラリなどは指標バスター2012betaのセットアップ時に、セットアップパッケージが自動的にインストールする仕組みになっております。

指標バスター2012beta API について

メソッド

名前 説明
パブリック メソッド IsBustered 指標バスターのフィルタ対象の時間帯・通貨ペアかを取得します。
パラメータ
Sumbol, GMT, TimeCurrent()
  • 現在の通貨ペア文字列

引数
0,1
  • 0:フィルタ対象ではない(取引可能)
  • 1:フィルタ対象(取引不可)

指標バスター2012beta 対応EAの表記

指標バスター2012 beta対応EAであることを表示するためのラベルです。
画像を保存してご利用ください。

Compatible_EIB.png

指標バスター2012 対応EA化を弊社に依頼希望の方

指標バスター2012 対応EA化を弊社に依頼することができます。
本サービスではEAのソースコードの内容などにより、解析や実装にかかる費用が変わります。
指標バスター2012 対応EA化をご希望の方はまずはお見積もりください。

弊社にて編集するには『mq4』という元のファイルが必要です。
修正を行った『mq4』ファイルを返送いたします。

その他、編集のサポートも致しますのでどうぞご検討ください。


尚、弊社ページのユーザー登録をされておりますとサポートが迅速に行えます。
この機会にぜひご登録ください。

ご相談・お申し込みはメールにてお問い合わせください