ライブチャットで出会う

MaxSystemFX公式ブログ

EAプログラミング4

みなさん
どうも!

いやー
それにしても暑い!

この暑さに負けない
熱い恋におぼれてみたいTonyです!!


さて、今回はEAプログラム入門(4)ということで、
難易度が少しずつ上がってきますよー!


今回、説明するのは関数です。


int init()やint start()等が関数です。

関数とは、
一連の処理がまとめられているものです。

int init()はEAをセットしたときに自動的に呼び出される関数です。

int deinit()はEAを終了させたときに自動的に呼び出される関数です。

int start()はティックが発生する毎に呼び出される関数です。
EAのプログラムはティック発生がトリガーとなって実行されます。

つまり、このint start()がメインのプログラムの処理といえますね!

上記で説明した関数は"特殊関数"といい、
最初から特別に用意されている関数です。

ですから、initやdeinit、startという名前の関数を
独自で作ることは出来ません。


「え?関数って自分で作れるの?難しくない?」
そう思ったあなた!
関数は作れます!非常に簡単に!

int kansu()
   {
   
   return(0)
   }

はい、これで"kansu"という関数を作りました。

それから、この関数に一連の処理を記載していきます。

int kansu()
   {
  
   int a;
   int b;
  
   int c;
  
   a = 10;
   b = 5;
  
   c = a * b;
  
   return(c);
   }
と処理を追加します。

ちなみに、この*(アスタリスク)は
掛け算の意味を持ちます。

それをメインのスタート関数から呼び出すと・・・

  
int start()
   {
  
   int z;
  
   z = kansu();
  
   Alert(z);
  
   return(0);
   }

さて、ちゃんと50と表示されましたか?

されたならOKです!


int kansu(int x, int y)
   {
  
   int c;
   c = x * y;
  
   return(c);
   }
  
  
int start()
   {
  
   int a;
   int b;
  
   a = 10;
   b = 5;
  
   int z;
  
   z = kansu(a,b);
  
   Alert(z);
  
   return(0);
   }
上記のようにしても同じ結果になります。
関数名の右の()は引数を入れる場所です。

int kansu(int x, int y){
となっているなら、関数を呼び出すときも
z = kansu(a,b);
と、引数の数を合わせないといけません。

この処理を簡単に説明すると、
        「ねぇ、kansuさん。5と10を渡すから、ちょっと掛け算してちょうだい!」
kansuさん「はいよー。5と10を掛けて・・・。はい!一丁あがりっ!」
        「ありがとね!どうもね!」
       
       
・・・kansuに渡す引数の値を変えれば、それに応じた結果が返ってくることになります。

ちなみに関数名の前に付いている"int"とは、
変数と同じく型を定義しています。

変数に関数からの戻り値を代入するときは、
この型に気をつけましょう!!

ここまで出来たなら、
あとはMQL4独自のクセを覚えるだけです!


次回は、
基本的な関数と、実際の処理を解説していきまーす!


次回も、見てくれよな!


最後にTony流プログラム川柳
「関数を 理解するのは 簡単っすぅ」


・・・いや、これはひどい・・・

14点!!

今回はここまで!!

失礼しましたー!!

 

2012年7月27日|コメント (0)

カテゴリー:FXプログラム(EA)完全制覇

EAプログラミング3

みなさん
こんにちは!

夏真っ盛りですね!
暑いです!とにかく暑いです!

夏バテも真っ盛りなTonyです!!


さて、今回はEAプログラム入門(3)です。

前回は思ったよりプログラムを書かないということに
なっていましたが、今回も少し解説が多くなります。

プログラムの基礎となる部分なので、
しっかり覚えましょう!


前回、

int init()
  {
  //----
  //----
  return(0);
  }
 
と書いてあるところまで解説しました。


ここで、また説明します。
"//----"の部分があります。
これは"コメントアウト"で、
"//"の後ろは何を書いてもコメントとして処理されます。
プログラムとしては処理されないということです。

つまり、"//"の後ろに、プログラムの処理の内容を記載しても、
好きな人の名前や上司に対する愚痴を書いてもOK!ということになります。

ただし注意していただきたいのは、"//"がある行だけがコメントとなりますので、
気をつけてくださいね。

複数行に渡ってコメントを有効にするには、
"/*  この部分はコメント  */"
が有効です。

/*

コメント
コメント
コメント

*/

というような使い方になります。

コメントの部分にプログラムとは関係ないことを
書きすぎると、わけわからなくなるので、気をつけましょう(笑

コメントに関してはもう大丈夫ですね?



さて、次は変数についてです。

変数とは何でしょうか?

変数とは値を収めておく箱のようなものです。

例えば、

int start()
  {
  int a;
  int b;
 
  a = 6;
  b = 2;
 
  int c;
  c = a + b;
 
  return(0);
  }
 
"int a;"というのは、aという変数を宣言しましたよ!
という定義です。
"a = 6;"というのは、aという変数に6を代入したということです。

さて、変数cの中には何が入っていると思いますか?

なんと!
・・・8です!

基本的に、EAのプログラムは
値を取得し、値を比較していくので、
変数を多く使用することもあります。
変数名はある程度自由に決めることが出来ますが、
あとから見直すときに、分かりやすいように名前をつけるようにしましょう!

※変数名に日本語を使用することも可能ですが、
 正常に動作するかは分かりませんので、半角の英数字で
 変数名を決めることをおススメします!


宣言のときに書いてあるintとは、
変数の型を定義しています。

型とは
例えば、おもちゃ箱にはおもちゃが入ります。
本棚には本が入ります。
それと同じように、int型にはinteger型の値が入ります。
int   → 整数型 ※小数は扱えない
double  → 実数型 ※小数も扱える
string  → 文字列型
bool   → 論理型 ※真偽を扱う型

ここでひとつ注意することは、
型の種類です。

int型の変数y、double型の変数xがあったとして、
int型の変数zに、yとxの和を代入します。

int start()
  {
  double x;
  int y;
 
  x = 1.55;
  y = 3;
 
  int z;
  z = x + y;
 
  return(0);
  }
 
さぁ、変数zに入っている値は何でしょう?

・・・実は4が入っています。

答えは4.55のはずですよね?



そうです。

int型は小数が扱えないので、
4の部分までしか収納できないのです。

この変数に関する部分はしっかりと覚えましょう!!


次回は関数、あとは実際に関数と変数を組み合わせた
簡単なプログラムを組んでいきます。


楽しみにしててくださーい!



最後にTony流プログラム川柳
「コメントは 想いを綴る 場所じゃない」

今回はここまで!!

失礼しましたー!!
 

2012年7月20日|コメント (0)

カテゴリー:FXプログラム(EA)完全制覇

EAプログラミング2

みなさん
お疲れ様です。

相変わらず体調が回復しないTonyです!


さて、今回はEAプログラム入門(2)です。

今回からはプログラムを実際に書いていきますよ!
覚悟はいいですか?

・・・と言いたいところですが、
まずは準備を始めないと、プログラムは作成できません。
今回はプログラム作成の準備について解説します。


MT4のインストール方法は割愛させていただきます。

まずはMetaEditorの使い方から・・・。

MT4を起動し、ツールバーのところに
びっくりマークの標識みたいなやつがありますよね?
これをクリックします。

すると・・・

上図のような画面が開くと思います。


それでは、画面右から「MACD Sample.mq4」を
ダブルクリックしてみましょう。

・・・さぁ、どうですか?
英単語がわんさか並んでいますね。

僕はこれを見ると興奮しますが、初見の方は
「・・・・・・・・・」ってな感じになってますよね?

今回、この「MACD Sample」を開いていただいたのは、
プログラムはこんな感じってのを
見ていただきたかったからです。

では、EAプログラムを作成するための準備を
しましょう。

先ほどの画面の左上にある+のマークの付いたアイコンを
クリックします。下図のように表示されます。

「Expert Advisor」が選択された状態にして、
次へボタンをクリックします。

「Name」の項目にEA名を入力します。
僕は今回は「Tony_test」にしました。
名前を入力したら、「完了」ボタンをクリックします。
すると、下図のような状態になります。

簡単に説明します。

int init()
{
//----
//----
return(0);
}

と書いてあるところがあります。

これは、EAをセットするときに行われる処理です。
処理内容は"{" から "}"の間に書いていきます。

例えば、EAをセットしたときにアラート画面で
「EA Set OK!」と表示させる場合には、

int init()
{
Alert("EA Set OK!");
return(0);
}

と書きます。

プログラムは半角英数字で書いてくださいね。
書き終わったら、「Compile」ボタンをクリックします。
このボタンをクリックすると、自動的にex4ファイルを生成します。
MT4で実際に動いているのはこのex4ファイルなのです。

なんだか複雑ですか?

これは後に説明します。

「Compile」ボタンをクリックしてエラーがなければ、
実際にプログラムを実行してみましょう!
普通にEAを稼動させる時と同じようにセットすると・・・

上記のように表示されましたか?

無事に表示されたら、今日から
あなたもプログラマー!!

次回から少しずつレベルアップしていきます!

頑張りましょー!!!!

最後にTony流プログラム川柳
「慣れちゃえば 意外と簡単 プログラム」


失礼しましたー!!

2012年7月13日|コメント (0)

カテゴリー:FXプログラム(EA)完全制覇

EAプログラミング1

みなさんお元気ですか?

僕は夏なのに風邪気味です。
暑い季節はエアコンなどに頼りすぎて、
体調を崩しやすいです。
みなさんも体調を崩さないようにお気をつけていただきたいです。


さて、今回はEAプログラム入門(1)ということで、
簡単なプログラミングの考え方を少し。


「プログラムにはちょっと・・・」

・・・などと思っていらっしゃる方!
プログラムはそんなに難しいことじゃないですよー!

ほんと!すげー簡単!
・・・とは言いませんが、慣れてしまえば、簡単なEAや
インジケーターくらいならすぐに作れてしまいます。


まず、プログラムに関して説明しますね。

僕がプログラムの基礎を勉強したときに出てきた例えです。


●プログラム名:冷えたお茶を飲む

●トリガー:のどが渇く

1、台所に行く
2、食器棚にあるコップを取る
3、冷蔵庫を空け、お茶を取る
4、コップに注ぐ
5、飲み干す!!
6、お茶を冷蔵庫にしまう


まぁ、上記のような流れになるでしょうか。

なんとなく伝わりますよね?
なかには5と6が逆の人もいるかもしれませんが、
この順番にしたのは意味があります。

例えば、「5、飲み干す!!」のあとに「げふーっ!もう一杯!」
という方もいるかもしれないですよね?
そのとき、もし6を先にやってしまうと、飲み干した後に
また冷蔵庫からお茶を取りコップに注いで片付けて・・・

夏場のとても蒸し暑い日、しかも激しい運動の後なら、
何回も冷蔵庫の開閉を繰り返すことになりそうです・・・

なので、プログラム的、家庭の経済的には
上記の順番が効率がよさそうです。


このおかわりの部分を表すと



4、コップに注ぐ
5、飲み干す
    もう一杯?
    ・Yes→4へ
    ・No →6へ
6、お茶を冷蔵庫にしまう


・・・うーん、上手く説明できているかわかりませんが、
これがプログラム的な考え方だと、僕はそう思っています。



これをEAバージョンにしてみましょう。

●プログラム名:EA

●トリガー:ティックが動く

1、必要な情報の取得

2、ポジション決済条件の確認
    決済条件満たしてる?
        Yes→ポジション決済!
        
3、ポジション保有の条件の確認
    ロング保有できる?
        Yes→ロングポジション保有
    ショート保有できる?
        Yes→ショートポジション保有


・・・どうでしょうか?
すごく簡単に説明すると上記のようになります。

すぐに完璧に理解することは難しいと思いますが、
僕はこれを基準にプログラミングを進めていきますので、
今は、ざっと説明しています。


※トリガーとは、
 プログラムが実行されるきっかけとなるものです。
 冷えたお茶を飲むプログラムでは、
 のどが渇くとそれを実行します。

 EAのプログラムは共通して、ティックが動くたびに
 プログラムが実行されます。


・・・おや?
頭から煙が出ている方がいらっしゃるようですね?
今回はここまでにしておきます。

次回からは実際にプログラムを作ってみましょうか!



最後にTony流プログラム川柳
「プログラム まずは頭を やわらかく」


・・・失礼しましたー!!
 

2012年7月 6日|コメント (0)

カテゴリー:FXプログラム(EA)完全制覇