また昨日もFXの自動売買プログラミングをしておりました。
最近はずっとチャートとにらめっこの日々です。
チャートを眺めていると、毎日1〜2個ほどの新しい手法のアイデアが湧いてくるので、頑張ってそれを実際にプログラミングしております。
最近アイネット証券の「ループイフダン」やマネースクエアの「トラリピ」などが流行っているので、その手法をMT4の自動売買で自分専用にカスタマイズしてみました。
MT4で少額運用できるトラリピ系EAを自作しよう!
ちなみに「トラリピ」とは、110.000~110.050などの一定のレンジを設定して、そこを価格が通過したらなんどもトレードしてくれるというタイプの手法です。
このようにレンジ内にたくさん網目のように指値のトラップを仕掛けておくことによって、価格が動けば動くほど、なんども「チャリンチャリン」と決済してくれるというのが魅力ですな。
ただ、アイネット証券などのFX業者が提供しているループイフダンやトラリピは最小ロット数がかなり多すぎるので、何個もトラリピを設置するとなると、数十万レベルの資金が必要になってしまうんですよね…。
それに、損切りの設定などもあまり細かく指定できないっぽいですし。
トラリピを仕掛けるレンジ幅についても、1pips単位などのスキャルピングは無理だったと思いますし。
「俺はもっとスキャルピング的に、1pipsとか2pipsレベルのマイクロトラリピのシステムを作って、相場の動きを根こそぎ、かっ去らいたいんじゃ〜」
というわけで、笑
自作のマイクロトラリピEAを作ってみました。
さっそく走らせてみましたが、これがなかなかに好調です。
1〜2pipsという超細かいレンジで無数のトラリピを仕掛けていくので、面白いほど頻繁に勝ちトレードが積み上がっていきます。
見ていてめっちゃきもちいい笑。
とはいえ、損切りのルールの明確に設定しているので、トータルで安定してプラスになってくれるのでは!?と期待しております。
では、そんな、
トラリピ系のシステムをメタトレーダー(MT4)のEAで書く際のざっくりとした概要を紹介しますね!
4時間足の中で行うレンジトラリピ
まず、今回のシステムである「マイクロトラリピ」の基本概要を列挙します。
- 1pipsの価格帯全てにトラリピを仕掛ける
- 決済は同じく1pips
- 損切りは直近の4時間足を価格が割った時点で行う
文章で書いてもかなりわかりにくい…汗
と思うので、図にしてみました↓
こんな感じで、基本的に直近の4時間足の中に今の価格があるときに発動させます。
現在の価格が直近の4時間足の中に収まっている=レンジ相場
と、ある程度仮定することができるので、トラリピの戦略がハマりやすいかなと。
損切りラインの設定
トラリピを行う上で、一番のネックになるのが、
「どこで損切りするのか?」
ということですよね。
網の目のようにエントリーポイントがあるので、必然的に大量にポジションを持つことになります。
なので、一度逆行し始めた時にきちんと損切りできないと、確実にボコボコにやられて再起不能になってしまいます。
トラリピは、レンジ相場にうまくハマれば面白いほどチャリンチャリンと稼げるのですが、
トレンドが発生して価格がストーンと落ちていったりする場面では、含み損を抱える宿命にあるという弱点があります。
その含み損を放置せずに、きちんと損切りできるかどうか?ということが、トラリピで勝てるかどうかのカギなのですな。
今回、ぼくの作っている「マイクロトラリピ」システムでは、直近4時間足の上限を買いと売りそれぞれの損切りラインにしてみました。
ドル円の4時間足というのは、およそ2〜30pipsで推移することが多いです。
さらに4時間足の仲値を割り出し、
・上半分の領域では売りエントリだけ
・下半分の領域では買いエントリだけ
・一度に抱える最大ポジション数は10ポジほど(1pipsずつ仕掛けるトラリピなので、つまり最大でも10pipsの損切り)
というルールを追加することによって、損切りリスクを出来るだけ少なくしています。
これならリスクをある程度コントロールしつつ、トラリピの恩恵を受けることができるというわけですな。
MT4のEAで書くトラリピシステムのコーディング
さて、肝心のEAのコードですが、ちょっと書くのに苦労しましたね〜汗。
でも、プログラミングの初心者でも一応できましたぞ。
一番キモとなる1pips単位のトラリピ幅の設定方法を紹介します。
(お好みで2pipsとかでも、OK。後からいくらでも自由に変えられます)
まず、関数をいくつか宣言しておきます。
小数点まで入る関数なので、int型ではなく、必ず「double型」で宣言しておきましょう。
double Jyougen;
(4時間足の高値から1pipsほど下の価格を代入する関数)
double Kagen;
(4時間足の安値から1pipsほど上の価格を代入する関数)
これでまずは4時間足の中でトラリピする「枠」のようなものを設定しておきます。
で、さらにそのあとで、1pipsずつの関数も得られるように、
double Jyougen1; double Jyougen2; double Jyougen3; ..... double Kagen1; double Kagen2; double Kagen3; .....
という関数も宣言しておきましょう。
ここまでが準備という感じ。
1pipsごとに関数でトラリピの枠を設定していく
関数が宣言できたら、そこに1pipsごとの価格情報を代入していきます。
MT4には任意の足の高値を取得できる『iHigh』などの便利な定義済みの関数がたくさん用意されているので、割とカンタンにトラリピで設定したい価格をゲットできます。
まずは上の枠から。
4時間足の高値から1pips低い「Jyougen」
Jyougen=iHigh(NULL,PERIOD_H4,1)-0.01;
これでOK。
安値も同じような感じで、
Kagen=iLow(NULL,PERIOD_H4,1)+0.01;
と書いておけば、JyougenやKagenの中に、価格情報を代入できます。
1pipsごとの細かいトラリピの価格もこの要領で書いていけば設定できます。
Jyougen1=iHigh(NULL,PERIOD_H4,1)-0.02; Jyougen2=iHigh(NULL,PERIOD_H4,1)-0.03; Jyougen3=iHigh(NULL,PERIOD_H4,1)-0.04; ..... Kagen1=(iLow(NULL,PERIOD_H4,1)+0.02); Kagen2=(iLow(NULL,PERIOD_H4,1)+0.03); Kagen3=(iLow(NULL,PERIOD_H4,1)+0.04); ......
エントリーと利食いのコード
では、実際にエントリーする際のコードも載せておきましょう。
if(Bid<Kagen1&&Bid>Kagen&&Bid<Nakachi &&TicketL1<1&&Spread<MaxSpread&&TTime==1) { TicketL1=OrderSend(Symbol(),OP_BUY,0.01,Ask,50,0,0,NULL,0,0,clrGreen); }
こんな感じです。
ちなみに、「Nakachi」という関数がありますが、これについてはメタトレーダーで自動売買!任意の足の仲値を割り出す方法で詳しく解説しています。
Nakachiとは、カンタンに言うと、4時間足などの任意の仲値を割り出して代入しておく関数になります。
↑のコードの場合、
価格がKagen1よりも下にあって、かつKagenよりも上にあり、さらに仲値よりも低い場合にのみ、買いエントリが発動すると言う仕組みです。
で、利食いの値は、
Kagen1よりも1pipsほど値段が上がった時に設定しておけば、OKです。
(スプレッド分を軽く上乗せして1.5pipsで利確するように設定しました。)
if(Bid>(Kagen1+0.015)&&TicketL1>1) { TicketL1Close=OrderClose(TicketL1,0.01,Bid,50,clrAliceBlue); }
こんな感じですね。
これで、価格が1pipsの幅の中を行ったり来たりしてくれれば、毎回チャリンチャリンと超小幅のレンジトレードをしてくれます。
同じようにKagen2,Kagen3,Kagen4…というようにたくさん1pipsごとにしかけておけば、マイクロトラリピシステムの完成です。
損切りは、一律で「直近の4時間足を割ったら」です。
ロングエントリの場合…
if(Bid<iLow(NULL,PERIOD_H4,1)&&TicketL1>1) { TicketL1Close=OrderClose(TicketL1,0.01,Bid,50,clrAliceBlue); }
こう書いておけば、レンジを抜けた時には損切りしてくれます。
まとめ
ざっくりとでしたが、これがMT4のEAでトラリピさせるプログラムの概要になります。
Ticketのことなど、細かい部分は省きましたが、なんとな〜く「メタトレーダーでもトラリピのシステムを自作できるんや!?」
と思っていただけたら幸いです。
ぼく自身、約定させる価格をもっと厳密に設定したりして、さらにこの「マイクロトラリピシステム」を研ぎ澄ませていこうと思います。
運用の結果などはまた追って報告しますね〜。
記事カテゴリ:投資・トレード