システムトレード研究所 〜FXで完全自動売買〜

このサイトでは、FXで完全自動売買を行うために必要な情報を書いていこうと思っています。システムを自分で作りたい方、システムトレードをやってみたい方は御覧になっていって下さい。
<< 関数の使い方を調べる方法 | main | リニューアル〜オーダーシステム〜 >>
関数に頻繁に出てくる引数
こんばんは、DCです。今日の記事は、「関数に頻繁に出てくる引数」という内容です。前回の「関数の使い方を調べる方法」の続きです。


今回は、関数を調べたときに頻繁に出てくる引数について説明します。大体の関数は引数が同じようなものが多いですので、今回説明する引数の使い方を覚えていれば、分からない引数を少し調べるだけでほとんどの関数が簡単に使えるようになります。インディケーター独自のパラメーターはiMACD関数を例に出して説明します。



string symbol

通貨ペアを選びます。大抵のインディケーターなどの関数はこれが一番最初にあります。現在そのシステムを動かしいているチャートの通貨ペアでいい場合は、NULLと入力します。基本的にNULLで問題ありません。


個別に通貨ペアを選びたい場合は、””を付けたあと中に通貨ペアを書きます。ドル円の場合は”USDJPY”、ユーロドルの場合は”EURUSD”と書きます。




int timeframe

時間足を決定します。大抵のインディケーターなどの関数はこれが二番目にあります。現在そのシステムを動かしいているチャートの時間足でよい場合は0と入力します。基本的に0で問題ありません。


個別に時間足を選びたい場合は、1分あしなら1を、15分足なら15を入力します。数字で入力する場合は、1時間足以上の場合も分で入力します。一時間足なら60、日足なら1440になります。


この引数には専用の変数のようなものを付いています。例えば、一時間足はPERIOD_H1と入力すれば60の代わりになります。これらはHelpの引数の詳細のところに青い文字のリンクが張られていますので、それを左クリックすれば説明が書いてあります。



int fast_ema_period,
int slow_ema_period
int signal_period


これはMACDの設定です。各インディケーター独自の設定は大体時間足を決定するtimeframeの後にあります。



int applied_price

これはインディケーターなどを時間足の始値、高値、安値、終値などのどれを使って計算するかを設定する引数です。これにも専用の変数のようなものが付いています。Helpの引数の詳細のところに青い文字のリンクが張られていますので、それを左クリックすれば説明が書いてあります。下記に内容を書いておきますので、参考にして下さい。


PRICE_CLOSE   終値
PRICE_OPEN   始値
PRICE_HIGH   高値
PRICE_LOW     安値
PRICE_MEDIAN  (高値 + 安値)/2
PRICE_TYPICAL (高値 + 安値 + 終値)/3
PRICE_WEIGHTED (高値 + 安値 + 終値 + 始値)/4



int mode

これはMACDの設定です。MACDのメインの線か、シグナルの線かを選びます。これにも専用の変数のようなものが付いているのですが、詳細のリンク先を調べた場合、似たような関数のものと一纏めにして紹介されています。場合によってはリンク先の表示された場所より少ししたに目的の変数のようなものが書かれている場合がありますので、それが自分の探している関数のものかどうかをよく確認して下さい。確認する方法は上に対応関数が書かれていますので、それで確認して下さい。



int shift

そのインディケーターの時間をシフトする数値です。0なら現在の値、1なら一つ前の足の値になります。1時間足なら、1と入力すれば一時間前の値になります。



大体のインディケーターなどの関数には、これらの引数が入っています。注意点としては、引数と引数の間には,(カンマ)を入れる、引数に変数を入れる場合は変数の型を同じにする、引数の順番を間違えない、というのがあります。これらに気をつけて関数を使用して下さい。


今回説明した引数の使い方を覚えていれば、大体の関数は問題なく使えるはずです。いまいち使い方がよく分からない場合は、Comment関数、Print関数などでその関数の戻り値を表示して、分からない引数のパラメーターを変更しながら確認するとよく分かると思います。



 

 宜しかったら、応援して下さい



システムトレード研究所〜FXで完全自動売買〜INDEXへ


----------------------注意----------------------
このブログは半角のスペースが認識されない為、コードを見易くするために全角で書いている場合があります。実際にプログラムにコードを書くときは、コピー&ペーストせずに半角で書いて行って下さい。

また、内容には注意を払っていますが、保障は出来ません。実際に運用する場合は、自己責任でお願いします。
| 小松 | MetaTrader4 プログラム初級編 | 23:48 | comments(3) | - |
//システムRSI------------------------------------------------------

#define MAGIC 122


void posclose()
{
for(int i = 0; i < OrdersTotal(); i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADE) == false) break;
if(OrderMagicNumber() != MAGIC || OrderSymbol() != Symbol()) continue;

OrderClose(OrderTicket(), OrderLots(), Bid,5,Red);
break;
}
}

int start()
{
if(Volume[0] > 1 || IsTradeAllowed() == false) return(0);
double rsi1= iRSI(NULL, 0, 12,PRICE_CLOSE,1);
double rsi2= iRSI(NULL, 0, 12,PRICE_CLOSE,2);

if(rsi2 < 60 && rsi1 >= 80)
{
posclose();
OrderSend(NULL, OP_BUY, 0.02, Ask, 5, 50*Point, 0, "", MAGIC, 0, Blue);
return(0);
}

return(0);
}

//システムRSI------------------------------------------------------

//システムMA-------------------------------------------------------------------

#define MAGIC 111


void posclose()
{
for(int i = 0; i < OrdersTotal(); i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADE) == false) break;
if(OrderMagicNumber() != MAGIC || OrderSymbol() != Symbol()) continue;

OrderClose(OrderTicket(), OrderLots(), Bid,5,Red);
break;
}
}

int start()
{
if(Volume[0] > 1 || IsTradeAllowed() == false) return(0);
double ma1= iMA(NULL, 0, 12, 0, MODE_SMA, PRICE_CLOSE,1);
double ma2= iMA(NULL, 0, 12, 0, MODE_SMA, PRICE_CLOSE,2);

if(ma2 > Close[2] && ma1 <= Close[1])
{
posclose();
OrderSend(NULL, OP_BUY, 0.03, Ask, 5, 50*Point, 0, "", MAGIC, 0, Blue);
return(0);
}

return(0);
}

//システムMA-------------------------------------------------------------------


この二つのシステムを同時に同じチャートの通貨で起動していたら
システムRSI、システムMAのポジションを同時にもっていたら
他方のOrderClose()のシグナルで手仕舞いされませんか?

ポジション識別インデックスMAGIC 111, 122 は
ポジションを持ったまま週末を迎え一度アカウントをログアウトして
MT4を終了してPCも切り、再び翌週アカウントにログインしてシステムRSI、システムMA
を起動してもMAGIC 111, 122はそれぞれのポジションで認識され、OrderClose()
もそれぞれ区別され手仕舞いされますか?

ターミナルの取引のタブはポジションがあると表示されますが、
でも口座でExpert Advisors
のサンプルで入っているものを起動しても全然取引のタブの所にポジション
が表示されませんがなぜですか?
リアルタイムでデモ口座でExpert Advisorsでテスト売買したいんですが
できないんですか?ストラテジーテスターのではないです。


| れい | 2008/03/28 4:55 AM |
>>れいさん

 基本的にマジックナンバーでシステムを分けていれば、片方がもう片方のルールで決済されてしまうということはありません。

 あと、マジックナンバーは週末を挟んでも、一度MT4をログアウトしても消えませんので問題ありません。

 デモ口座での売買ですが、可能です。
 おそらく口座が無効になっているか、自動売買機能がOnになっていません。

 MT4の右下を見て「無効な口座」と書かれていたら、ファイルの中のデモ口座の申請を選んで、再度デモ口座のアカウントを作ってください。

 自動売買機能は下記のアドレスに詳しく書いていますので、参考にして下さい。
 http://mastertraders.livedoor.biz/archives/50397956.html
| DC | 2008/03/28 2:09 PM |
ありがとうございます。
| れい | 2008/04/01 9:56 AM |









     12
3456789
10111213141516
17181920212223
24252627282930
31      
<< December 2017 >>



このページの先頭へ