FX初心者EA作成の道 番外編

こんにちは

FXあきです。

EA作成の依頼やインジケーターの質問を受けたりします。

なにか相談があれば気軽にご質問下さい⇒こちら

基本的なEAの作成に必要な情報をここで伝えていきます。

EAの構築の基本知識なので

システム運用にも役に立つと思います。

  

プログラム勉強をしたいが、時間が作れなくて忙しいといった方にはEAサロンがお勧めです( ̄ー ̄)ニヤリ

ご自身のトレードアイデアをシステム化できる素敵なサロンです⇒EAサロンはこちら

まずは!!

大原則

チャート一枚につき、セットできるシステムは1個まで!!

EAでポートフォリオを組む時に同じチャートに複数のEAをセットしようとして稼働できませんでしたと質問と頂いた事があります。

インジケーターは複数同じチャートにセットできますが、チャート一枚に、セットできるシステムは1個です。

基本なので覚えておいて下さい。

簡単作成方法は、こちらの過去記事を参考にされて下さい⇒

FX初心者EA作成への道1. コンパイル

EA作成 初心者への道2.リファレンスとトレードアクション編

まずはEAテンプレートを表示します。

20201026-2

基本としてプログラムは上から下に流れていきます

これ基本です。

int OnInit() 関数

これはチャートにEAがセットされて一度だけ実行されるゾーンです。

例えば、EAをセットした時にEA名が表示される命令等です。

OnDeinit()

これは上の逆で、EAが取り除かれた時に実行されるゾーン

あまりEAをチャートから外すことはないですがw

OnTick()

チャートが動いた時に実行されるゾーンです。

プログムの決まりで実行されると上から下に流れていくのが決まりです。

EAをセットしてティックが動くたびに実行されるプログラムがOnTickです。

OnTestert()

バックテストの時に実行するゾーンです。

チャートにコメントと時間を表示してみよう

一番最初に覚えやすいプログラムが、チャートへのコメント挿入です。

早速やってみましょう

20201027-1

int OnInitに

//+——————————————————————+
int OnInit()
  {
//—
  
//   チャートにEAがセットされて一度だけ実行されるゾーン
   //Comment(“Test”);
   
//—
   return(INIT_SUCCEEDED);
  }
//+——————————————————————+

と入力して、EAをセットすると

チャートの左上に表示されます。

20201027-2

int OnInitに入力した命令が、一回だけ実行されます。

次はチャートに時間を表示してみます。

20201027-3

OnTickに

//+——————————————————————+
void OnTick()
  {
//— チャートが動いた時に実行されるゾーン

comment(TimeCurrent());

  }
//+——————————————————————+

と入力して、EAをセットすると

20201027-4

サーバー時間がチャートの左上に表示されます。

TimeCurrent(タイムカレンシー)で表示される時間は、ブローカーのサーバー時間です。サーバーの設置されている場所で時間が変わります。日本時間を表示したい場合は別の方法が必要です。

まずは覚えて欲しい3つの 変数 int、double 、bool

変数とはよくプログラミングでは

データーを格納する箱と言われます。

この格納を宣言するして色々なデーターを使用します。

変数は使用する前に宣言する必要があります。

変数の宣言

固有の名前は変数を識別する為に使用されます。変数を宣言するには、型と固有の名前を指定する必要があります。

char, short, int, long,  uchar, ushort, uint, ulong ・・・  整数

color ・・・ RGB色を表す整数

datetime ・・・日付と時刻表す符号無し整数。   1970年1月1日0秒からの経過秒数。

bool ・・・ trueとfalseのブーリアン値・真偽型 真:true 偽:fales

double ・・・  倍精度浮動小数点数

float ・・・単精度浮動小数点数

string ・・・  文字列

まず覚えて欲しい3つの形は、int、double 、bool

int=1 は・・・・整数

double =0.1は ・・・・小数点

bool = true:fales ・・・はい OR いいえ の選択

まずは、この3つを覚えて下さい。

トレードの基本移動平均線の使った

テストとして、チャート(価格)が 移動平均線の上にあるのか?下あるのか?判断するプログラムを紹介します。

赤いラインがMA(移動平均線)です。

  

20201027-6

移動平均線使ったトレードはEAの基本的なので覚えましょう。

まずは、OnTick()に移動平均の位置(レート)を取得できるプログラムを書きます。毎回使うコードになりますので覚えておいてください

20201027-67jpg

OnTickに

//+——————————————————————+
//| Expert tick function                                             |
//+——————————————————————+
void OnTick()
  {
//— チャートが動いた時に実行されるゾーン

 
      // 移動平均線の取得
      double Ma1 = iMA(NULL, 0,20, 0, MODE_SMA, PRICE_CLOSE, 1);

Comment(sei);
  
  
  }
//+——————————————————————+

と入力して入力します。

レート(価格)は整数ではないので、doubleで表示します。

豆知識として

一度,(カンマ)削除して、再度,(カンマ)入力しなおすと内容を表示してくれます。↓↓

20201027-7

iMAの基本解説

iMAを簡単に説明します。

iMA(通貨ペア, 時間足周期, 期間, 表示移動, MAの種類, 適用価格, シフト数)

通貨ペア

通貨ペアを文字列で指定します。NULLは稼働チャートの通貨ペアです。

時間足周期

時間足周期を整数または定数で指定します。0またはPERIOD_CURRENTとすると稼働チャートの時間足周期。
1分足は”1”か”PERIOD_M1”、5分足は”5”か”PRIOD_M5”と指定します。

期間と表示移動

期間と表示移動は整数で指定します。通常はゼロですが手法によって変わってきます。一目均衡表の遅行スパンなんかがそうですね

MAの種類

MAの種類は、4種類選べます。

単純移動平均    MODE_SMA
指数移動平均    MODE_EMA
平滑移動平均    MODE_SMMA
加重移動平均    MODE_LWMA

適用価格

適用価格は、次の7種類から選びます。

終値    PRICE_CLOSE
始値    PRICE_OPEN
高値    PRICE_HIGH
安値    PRICE_LOW
Median price (高値+安値)/2    PRICE_MEDIAN
Typical price (高値+安値+終値)/3    PRICE_TYPICAL
Weighted close price (高値+安値+終値+終値)/4    PRICE_WEIGHTED

シフト数

シフト数は、ローソク足何本分前かを指定します。

  

Bid と Ask

まずはチャートにBid と Askを表示します。

チャート内にAskラインを表示する方法は、「チャート」メニューから、「プロパティ」をクリックします。

20201027-10

「全般」タブをクリックし「Askのラインを表示」にチェックマークを入れ、「OK」ボタンをクリックします。

20201027-11

20201027-12

価格白ラインの上に表示されてる赤い線がAskイランです。

Bidはあくまでトレードの基準値です。

売りたいと思ったらBid値、

買いたいと思ったらAsk値

下 Bid

上 Ask

と覚えて下さい。

これを使って

簡単な注文プログラムを作ります。

BidとMAを比較してBidが大きければ注文をいれる命令です。

OnTickに

//+——————————————————————+
void OnTick()
  {
//— チャートが動いた時に実行されるゾーン

// ポジション数調を変数Posiに入れる
int Posi=OrdersTotal();
     
      // 移動平均線の取得
      double Ma1 = iMA(NULL, 0,20, 0, MODE_SMA, PRICE_CLOSE, 1);

// コメントで移動平均数値、BId、Askをチャート上に表示
Comment(Ma1,”\n”,Bid,”\n”,Ask)           
   
///// 注文
  
//   if( Bid > Ma1 && Posi==0 ){ 注文を入れる }

//   if( Bid < Ma1 && Posi>=1){ポジションを決済する}
  
  
  }
//+——————————————————————+

と入力して入力します。

実際は、条件をプラスしてきます。ポジションがゼロ、トレードの時間帯等々りです。

コンパイル時のエラーがでても 慌てない

コンパイルしてエラーがでても

慌てななくて大丈夫です↓↓

エラーメッセージをダブルクックすれば

エラーのポイント(付近)までカーソルが移動します。↓↓

エラーには色々種類があります。

タイプミスや全角スペースのエラー。

スペースは全て半角、プログラムは全て半角で書きましょう

セミコロン”が行の終わりがという命令ですが

”の入力忘れなどもあるので注意しましょう。

今回は以上です^^

また継続してEAの作成方法をブログでお伝えしていきます。

最後に

今回使用したプログラムの一覧です。↓↓

~テキストプラグラム~

//+——————————————————————+
//|                                                         Test.mq4 |
//|                                                   Copyright 2020 |
//|                                             https://www.mql5.com |
//+——————————————————————+

//ここから実行される

#property copyright “Copyright 2020”
#property link      “https://www.mql5.com”
#property version   “1.00”
#property strict

int sei =1;

double hudou =0.1;

bool hanntei = true; // false;

string Comment_set=”nakayan”;

//// パラメーター
extern int  TakeProfit = 200;//
extern int  Stoploss   = 80;

extern double Lots=0.1;

extern int MAGIC=65471;

//+——————————————————————+
//| Expert initialization function                                   |
//+——————————————————————+
int OnInit()
  {
//—
  
//   チャートにEAがセットされて一度だけ実行されるゾーン
   //Comment(“Test”);
  
//—
   return(INIT_SUCCEEDED);
  }
//+——————————————————————+
//| Expert deinitialization function                                 |
//+——————————————————————+
void OnDeinit(const int reason)
  {
//—
// EAが取り除かられたときに実行
  
  }
//+——————————————————————+
//| Expert tick function                                             |
//+——————————————————————+
void OnTick()
  {
//— チャートが動いた時に実行されるゾーン

// ポジション数調を変数Posiに入れる
int Posi=OrdersTotal();
     
      // 移動平均線の取得
      double Ma1 = iMA(NULL, 0,20, 0, MODE_SMA, PRICE_CLOSE, 1);

// コメントで移動平均数値、BId、Askをチャート上に表示
Comment(Ma1,”\n”,Bid,”\n”,Ask)           
   
///// 注文
  
//   if( Bid > Ma1 && Posi==0 ){ 注文を入れる }

//   if( Bid < Ma1 && Posi>=1){ポジションを決済する}
  
  
  }
//+——————————————————————+//| Tester function                                                          |    
//+——————————————————————+
double OnTester()
  {
//—
   double ret=0.0;
//—

//—
   return(ret);
  }
//+——————————————————————+

 

FXあき

では では

■メルマガ登録特典、FX自動売買で勝つ秘訣プレゼント中⇒メルマガ登録はこちら これが無料なの?と大反響の豪華特典!あなたがFXで稼ぐ為に絶対必要な武器となります。

メルマガ詳細はこちら
メールが届かない場合はこちらをお読みください

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

タグ


2020年10月30日 | コメントは受け付けていません。|

カテゴリー:FX初心者EA製作への道

EA 製作 初心者への道.2 リファレンスとトレードファンクション 編

FXあきのお願い

あなたの、1クリックがブログ継続のエネルギーになります。
1クリックしてお願いします。

にほんブログ村 為替ブログ 為替日記へ
にほんブログ村

FXシステムトレード ブログランキングへ

EA 製作 初心者への道 リファレンスとトレードファンクション 編

 

EAを作る作業は

部品を組み立てるのと、近いイメージです。

イメージ図↓↓

20140827150329

基本的にはエントリー(注文)イグジット(決済)があり

後は細かいアレンジになります。

前回の記事で、最後にお伝えしたエントリーのイメージ

前回の記事はこちらこちら

移動平均短期30 と移動平均長期100 がクロスしたら ロングポジションを持つ

10Pips上昇したら決済する。

10Pips下降したら決済する。

この言葉のイメージ(部品)を繋ぎ合わせていけばEAが完成します。

部品・素材を準備して、後は組み立てていく、そう考えるとEA製作は実に簡単です。

 

それでは本日は、もう少しEA製作に必要になる、基本知識をお伝えします。

 

難しい単語や部品が出てきたら、F1でリファレンスを活用しよう

 

まずはメタエディターを起動して下さい。

EA製作画面がでてきます。

メタエディターを起動が分からない場合は、

前回の記事をどうぞ⇒こちら

20140828141558

では次にF1を押してください。

そうすると、リファレンスのバージョンアップが報告されます。(最新版の場合はバージョンアップ報告はありません)20140827151102

YESでお願いします。

リファレンス(Reference)とは?

対象となるものの機能やしくみについて、一般のマニュアルよりも詳細に書かれた文書のこと。また、プログラミングの分野では、主に関数の使い方などが書かれた文書のことを指します。

リファレンスは、EA製作に使う部品の説明書又は辞書と考えて下さい。慣れるまでは頻繁に使う機能なので覚えておいて下さい。

すると、このような画面が表示されます。↓↓

20140827151616

ここでは全て英語ですが、実際に使用する項目は限られているので、全部を覚える必要はありません^^

最初はキーワードを選択しているので、用途によって左上の目次、キーワード、検索、お気に入り、と選択して下さい

 

20140828142713

 

最も使用するトレードファンクジョン機能をテストEAに使ってみましょう

 

次に、先ほどの画面で、目次を選択して下さい。

すると、このような辞書が左側にずらりと表示された画面になります。

20140828143022

この中から、一番使う機能として、トレードファンクションズ(Trade Functions)を説明します。

トレードファンクションズ(Trade Functions)とは、トレードをするのに必要な命令等です。

Trade Functionsを選択して下さい↓↓

20140827152028

 

すると右側の画面に命令が表示されます。

20140828143843

これは余談ですが、これまでのMT4は基本的に処理注文を1個1個ださないといけませんでしたが、ビルド600になってからは、複数同時に命令がだせるようです、、、これは凄い進化で、かなり改善されています。

今回のビルド600のバージョンアップで注文系統等が、がかなりよくなっているようです。

では、余談はこれまでとして

この中から、よく使用するオーダーズトータル(OrdersTotal)をテストEAで実際に使用してみましょう。

20140828144644

 

オーダーズトータル(OrdersTotal)は、未決済・保有中のポジションを調べる部品です。

オーダーズトータル選択すると、下の画像のように命令の細かい内容が表示されます。

どのように使用するかは、これを参考にします。

20140827152531

 

では早速テストEAに「OrdersTotal」を加えてみましょう。

今回はティックが動く時に命令される、4段目void OnTick()に命令をします。それでは

position = OrdersTotal(); とご入力下さい。

20140828145923

入力後、EAをコンパイルして下さい。

そしてテストEAをチャートにセットします。

20140827154134

前回のテストEAでは、コメントはチャートに文字を表示さる命令でしたが、今回はターミナルのエキスパートに命令を表示させます。

20140827154224

テストEAはポジション持っていないので、保有中のポジションが0と表示されています。

試しにテストEAでポジションを保有してみます。

ポジションをロング(買い)で1ロット入れました。

20140827154619

その後、エキスバートを確認してみると

20140827154702

ポジション数が0⇒1になっています。

では次に、ポジションを決済すると

20140827154802

ポジションが1⇒0になりました。

簡単ではありますが以上が

 

それでは最後に「まめ知識」として、、先ほどメタエディタに入力した「OrdersTotal」を選択して下さい。こんな感じです↓↓

20140828152332

そして、F1を押せば↓↓リファレンスで一発OrdersTotalを検索できます。

20140827154957

本日はリファレンスの検索方法をご説明しました。

また次回をお楽しみ下さい。

お読み頂ありがとうございます。

それでは失礼致します。

FXあき

では では

 

■メルマガ登録特典、FX自動売買で勝つ秘訣プレゼント中⇒メルマガ登録はこちらこれが無料なの?と大反響の豪華特典!あなたがFXで稼ぐ為に絶対必要な武器となります。

メルマガ詳細はこちら
メールが届かない場合はこちらをお読みください

» FX自動売買の魔術師FXあきの楽楽実践記録のTOPへ

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

タグ


2014年9月2日 | コメントは受け付けていません。|

カテゴリー:FX初心者EA製作への道

このページの先頭へ

アクセスランキング
FXあき
FXあき
アクセスランキング アクセスランキング