FX自動売買システムツール(EA)の作り方やプログラミングのコードを解説!

今回はFX自動売買ツールの作り方やプログラミングについてお話していきます。

 

自動売買ツールは自分自身がチャートを見ていなくても、コンピューターが勝手にトレードしてくれるものです。

 

とても便利なツールですが、自分で作る方法はあるのか?と気になっていますよね。

 

  • 自動売買ツールを自分で作ってみたい!
  • 自動売買ツールを作ってみたいけど難しいのではないか?
  • 自動売買ツールのプログラミングを学ぶメリットは??

などなど自動売買に興味のある方には必見の内容となっております。

 

是非最後までご覧くださいませ。

 

FX自動売買システムツール(EA)をプログラミングできた方がいい理由とは?

 

FX自動売買ツールを自作できた方がいい理由は大きく5つあります。

 

EAプログラミングのメリット
  • 自分のロジックやアイデアを形にできるため
  • プロのプログラマーに自動売買ツールの作成依頼をすると高くつくため
  • スキルが身につけば人材としてめちゃめちゃ強いため
  • 良い自動売買ツールができれば不労所得も可能なため
  • プログラミングを覚えることで問題解決能力がアップするため

 

上記の5つが自動売買ツールを自作できた方がいい理由になります。

一つ一つ説明していきますね。

 

自分のFX売買ロジックを形にできる

 

FXの売買ロジックというのはたくさんの種類があるため、自分が普段売買しているロジックと全く同じ自動売買ツールが存在することはほぼないと言っていいでしょう。

 

「もっとこんな機能があったらいいのになー」

と思うことはよくあるはずです。

 

そんな時に自分でプログラミングをして、自分のロジックの形にできれば、とても強いですよね。

 

また自分自身でロジックの修正などをし、洗練されたものにすることによって、自分の頭の中の売買ロジックをそのまま機械的に売買させることが可能になるのです。

 

これを他の方に依頼すると、なかなか伝えるのも難しいですし、料金も高くなってしまいます。

 

そのためシステムトレードをする際に、自分で自動売買ツール作成ができるのは大きなメリットになります。

 

FX自動売買(EA)作成をプログラマーに依頼すると高い

 

自分のロジックを自動売買ツールにする際、プロのプログラマーに頼むとなると高額な料金がかかります。

 

簡単なロジックでも3万円から10万円、難しいものだと10万円から30万円以上のものもあります。

 

さらに修正や機能追加なども毎回料金が発生しますし、バックテストを取りロジックの変更も料金がプラスでかかってしまいます。

 

理想のツールにこだわって作成依頼をすると、結果的に高額な料金を支払らうことになってしまいます。

 

そのため自分で自動売買ツールを自作できたほうがいいですよね。

 

FXプログラミングを覚えれば人材として有望

 

現在プログラミングやIT関係の分野は、とても市場が伸びております。

 

その傾向は投資の世界でも一緒です。

 

そのためFXのEA作成やMT4のインジケーターの作成などの分野は、需要が多く人材が足りていない状況です。

 

FXの自動売買ツールなどのプロミングスキルがあれば、仕事に困ることもありませんし、大きく稼ぐことも可能になります。

 

良いFX自動売買システムツールができれば不労所得も可能

 

不労所得

多くの人が憧れる夢でありますよね。

 

その不労所得を手に入れるために、自動売買ツールはとても現実的です。

 

良い自動売買ツールができれば毎月安定した利益を出すことが可能になりますし、自分で作成したものなら、収益が悪くなった時に原因分析し、修正することも可能になります。

 

さらに作成したEAを販売したり、口座紐づけで配ることによってIB報酬を得ることも可能です。

 

EAは利用する側より、開発する側の方が断然有利です。

 

EAで月の生活費分稼ごうと思ったら、

月利10%のEAの場合なら月30万の利益が欲しければ300万円入れる必要があります。

 

300万をEAにすべて投資するのは少し勇気がいりますよね?

 

しかし開発側になればEA1つで数万円、紹介料も1Lot往復で500~1000円ほどの紹介料が入るためにノーリスクで不労所得が狙えます。

 

これを考えたらとてもいいビジネスモデルだと思いませんか?

 

自分で運用するのもよし、開発者となっても良しと不労所得を目指すのにはもってこいの副業といえるでしょう。

 

問題解決能力がアップ

 

プログラミングを勉強していると、問題解決能力がアップすると言われています。

 

なぜなら、プログラミングをやっていると様々な課題が出てくるためです。

 

一文字でも数式が違うと正常に動きませんし、エラーが発生した時にどこが問題なのか?何が原因なのか?と考える癖ができます。

 

原因を調査し改善していくのを繰り返すことで、あなたの問題解決能力はアップすること間違いなしです。

 

この問題解決能力・ロジカル的思考はプログラミングだけでなく、あなたの本業やプライベートなどでも役に立つこと間違いなしです。

 

さらにFXをされているのであれば興味がある分野だと思いますので、自動売買ツール作成のプログラミングを学ぶ価値は大いにあるでしょう。

 

FX自動売買システムツール(EA)を自作するのに必要なプログラミング言語とは?

 

FX自動売買ツールを自作するのに必要なプログラミング言語は、主にMQLという言語を使います。

 

MQLとはMetaTraderで使用されるプログラミング言語で、カスタムインジケーターや自動売買ツール(EA)を作成するのに必要な言語になります。

 

ベースはC言語でできているため、プログラミングを少しでもいじったことがある方には覚えやすい言語かと思います。

 

「プログラミング初心者なんだけど、プログラミングって難しそう・・・」

と思う方もいるかと思います。

 

しかし、MQL言語はプログラミング言語の中でも、分かりやすい言語だと私は思います。

 

なぜならば、使う関数はそこまで多くないですし、ある程度のパターンや流れがあるため、一度自動売買ツールを作ってしまえば、あとはロジックの部分だけ入れ替えるだけで完成。

 

最初は作成するのに苦労するかと思いますが、2~3か月ほど勉強すれば覚えられる言語です。

 

さらに一度作成してしまえば、違うロジックで自動売買ツールを作成するのは、最初より楽になります。

 

他にもPythonやC言語を使ってプログラミングする方法もありますが、そちらは難易度が一気に上がってしまいます。

 

MQL4はMT4専用の関数などが多数あるため、MQL言語を使用し自動売買ツールの作成にチャレンジした方が無難でしょう。

 

FX自動売買システムツールを自作する作り方

 

FX自動売買システムツールを自作するまでの流れは以下の通りになります。

 

  1. ロジックを決める
  2. ロジックを関数を使い数式に表す
  3. 動作の確認をする
  4. バックテストを取る
  5. 修正・機能の追加をする

 

以下の流れを繰り返し行い自動売買ツールは作っていきます。

 

ロジックを決める

 

まずは自分の売買ロジックから考えてみましょう。

 

このロジックを考える部分はそこまで深く考えなくてもいいです。

 

なぜならばある程度のロジックができたら、一度作成してみてバックテストを取り、修正という流れの方が効率がいいからです。

 

例えばですが、

ストキャスティクス(5.3.3)のメイン線が80以上で売り

ストキャスティクス(5.3.3)のメイン線が20以下で買い

という自動売買のロジックを考えたとします。

 

一度作成した後に、バックテストやデモトレードなどで動かしてみて結果がよくなければ、

90以上10以下に変えてみる

ストキャスティクスの設定を(7.1.1)に変えてみる

などロジックの修正をし、いい結果が出るまでやり続けるというのが大事です。

 

どんなロジックでも一発でいい結果が出ることは正直少ないです・・

 

そのため、ある程度アイデアができたら、まず作成してみるのをおすすめします。

 

ロジックを関数を使い数式に表す

 

#property copyright ""
#property link ""
#property version "1.00"
#property strict


int OnInit()
{

return(INIT_SUCCEEDED);
}


extern string Note0="";//----------基本設定----------
extern int magicnum = 5555;//マジックナンバー
extern double Lots=0.01; // ロット数
extern int K = 5;//%K
extern int D = 1;//%D
extern int S = 1;//スローイング

int NowBars=0;
int Ticket,totalpos=0;

double sto,sto1;


void OnTick()
{

sto = iStochastic(NULL,0,K,D,S,0,0,0,0);//ストキャスを定義
sto1 = iStochastic(NULL,0,K,D,S,0,0,0,1);//1本前のストキャスの値を取得

//ここからがオープン処理

if(NowBars < Bars){
NowBars = Bars;

totalpos=OrdersTotal();//オーダーの数を取得

//+------------------------------------------------------------------+
if(totalpos == 0){//ポジションが0の時

if(sto1<80&&sto>=80){//ストキャスが80以下から80以上になったとき

Ticket=OrderSend(NULL,OP_SELL,Lots,Bid,0,Bid+100*Point,Bid-100*Point,NULL,magicnum,0,Aqua);//利確損切10pipsでショート
}

if(sto1<80&&sto>=80){//ストキャスが20以上から20以下になったとき
Ticket=OrderSend(NULL,OP_BUY,Lots,Ask,0,Ask+100*Point,Ask-100*Point,NULL,magicnum,0,White);//利確損切10pipsでロング
}
}


}//---NowBars

}//---OnTick
//+------------------------------------------------------------------+

 

ロジックをまず考えたら、その後はロジックをMQL言語で使われている関数というものを使い、数式に表していきます。

 

この部分が一番大事でして、自分の頭の中のロジックをどうやって数式に表すのか?

 

様々な関数がありますのでそれを形にしていきましょう。

 

proparty関数

 

まずは#propartyから書いていきます。

prorarty関数とはEAの基本設定になります。

Copyrightやバージョン情報、EAの名前などを入れておきましょう。

 

propartyに入れておいて欲しい項目が

#property strict

です。

 

この文はEAを日本語化対応させるのに必要な文になります。

この文を入れないとインジケーター画面などが文字化けしてしまうことがありますので必ず覚えておいてくださいね。

 

OnInit

 

次にOnInit関数です。

OnInitとはEAを入れた時に一度だけ通る関数です。

 

EAではチャートに入れたタイミング、チャートから削除したタイミング、値動きが一回あったタイミング、1秒ごとなどのタイミングで通る式を設定することができます。

 

何か最初に設定しておきたいこと(スリッページなど)があればOnInitの中で設定するのが一般的ですね。

今回は特に設定する項目がないため空白にしておきます。

 

変数・extern~

 

次にextern~という項目を入れていきます。

extern~で設定する項目はパラメーターで設定したい項目になります。

 

 

この部分ですね。

extern int 変数名~とすることでパラメーター設定ができるようになります。

 

extern int magicnum = 5555;//マジックナンバー 

extern double Lots=0.01; // ロット数

extern int K = 5;//%K 

extern int D = 1;//%D

extern int S = 1;//スローイング

 

こんな感じですね。

=5555と書くことで初期設定値を5555にできます。

//より後ろの部分はパラメーターで表示される文字を設定できます。

 

上の文を見てみると気になる点があると思うのですが、

extern int magicnum = 5555;//マジックナンバー

extern double Lots=0.01; // ロット数

などint,doubleなどというのが後ろについているのですがこれは何なのでしょうか?

 

基本的にmagicnunという文字の中に5555という数値を入れておくことができその数値を変更できるっていうのが変数の特徴になります。

変数にも型がいろいろあります。

 

int→整数値(0・1・22・5555など)

double→浮動小数点(0.1・5.05・1.1123など)

bool→ブーリアン型(trueかfalse)

storing→文字列型

 

例えばaaという変数に1や2という整数の値を入れておきたければ

int aa =1;

と表せますし105.5などという数値を入れておきたければ

double aa =105.5;

などとする感じです。

 

なんとなくイメージがつかめましたでしょうか?

大事な部分ですので覚えておいてくださいね。

 

ストキャスティクスを呼び出す

 

RSIやストキャスティクス、ボリンジャーバンド、ローソク足の終値、高値などは呼び出し方がすべて決まっています。

決まった呼び出し方を覚えておくことが大切です。

 

例えば、ストキャスティクスというのをmql関数で表すと

iStochastic(symbol,timeframe,Kperiod,Dperiod,slowing,method,price_field,mode,shift);

と表すことができます。

 

それを先ほどexternで定義した変数を使って定義すると下のように表せます。

 

double sto;
sto = iStochastic(NULL,0,K,D,S,0,0,0,0);

 

stoというdouble型の変数を作り、iStocastic関数の中にKDSのパラメーターを入れていきます。

これでstoという変数の中にストキャスティクスの数値を保存できます。

 

例えばメイン線ではなくてシグナル線を呼びだしたい場合は右から2番目のmodeの項目を1にし

 

double stosig;
stosig = iStochastic(NULL,0,K,D,S,0,0,1,0);

 

と表現できますね。

 

またシフトを1にすれば一本前の数値をを読み込むことも可能です。

 

sto1 = iStochastic(NULL,0,K,D,S,0,0,0,1);//1本前のストキャスの値を取得

 

 

オーダー関数

 

ストキャスティクスの値を呼び出せたら実際にオーダーもしましょう。

 

上で呼び出したstoという変数を使って

ストキャスティクスが80以上の時売り注文

ストキャスティクスが20以下の時買い注文

をしていくのですが、注文を出す際はOrderSend()関数というものを使って注文を行います。

 

if(sto1<80&&sto>=80){//ストキャスが80以下から80以上になったとき 

Ticket=OrderSend(NULL,OP_SELL,Lots,Bid,0,Bid+100*Point,Bid-100*Point,NULL,magicnum,0,Aqua);//利確損切10pipsでショート 

}

 

if()~とは「もし○○ならば○○」という式になります。

ここでは1本前のストキャスが80以下かつ現在足のストキャスが80以上の時

これを満たしたときに{}の中を通るといったイメージです。

 

条件を満たしたときに

OrderSend(①string symbol,②int cmd,③double volume,④double price,⑤int slippage,⑥double stoploss,⑦double takeprofit,⑧string vomment,⑨int magic,⑩datetime expiration,⑪color arrow_color)

という関数を使って注文を出していきます。

 

Ticket=OrderSend(NULL,OP_SELL,Lots,Bid,0,Bid+100*Point,Bid-100*Point,NULL,magicnum,0,Aqua);//利確損切10pipsでショート

 

こんな感じですね。

OP_SELLで売りポジション

損切は現在価格から100ポイント上(10pips)

利確は現在価格から100ポイント下(10pips)

にしています。

 

ここまでがEA作成の基本になります。

 

大体の流れは理解できましたか?

 

おそらくプログラミングが初めての方でしたら

 

「全然意味が分からない・・」

 

となってしまうでしょう。

 

初めは勉強する必要がありますし、難しいです。

 

しかし一度基礎を理解してしまえば基本的にEAの作り方の流れは一緒です。

 

しいて言うならばオーダーを出す前のif文の中が違うくらいでしょう。

そのため一度覚えてしまえば新規のEAを作成するのに30分~2時間くらいで作れてしまいます。

 

これでいいEAが作れたら数万円、数十万円さらには数百万円稼げる可能性もあります。

 

またEA作成代行をやったとしても1件1~3万円ほどの収入になります。

1時間ほどで作ったEAが1万円以上になるのですから、時給1万円です。

 

めちゃめちゃいいですよね?

EAのプログラミングは覚えておいて損は絶対にないと思いますので勉強することをおすすめします。

 

mql4の勉強は書籍を買って勉強するか、プログラミングスクールに入り勉強するのがおすすめですね。

 

僕の意見としては、もし周りにプログラミングに詳しい友人などがいて、いつでも質問できるのでしたら独学でもいいと思いますが、そういった方がいないという方はプログラミングスクールに入って勉強するのがおすすめです。

 

なぜかというと、プログラミングにはエラーがつきもので、1文字でも違うと正常に動かないからです。

 

その原因を突き止めることができないと正常に動きません・・・

 

ですので周りに質問できる人がいるかどうか?はとても大事です。

 

しかし、一度覚えてしまえばそんなに難しくはないですし、3か月くらいである程度のインジケーターとEAは作成できるようになります。

 

一生もののスキルになりますし、不労所得も夢でないのでここは頑張りましょう。

 

動作確認をする

 

考えたロジックを数式に表すことができたら、動作確認をし正常に動いているかどうか確認しましょう。

正常に動いていなかった場合は、どこか文章に間違いがある可能性が高いです。

 

プログラミングは1文字でも違う部分があると正常に動かないですし、裁量ですと無意識に避けていた場面でもEAではエントリーしてしまうことも多いです。

 

原因を突き止め思い通りに動くまで修正する。

 

これを繰り返すことで自動売買ツールは完成していきます。

 

僕自身たくさんのツールを開発してきましたが、一発で思った通りの挙動をしたことは少ないです・・・

 

エラーと修正を繰り返してツールは出来上がりますので、あきらめずにやりましょう。

 

出来上がった自動売買ツールのバックテストを取る

 

一通り動作確認が出来たら、次はバックテストを取っていきましょう。

 

バックテストとは過去のチャートのデータからを使い、作成した自動売買ツールを動かしてみるということです。

 

過去の指定した期間を動かした場合の損益などを見ることができます。

 

 

バックテストの期間としては3年から5年ほど、長ければ10年程見ればいいでしょう。

 

MT4のストラテジーテスタというものを使うと、とても簡単にバックテストをとることができます。

 

ここであまりいい結果が出ていなかった場合は、ロジックの修正をする。

 

これの繰り返しになります。

 

設定の修正を行うだけげなく、通貨ペアや時間足を変えることでいい結果が出ることもあるでしょう。

 

いい結果が出るまで開発を続けることで不労所得への道が拓けますので!!

 

自動売買システムツール(EA)のプログラミングの勉強方法について

 

これまでFX自動売買のプログラミングについて解説してきましたが、難しそう・・

と思った方も多いと思います。

 

しかし、プログラミング初心者の方でもきちんと学べば自動売買のプログラミングを覚えることは可能です。

 

私も完全にプログラミング初心者からMQLを勉強したタイプの人間ですので体験談を少しお話させていただきます。

 

私はもともとこの業界に入る前は接客業の仕事をしていたため、プログラミングとは無縁の業界でむしろPCの操作にすらあまり慣れていない状態でした。

 

ただ今の仕事だけでは将来に少しの不安があったため、

何か副業でできないかなー

と考えていた時に始めたのがFXだったのです。

 

はじめはいろんなサインインジケーターなども活用して取引をしていました。

 

負けて反省して、サインが出ても避けるべきところとエントリーしていいところがあることに気づいた私は、

「避けるべきポイントにはサインを出さないようオリジナルのインジケーターを作れないか?」

と考えからMQLプログラミングを学び始めました。

 

MQLプログラミングを学ぶには

●本やネットなどを活用して独学で勉強する方法か

●プログラミングスクールに入るか

の二択がありました。

 

私は迷わずプログラミングスクールに入ることにしました。

 

なぜならプログラミングのことについて何も知らなかったし、独学で習得できる気がしなかったためです。

 

スクールにお金を払っても独自のツールが開発できれば元はすぐに取れると思っていたためすぐに入会しました。

 

スクールに入ってまずは何をしたかというと、とにかく動画を見ました。

 

プログラミング初心者の私は、変数、if、forなどもよくわかっていなかったので何度も動画を見ました。

 

6割くらい理解ができたかな?というところで自分でも作ってみることにしました。

 

わからないところは動画を見直しながら作成することで難なく完成させることができたのです。

 

ここまでで3週間ほどです。

 

その後もいろんなパターンのインジケーターを作り、EAの作り方なども一通りはできるようになりました。

 

約2か月ほどで複雑なロジック以外のインジケーターやEAは作れるようになりました。

 

その後は自分でインジケーターやEAの開発をしたり、他のトレーダーさんの開発代行なども現在では受けています。

 

何を言いたかったかというとMQLプログラミングは完全初心者でもEAやインジケーターの作成はできるようになるということを言いたかったです。

 

他の言語を全く知らない私でも出来たのです。

 

ただ最短でEAプログラミングを習得するには

・わからないところをすぐに聞ける環境

・インジケーターやEAを作ることができるテンプレート

この2つが最短で習得するには大事です。

 

この2つは独学では手に入りません。

 

知り合いにプログラミングに詳しい人がいたり、本を読んでテンプレートを見ただけで理解できるほど頭が良ければ別ですが、そうでない場合は厳しいでしょう。

 

しかし、学べる環境を整えて毎日少しずつでもいいから勉強することで習得することが可能ですのでぜひチャレンジをしてみてください。

 

現在は私が運営に関わっているプログラミングスクールのYOUTUBEでEAのプログラミングについて解説をしております!

 

動画を見ればEAのコードを一行ずつ解説しておりますのでそちらもご覧いただければと思います。

 

 

FX自動売買システムツールの作り方まとめ

 

FX自動売買ツールの作成には、MQL言語の勉強をしプログラミングをするのが一番おすすめです。

 

一度覚えてしまえば一生使えるスキルとなりますし、何より自分のロジックを形にできるのが最大のメリットですね!

 

私の場合全くのプログラミング初心者でしたが3ヶ月でインジケーターからEAの作成までをマスターすることができました。

 

プログラミングを覚えることによってトレードだけではなく開発やツールの販売など仕事の幅がとても広がりました。

 

私がプログラミングを勉強した、EA・インジケーターのプログラミングスクールはこちらです。

 

インジケーターとEAプログラムマスタースクール開校!MQL4プログラムを徹底習得!

⇩⇩

 

こちらのスクールでは初心者がインジケーター、EAを1人で作れるように基本から教えておりますし、わからないところは24時間いつでもチャットで質問できるような環境が整っております。

 

また9割以上の方が全くのプログラミング初心者から始めておりますが皆さん一人でインジケーターやEAの開発ができるようになっています。

いつでも質問可能でサンプルコードも30種類以上用意されているため初心者の方でも安心ですね。

 

興味を持った方はぜひ勉強してみてはいかがでしょうか?

FX TRADEが独自に開発した「FXオリジナルインジケーター」を無料でプレゼント致します!

巷のネット上に存在しないインジケーターから、他では高額な金額で販売されているようなインジケーターも無料で配布する期間限定のプレゼント企画になります。

この機会に是非、手にとってみてください!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ABOUTこの記事をかいた人

初めまして、バカポンドです! FX TRADEでは、主にFXに関する情報を発信しており、投資に興味を持っている人、あるいは、既に投資を始めているユーザーのためになるコンテンツを作成しています。また、オリジナルで開発したインジケーターや自動売買ツールなども提供してますので、是非活用してみてください。どうぞよろしくお願い致します!