ライブチャットで出会う

MaxSystemFX公式ブログ

MT4は便利 その②

どうもー
お久しぶりですー!

Tonyです!

人生とはいろいろあるものです。

落ち込んだり
悩んだり
壁にぶつかったり
肌が荒れたり・・・

でも、そんなときに必要なのは、
そうです!
『相談』なんですねー。

僕は人に相談するのが苦手なタイプなんですが、
苦しいときには吐き出したほうがいいらしいですよ。

簡単そうで意外と出来ない人も多いですので、
最初は飼っているペットや、
電線に止まっている鳥などに
話しかけてみるのもいいかもしれないねー。

さて、今回は、
EAは便利!Part2です!

前回はEAからメールを送信する方法を書きました。

今回は、運用しているEAの成績をサーバーにアップする方法を
解説したいと思います。


え?

わざわざ成績をサーバーにアップする必要があるのかって?

いやいや、必要性は人それぞれ。
僕にとってはとても重要なことですよ!

サーバーにアップするということは
ネットが繋がる環境であれば、どこからでも
成績が確認できるということになります。

今までに決済してきたものや、
注文を入れているポジションの状態も確認できるんですよ?

これは便利じゃないですか?


・・・まぁ、先ほども書きましたが、
必要性は人それぞれですので。

解説はじめまーす!


まず、MT4のメニューバーの「ツール」→「オプション」の順にクリックします。

そして、オプション画面の「Publisher」タブをクリックし、
下記の項目を入力していきます。


簡単に説明します。
Account:EAを運用している口座番号。
Refresh every:何分毎に更新するかの設定。
FTP server:成績をアップロードするFTPホスト。
FTP path:成績をアップロード先。
FTP login:FTPのログインID。
FTP password:FTPのログインパスワード。

以上を入力して、
Passive modeにチェックを入れて
テストボタンをクリックします。

成績のアップロードが成功したら
下記の画面が表示されるはずです。

これで、あとは成績へアクセスすればOK!!

けっこう簡単でしたね。


今回も楽しんでいただけたでしょうか?

ここでTony流FX川柳
「成績を アップしたのは いいけれど 勝っていれば よかったのにな・・・」

いや!
こんなにネガティブじゃダメです!
勝気でいきましょー!
ですが、FXに無理は禁物ですよ!


それでは失礼しまーす!!!

2012年10月 5日|コメント (0)

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

EAプログラミング6

みなさん
どうも!

ブログ記事のアップが2週も空いてしまって
反省した直後にまた空けてしまったことを
すごく反省している真っ最中です。

反省しつつ
今回のEAプログラム入門を進めていきまーす!!


さて、今回はEAプログラム入門(6)です。
なんだかんだで6回目まできちゃいました!
今回で最後になりますよー。


プログラム経験者にとっては簡単な内容だと思いますが、
「プログラムも初心者なんですよーwww」
とかいう人はしっかり学んでいきましょう!


今回は、前回までに作成したEAの解説をしていきます。

前回のプログラムを上から順にいきますね。


//+------------------------------------------------------------------+
//| Tony_test.mq4 |
//| Copyright ゥ 2011, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright ゥ 2011, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"



//ユーザーが変更可能なパラメーター、変数
extern int MA_Tyoki_Kikan = 75;
extern int MA_Tanki_Kikan = 14;
extern double LotSize = 0.1;



//ユーザーはさわることが出来ない、共通で使用できる変数
double Pips;

ここの部分はパラメータを設定しています。
変数を宣言する前の部分にexternをつけると
ユーザーが変更できるパラメータになります。

上記のように、変更が必要だと思われるもの、
変更できると便利だと思われるものを
ユーザー可変の変数にセットします。

例:ロットサイズ、MAの期間、システムの稼動時間等

パラメータの下の部分は内部で使用する変数です。


関数の中でも変数を宣言できますが、
関数の中で宣言した変数は、宣言した関数内でしか使えません。

この部分で宣言することで、
どの関数の中でも自由に使えるようになります。

いろいろな関数で使う必要がある場合などはここで宣言します。

例:Pipsの設定変数等


パラメータに関してはこのくらいです。
他にもありますが、今回はふれません。
機会があれば、記事にしますね!

次は・・・


//+------------------------------------------------------------------+
//| EAを設置するときに通る処理 |
//+------------------------------------------------------------------+
int init()
{
/*
通貨ペアによって、1ピップの単位がかわるので、
通貨ペアの小数点を調べて、1ピップの単位を設定
*/
if(Digits <= 3) Pips = 0.01;
if(Digits >= 4) Pips = 0.0001;
return(0);
}

//+------------------------------------------------------------------+
//| EAを撤去するときに通る処理 |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}


こちらはEAを設置するときに行われる処理と
EAを撤去するときに行われる処理です。
撤去時の処理は何も指定してません。

EAを設置するときに通貨ペアによってPipsを変えています。
基本的に1Pipを扱っているので、0.1Pipなどではなく、
1Pipに合わせています。

これは僕のプログラムなので、
絶対1Pipに合わせろ!
と、言っているわけではありませんよ(^^;

さて、ここからが本番です。
次に解説するものは、ティックが更新される度に行われる処理です。
ここからは少し複雑になるので、しっかり理解していきましょう。





//+------------------------------------------------------------------+
//| ティックが更新される度に通る処理 |
//+------------------------------------------------------------------+
int start()
{
int pos;

//移動平均線の値を格納する変数の宣言
double iMA_tyoki1; //1本目の長期移動平均線
double iMA_tanki1; //1本目の短期移動平均線
double iMA_tyoki0; //0本目の長期移動平均線
double iMA_tanki0; //0本目の短期移動平均線

//移動平均線の値を格納
iMA_tyoki1 = iMA(Symbol(),0,MA_Tyoki_Kikan,0,MODE_SMA,MODE_CLOSE,1); //1本目の長期移動平均線
iMA_tyoki0 = iMA(Symbol(),0,MA_Tyoki_Kikan,0,MODE_SMA,MODE_CLOSE,0); //0本目の長期移動平均線
iMA_tanki1 = iMA(Symbol(),0,MA_Tanki_Kikan,0,MODE_SMA,MODE_CLOSE,1); //1本目の短期移動平均線
iMA_tanki0 = iMA(Symbol(),0,MA_Tanki_Kikan,0,MODE_SMA,MODE_CLOSE,0); //0本目の短期移動平均線

上記は移動平均線の値を格納する変数の宣言をし、
その変数に移動平均線の値を格納しています。
iMA()関数の使い方は、

iMA(使用する通貨ペア,使用する時間足,MAの期間,MAの転移,MAの種類,適用する価格,インデックス値);

・・・わかりにくいですよね?
一応、ここで簡単に説明しましたが、詳しく教えているサイトは検索すれば、
いくつでも見つかります。
ここで理解できない場合は、他のサイトを参考にしてみるのも良いでしょう。

では・・・次にいきます。



//長期移動平均線と短期移動平均線のゴールデンクロスを判断するロジック
if(iMA_tyoki1 > iMA_tanki1 && iMA_tyoki0 < iMA_tanki0)
{
//ゴールデンクロスだった場合、ショートポジションを決済する処理

//オーダーの数の分だけ処理を行う
for(int i = OrdersTotal() - 1; i >= 0; i--){
//オーダーの検索
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
//オーダーの種類が同じだった場合(通貨ペアとマジックナンバー)
if(OrderSymbol() == Symbol() && OrderMagicNumber() == 100){
//オーダーの種類がショートポジションだった場合
if(OrderType() == OP_SELL){
//決済処理
OrderClose(OrderTicket(),OrderLots(),Ask,2,Yellow);
}
}
}

ここでは値を比較して条件を満たしているか確認し、条件を満たしていたら、
ポジションを決済するというロジックです。

1本前の長期移動平均線の値より1本前の短期移動平均線の値が小さく、
現在の長期移動平均線の値より現在の短期移動平均線の値が大きい

これでゴールデンクロスと判断しています。



//ポジション保有チェック
pos = PosCheck();

if(pos == 0)
{
//ゴールデンクロスだった場合、ロングのポジションを保有する処理
OrderSend(Symbol(),OP_BUY,LotSize,Ask,2,0,0,"Long Position",100,0,Blue);
}
}

ここで、エントリー前に現在ポジションを保有しているかチェックしています。

ポジション保有チェックに関してのロジックは後半で書きますが、
必要性について書いておきます。

今回の売買条件はすごくシンプルです。
条件を満たす場面はたくさんあると思いますし、
処理自体が、ティックごとになっています。

ポジションを保有しているかチェックしないと、
「条件を満たしたぞ!ポジションを持て!!」
「ん?また条件を満たしたぞ!ポジションを持てー!!
「何ぃ!?またポジションを満たしただと?ポジションを持てー!!!」
と、どんどんポジションを保有していき、
気が付けば、数十個のポジションを保有してしまうことも・・・。

ここでは、同じポジションが重複しないように監視しています。


※売りの部分に関しては処理が同じなので、省略します。


最後に関数としておいた、
ポジションを保有しているか確認する関数の解説にいきます。



//ポジションを保有しているか確認する関数
int PosCheck()
{
int re_int = 0;
for(int i = OrdersTotal() - 1; i >= 0; i--)
{
//ポジション保有確認
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == Symbol() && OrderMagicNumber() == 100)
{
//ポジションを保有していたら変数に1を代入
re_int = 1;
}
}
//結果を返す
return(re_int);
}
//ここまで

for文で現在保有しているポジション分ループします。
OrderSelectという関数でポジションを呼び出しています。
通貨ペアとマジックナンバーでこのシステムのポジションか
確認し、このシステムのポジションと判断されたら、
ポジションを保有していると結果を返します。


・・・どうでしょう?

EAプログラミング入門はいかがでしたか?

僕は初心を思い出しながら楽しくやっていましたが、
果たして、これを見てくれた人々に
どのくらい伝わったのか・・・

気になって気になって夜も眠れません。

質問や応援メッセージ、
するどいツッコミなど、
どんどん受け付けています!

それでは、今回はこの辺で・・・


最後にTony流プログラム川柳
「何事も 教えることは 難しい それをこなせば 成長できるのさ(字余り)」


・・・プログラムだけではなく、全てに通ずることですね。

93点!!

失礼しましたー!!

2012年9月12日|コメント (0)

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

EAプログラミング5

みなさん
どうも!


自称『SE』のTonyです!!


ブログ記事のアップが2週も空いてしまって
反省しています。

「反省だけならサルでもできる」という言葉が
ありますが、僕は反省しつつ、開き直ってみせます!

みなさん!
EAプログラム入門、楽しんでいきましょー!!


さて、今回はEAプログラム入門(5)です。
前回までで分からないことがあれば、ちゃんと復習しておきましょう!
そして、今回からコメント機能が実装されていますので、
気軽にコメントしてください!

例えば、
「え、これ、間違ってるんじゃん?」
とか、
「・・・なるほど。つまり、XとYの相対関係からZの3乗となり、それを証明するとしたら・・・」
というような意味不明なものまで待ってますwww

もちろん、いちばん欲しいのは応援コメントですけどね。

あんまり関係ないことコメントされちゃうと、
削除の対象になってしまうこともあると思いますがww

では、今回は実際にEAを作っていきます!

今回作っていくEAは
移動平均線のゴールデンクロスでロング保有、
移動平均線のデッドクロスでショート保有、
ドテン方式でやってみます。
短期移動平均線の期間は14、
長期移動平均線の期間は75に設定します。

このEAはあくまで
EAプログラム入門なので、
成績に関してはご勘弁を・・・。

では、コードを下に記述しておきます。


//ここから
//+------------------------------------------------------------------+
//| Tony_test.mq4 |
//| Copyright ゥ 2011, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright ゥ 2011, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"

//ユーザーが変更可能なパラメーター、変数
extern int MA_Tyoki_Kikan = 75;
extern int MA_Tanki_Kikan = 14;
extern double LotSize = 0.1;

//ユーザーはさわることが出来ない、共通で使用できる変数
double Pips;


//+------------------------------------------------------------------+
//| EAを設置するときに通る処理 |
//+------------------------------------------------------------------+
int init()
{
/*
通貨ペアによって、1ピップの単位がかわるので、
通貨ペアの小数点を調べて、1ピップの単位を設定
*/
if(Digits <= 3) Pips = 0.01;
if(Digits >= 4) Pips = 0.0001;
return(0);
}

//+------------------------------------------------------------------+
//| EAを撤去するときに通る処理 |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}

//+------------------------------------------------------------------+
//| ティックが更新される度に通る処理 |
//+------------------------------------------------------------------+
int start()
{
int pos;
//移動平均線の値を格納する変数の宣言
double iMA_tyoki1; //1本目の長期移動平均線
double iMA_tanki1; //1本目の短期移動平均線
double iMA_tyoki0; //0本目の長期移動平均線
double iMA_tanki0; //0本目の短期移動平均線

//移動平均線の値を格納
iMA_tyoki1 = iMA(Symbol(),0,MA_Tyoki_Kikan,0,MODE_SMA,MODE_CLOSE,1); //1本目の長期移動平均線
iMA_tyoki0 = iMA(Symbol(),0,MA_Tyoki_Kikan,0,MODE_SMA,MODE_CLOSE,0); //0本目の長期移動平均線
iMA_tanki1 = iMA(Symbol(),0,MA_Tanki_Kikan,0,MODE_SMA,MODE_CLOSE,1); //1本目の短期移動平均線
iMA_tanki0 = iMA(Symbol(),0,MA_Tanki_Kikan,0,MODE_SMA,MODE_CLOSE,0); //0本目の短期移動平均線
//長期移動平均線と短期移動平均線のゴールデンクロスを判断するロジック
if(iMA_tyoki1 > iMA_tanki1 && iMA_tyoki0 < iMA_tanki0)
{
//ゴールデンクロスだった場合、ショートポジションを決済する処理

//オーダーの数の分だけ処理を行う
for(int i = OrdersTotal() - 1; i >= 0; i--){
//オーダーの検索
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
//オーダーの種類が同じだった場合(通貨ペアとマジックナンバー)
if(OrderSymbol() == Symbol() && OrderMagicNumber() == 100){
//オーダーの種類がショートポジションだった場合
if(OrderType() == OP_SELL){
//決済処理
OrderClose(OrderTicket(),OrderLots(),Ask,2,Yellow);
}
}
}

//ポジション保有チェック
pos = PosCheck();

if(pos == 0)
{
//ゴールデンクロスだった場合、ロングのポジションを保有する処理
OrderSend(Symbol(),OP_BUY,LotSize,Ask,2,0,0,"Long Position",100,0,Blue);
}
}


//長期移動平均線と短期移動平均線のデッドクロスを判断するロジック
if(iMA_tyoki1 < iMA_tanki1 && iMA_tyoki0 > iMA_tanki0)
{
//デッドクロスだった場合、ロングポジションを決済する処理

//オーダーの数の分だけ処理を行う
for(int f = OrdersTotal() - 1; f >= 0; f--){
//オーダーの検索
OrderSelect(f, SELECT_BY_POS, MODE_TRADES);
//オーダーの種類が同じだった場合(通貨ペアとマジックナンバー)
if(OrderSymbol() == Symbol() && OrderMagicNumber() == 100){
//オーダーの種類がロングポジションだった場合
if(OrderType() == OP_BUY){
//決済処理
OrderClose(OrderTicket(),OrderLots(),Bid,2,Yellow);
}
}
}

//ポジション保有チェック
pos = PosCheck();

if(pos == 0)
{
//デッドクロスだった場合、ショートのポジションを保有する処理
OrderSend(Symbol(),OP_SELL,LotSize,Bid,2,0,0,"Short Position",100,0,Red);
}
}


return(0);
}

//ポジションを保有しているか確認する関数
int PosCheck()
{
int re_int = 0;
for(int i = OrdersTotal() - 1; i >= 0; i--)
{
//ポジション保有確認
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == Symbol() && OrderMagicNumber() == 100)
{
//ポジションを保有していたら変数に1を代入
re_int = 1;
}
}
//結果を返す
return(re_int);
}
//ここまで

以上になります。

コピペしていただいてもかまいませんが、
実際に手入力していただいたほうが、
早く覚えられるのではと思います。


「入力はめんどいっすよー」
とか、
「同じように入力してるのに、エラーがでてますけど?」
などという方は、
下記からダウンロードできるようにしておきます。

Tony_test.mq4


プログラムコード内にある、
OrderSendやOrderCloseは実際に注文を行う関数です。
僕は、"取引関数"とよんでいます。

OrderSendはポジションを保有するための関数
OrderCloseはポジションを決済するための関数です。

それぞれの関数をWebで検索すると使い方などが
簡単に見つかるので、そこを参考にしてください。


さて、ここで気になるのが、
実際に作ったプログラムの結果ですね!
バックテストの結果は・・・

※クリックで拡大します。

・・・orz
散々な結果になってしまいました・・・
・・・やっぱりEA作成は簡単じゃないですね!!


結果の見方はこのサイトが参考になります。
MetaTrader(MT4)インジケーターPRO

今回は散々な結果にいじけてしまいました・・・
自分で結果に期待するなと言っておきながら・・・

でも、EA作成はここからが本当のスタートです!
ここから、検証を重ねて、もっと良いロジックを見つけて
それをプログラム化していくのです!!

次回は、今回作成したEAをもう少し細かく説明していきたいと思います!!


乞うご期待!!
です。

最後にTony流プログラム川柳
「最高の 成績出すのは ムズいっす・・・」


・・・。

53点!!

今回はここまで!!

失礼しましたー!!

2012年8月17日|コメント (0)

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

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)完全制覇

バイナリオプションって?

どうも!
お久しぶりです!

誰からも愛される人間になりたい・・・
などと思っているTonyです!!


いきなりですが、皆さんはバイナリオプションって
ご存知ですか?

今は海外でも流行っているらしく、
その気軽さがうりになっているみたいです。
今は国内でも利用者がどんどん増えてきているようですよ。

全ての業者で同じかは分かりませんが、
基本ルールとしては、スタート時刻の価格を
10分後に下回っているか、上回っているかを予想するものです。

通貨ペアによって異なりますが、
スタートの価格と同じか、上下数ピップス(1ピップ以下)の範囲に
レンジ外というのも存在し、そこに入ると、
上回るを予想した人も
下回るを予想した人も
負けトレードとなります。


国内ではクリック証券がやっていますね。

デモ口座で遊べたりするので、
ちょろっと遊んでみるのも楽しいかもしれません。
長年FXに携わっている方も、遊び感覚で楽しんでみてわいかがでしょう。



僕も試しに遊んでみましたが、
うーん・・・


「このあと下がりそうだ!」
とか
「んー・・・、ここは今から反転すんじゃね?」
というのはなんとなく想像できますが、
10分後は今の価格より上か下か?
と考えると、難しいですよねーorz


ですが、全くの初心者でも
上か下かを当てるだけなので、簡単に始められるようになってます。


僕も引き続き遊んでみますww


みなさんも興味がわいた方は、
クリック証券さんやその他の業者でデモ口座を申請して
遊んでみてください。

「こんなの余裕だぜ!!」などと思った人は、
僕にどうやったら勝てるか教えてくださいね(笑)

今回はこの辺で失礼します!!!

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

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

FX業者探し

みなさん、どうも久しぶりです!


ねぇ、愛って何なんだろう?
と、悩んでいるTonyです!

さて、今回は、FXブローカーを探す方法です!
国内業者は以下のサイトにFXブローカーの一覧があります。

http://forexpress.com/trader/


海外のMT4業者は以下のサイトから

http://www.100forexbrokers.com/mt4forexbrokers ←国別

http://www.earnforex.com/mt4-forex-brokers ←条件ソートできる


FXブローカーは、思ってたよりも多く、
また、その中でも対応が悪い業者や明らかに良からぬことを
行っている業者は多々あります。

ひとつひとつ調べていくのは、時間も体力も浪費してしまうかも
しれませんが、大事なお金を預けてトレードすることを考えれば、
FXブローカーを探すこともすごく大事なことだと思います。

すでにブローカーを決めていて、
実際に取引されている方も、いろんなブローカーをみていると、
面白い発見があるかもしれません。

時間があるときでかまいませんので、
まずは見てみてください。


そして、もし、ここはすごくいいなーって
ブローカーを発見したとしても、
まずは情報収集から始めてくださいね。

条件等がどれだけ良くても、
対応が悪い、出金が遅い、なかなか口座開設ができない
といった口コミがあったりもしますので・・・。


FXブローカー選びは慎重に!


今使っているブローカーに不安を感じている方も、
これを機に自分にあったブローカーを探してみては?

ここでTony流FX川柳

「適当に 選ぶと怖い ブローカー」

今回の記事は、
僕がいつもお世話になっているサイトを参考にしました!

以上、失礼しましたー!!

2012年5月16日|コメント (0)

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

DLLって安心なの?

こんにちは!

G.Wは体力の限界まで楽しんだ
Tonyです!

連休明けは
やる気があまり出てこない・・・
・・・なんて言ってられません!

がんばりますよー!


さて、今回はDLLに関してお話します。

EAには、ロジックの都合上DLLファイルを提供しているものがあります。
MetaTraderはこのDLLファイルの呼び出しが可能で、とても便利です。


ですが、DLLは悪用されると大変キケンなものになったりします。

もちろん、弊社から提供しているものは、怪しい動きやウィルスなどは
ありませんよ(^.^)/


弊社からDLLを提供する際に「Allow DLL import」にチェックを入れる
等と案内していると思いますが、これは弊社からのDLLに対してのものであって、
他のEAのDLLなどは信頼できるもの以外はなるべく許可しないようにしたほうが
良いと思います。


海外サイトなどからEAのファイルをダウンロードして使用するときには
十分注意しないと、いつウィルスに感染するか分かりません!

「こりゃすごいEA見つけた!!!」と思って、
ダウンロード→すぐに実行→もしウィルスを含むファイルだったら...。

今はまだそういうEAを見たことはありませんが、
世の中には意味も無く悪いことをする人もいます。


自分自身を守るためにもこの辺の知識は身に付けておきたいところですね。


今回は少し短いですが、この辺で!


ここでTony流プログラム川柳!
「DLL ナメると怖い ウィルスかも?」


・・・最近、キレがないですね・・・


以上、Tonyでしたー!

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

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