ベースとなるEA作成方法
ベースとなるEA作成方法に関しては下記、記事を確認してください。
EAの変更方法
上記サイトで作成するEAは、下図のインジケーター部分に売買設定を変更することでEAの売買設定を変更することが出来ます。
新たなインジケーターを追加する場合、パラメーター設定部分にインジケーターを追加する必要がある為、初心者は上記サイトに戻り新たにインジケーターを追加した方が無難だと思いますよ。
上記インジケーターには、前日の終値が5日移動平均線より上で引けていればロング、前日の終値が5日移動平均線より下で引けていればショートという内容が入っています。
「ret=1」はロング及びショートポジションのクローズ設定、「ret=-1」はショート及びロングポジションのクローズ設定として使用できます。
例えば、
double Maopen1=iMA(NULL,TimeScale,1,0,0,1,i);を追加し、
if (Ma1>Ma2)→ if (Ma1>Ma2 && Ma1>Maopen1)
と変更すれば、前日の終値が5日移動平均線より上かつ前日が陽線であればロングという内容に変更できます。
インジケーター内のプログラムを変更することで、EA作成の自由度は高まりますね。
売買設定に関して
エントリに関しては、インジケーター内の「ret=1」でロングを入れる設定となっています。
クローズ判定に関してですが、
- if(LongNum!=0 && (CloseStrtagy1!=1 ) )
- {
- ExitBuy=1;
- LongNum=0;
- }
- else
「CloseStrtagy1!=1」となっている場合、エントリしたときの条件が崩れるとクローズとなります。
今回の場合であれば、前日の終値が5日移動平均線を下回ればクローズとなります。
「CloseStrtagy1!=1」→「CloseStrtagy1==-1」と!を取って「=」を追加することで、「ret=-1」の部分にクローズの設定を追記すればクローズ設定も変更できます。
例えば、前日安値を下回ればクローズと設定する場合、
- int Indicator1_4(int i,int TimeScale,int LineType,int MaPer, int PType)
- {
- double Ma1=iMA(NULL,TimeScale,1,0,0,0,i);
- double Malow1=iMA(NULL,TimeScale,1,0,0,3,i);
- double Malow2=iMA(NULL,TimeScale,1,0,0,3,i+1);
- double Ma2=iMA(NULL,TimeScale,MaPer,0,LineType,PType,i)
- int ret=0;
- if (Ma1>Ma2)
- {
- ret=1;
- }
- else if (Malow1<Malow2)
- {
- ret=-1;
- }
- return(ret);
- }
とすれば、前日終値が5日移動平均線を越えていればロング、前日安値を更新すればクローズというEAを作ることが出来ます。
安値を更新したタイミングでポジションを閉じる形にする為には、エグジット関連関数をいじる必要がありますが、現在の私の理解ではそこまで出来ていないので後日の宿題と考えています。
EA作成の成果
今回、説明した方法で作成したEAですが、2015年1月~2019年12月までのバックテストした結果です。
何度もトライ&エラーを繰り返して右肩上がりでのEAが作れたので、今度はフォワードテストを行いながら修正を続けようかと考えています。
同時進行で他のEAも作成中なので、形が出来ればまた紹介しますね。
まとめ
今回、紹介したEA作成に関して一番いいところは、プログラムに関して良く分かっていないことがあっても、とにかくEAが動くということです。
バックテストでEAが動くことで、プログラムの間違い、インジケーターの修正個所などがすぐに分かるので勉強は捗り、テクニカルへの理解が深まります。
自動売買だけでなく、裁量取引きでの実績にも繋がるので、裁量取引きで行き詰っている人は是非にもEA作成にトライすることをお勧めしますよ。
EAに関する記事はこちらのカテゴリーをみてくださいね。