fx

[第2回]エンベロープとSMAを用いたトレード手法

前回検証したエンベロープにフィルタをかけて勝率を上げたいと思います。
フィルタとは、よりエントリーする条件を限定しトレードの精度を上げることである。
今回、用いるフィルタはSMA(単純移動平均線)でエンベロープのトレード精度を上げたいと思います。
ゴールデンクロスとデッドクロスをベースにフィルタをかけたいと思います。
パラメーター設定
エンベロープの値
期間は14本を使用
シグマの値は0.1を使用
単純移動平均線の値
短期:24本(24時間)
長期:72本(72時間)
エントリー・エグジットの条件
買いエントリー
1本前のローソク足の始値が下のエンベロープよりも下
1本前のローソク足の終値が下のエンベロープよりも上
短期単純移動平均線>長期単純移動平均線
売りエントリー
1本前のローソク足の始値が上のエンベロープよりも上
1本前のローソク足の終値が上のエンベロープよりも下
短期単純移動平均線<長期単純移動平均線
買いエントリーのエグジット
1本前のローソク足の終値が上のエンベロープよりも上
短期単純移動平均線<長期単純移動平均線
売りエントリーのエグジット
1本前のローソク足の終値が下のエンベロープよりも下
短期単純移動平均線>長期単純移動平均線
使用したソースコード
//product omurin

//マジックナンバーの定義
#define MAGIC 1113

//Moving Averages//
extern int Fast_MA_Period=24;
extern int Slow_MA_Period=72;
extern int MA_Method=0;
extern int MA_Shift=0;
//Envelope
extern int Envelope_Period=14;

extern double Lots = 0.1; //取引ロット数
extern int Slip = 10; //許容スリッページ数
extern string Comments = “”; //コメント

//変数の設定//
int Ticket_L = 0; //買い注文の結果をキャッチする変数
int Ticket_S = 0; //売り注文の結果をキャッチする変数
int Exit_L = 0; //買いポジションの決済注文の結果をキャッチする変数
int Exit_S = 0; //売りポジションの決済注文の結果をキャッチする変数

//+——————————————————————+
//| |
//+——————————————————————+
//初期化//
//移動平均線//
double Fast_SMA=0;
double Slow_SMA=0;

//エンベロープ
double High_Envelopes=0;
double Low_Envelopes=0;
//+——————————————————————+
//| |
//+——————————————————————+
int start()
{
//移動平均線
Fast_SMA=iCustom(NULL,0,”Moving Averages”,Fast_MA_Period,MA_Shift,MA_Method,0,1);
Slow_SMA=iCustom(NULL,0,”Moving Averages”,Slow_MA_Period,MA_Shift,MA_Method,0,1);

//エンベロープ
High_Envelopes=iCustom(NULL,0,”Envelopes”,Envelope_Period,0,”Exponential”,”Close”,0.1,0,1);
Low_Envelopes=iCustom(NULL,0,”Envelopes”,Envelope_Period,0,”Exponential”,”Close”,0.1,1,1);

//買いポジションのエグジット
if((High_EnvelopesClose)
||(Fast_SMA>Slow_SMA)
&& (Ticket_S != 0 && Ticket_S != -1))
{
Exit_S = OrderClose(Ticket_S,Lots,Ask,Slip,Blue);
if(Exit_S ==1)
{
Ticket_S = 0;
}
}

//買いエントリー
if(((Low_Envelopes>Open)&&(Low_EnvelopesClose)
&&(Fast_SMA>Slow_SMA)
&& (Ticket_L == 0 || Ticket_L == -1)
&& (Ticket_S == 0 || Ticket_S == -1))
{
Ticket_L = OrderSend(Symbol(),OP_BUY,Lots,Ask,Slip,0,0,Comments,MAGIC,0,Red);
}

//売りエントリー
if(((High_EnvelopesClose))
&&(Fast_SMA