FX自動売買EAを実装してみよう2(最短コード実装)
概要
この記事では,FX自動売買初心者向けに実装の解説します。
EAの実装をしたことない方から基本を振り返りたい方へ向けた記事となります。
※FXでの取引は自己責任となります。ご了承ください。
FX自動売買の振り返り
FX自動売買の始め方について数本の記事で解説をしてきました。
FX自動売買EAの始め方(初心者用) - Sasahiko’s diary
前回の解説記事(FX自動売買EAを実装してみよう1 - Sasahiko’s diary)では,XM Tradingをインストールするときに入手できるサンプルコードの解説をしました。
あの解説がスラスラ理解できた方はバリバリ実装していきましょう!
しかし多くの方が意味不明だったはずなので,今回は最低限のコードで実装を行います。
最低限のコードで自動売買を体験してみましょう!
まずはコードをご覧ください!
#property copyright "Copyright 2021, Sasahiko 2021.07.21"
#define MAGIC_NUMBER 0001
double lots = 0.1;int Ticket = 0;
void OnTick(){if(Hour()%2==0 && OrdersTotal()==0){
Ticket = OrderSend(Symbol(),OP_BUY,lots,Ask,0,0,0,NULL,MAGIC_NUMBER);}
if(Hour()%2==1 && OrdersTotal()==1){int _ = OrderClose(Ticket,lots,Bid,20);}}
以上です!たった6行で実装が完了してしまうのですね!
(1行目はコードの著作権表示のため,実質5行ですね!)
では,ここから1行ずつ解説していきます!
①#property copyright "Copyright 2021, Sasahiko 2021.07.21"
著作権の表示です。なくても動きますがコピペで動かすときには一応こちらも消さないでください!
②#define MAGIC_NUMBER 0001
自動売買をするときにはアルゴリズムごとのIDを振る場合が多いです。そのIDをmagic number と呼びます。複数のアルゴを独立に動かす際にはmagic number が必須なのです。
③double lots = 0.1;int Ticket = 0;
取引ロットを指定しています。また,「Ticket=0」では,取引番号の初期定義です。
④void OnTick(){if(Hour()%2==0 && OrdersTotal()==0){
「OnTick()」では現在の取引価格が変動するたびに実行される関数です。「Hour()」と「OrdersTotal()」ではそれぞれ現在時刻(時)と現在のポジション数を取得しています。つまり,ここでは偶数時でポジションを持っていない場合には{}の中身を読み込みます。
⑤Ticket = OrderSend(Symbol(),OP_BUY,lots,Ask,0,0,0,NULL,MAGIC_NUMBER);}
「 OrderSend()」で注文を送信します。()の中身では(現在チャート,買い注文,取引ロット,成り行き注文,スリッページ,ストップロス,リミット価格,コメント,マジックナンバー)を指定しています。
⑥if(Hour()%2==1 && OrdersTotal()==1){int _ = OrderClose(Ticket,lots,Bid,20);}}
奇数時で保持ポジションが1なら決済をしなさいというコードです。「OrderClose」で決済注文を送信します。
つまり,このコードは奇数時に買って,偶数時に売るEAということです。
(1時に買い,2時に決済,3時に買い,4時に決済)
もちろん大負けします。速攻で資金がゼロになりますが,プログラミングはもっとも単純なひな形から少しずつ複雑さを加えるのが良いと思います。
さぁ,皆様もここからEA作成を始めていきましょう!!
まとめ
自動売買EAを動かすだけならたったの5~6行で十分なのです!
簡単なものから少しずつ工夫を加えていきましょう!
次回はバックテストの動かし方を解説します!
twitter : 笹彦 fx自動売買EA開発者 (@trader_brothers) | Twitter
Instagram : https://www.instagram.com/fxtrader_sasahiko/