MT4 EA オリジナル関数について教えて下さい。

MT4EAで2つのシステムを使用した物を作っていますが、どうも上手く行きません。システムは単純でAシステムはストキャスティクス20以下で買って、
MACDがデットクロスしたら買い決済。Bシステムはのそ逆でストキャスティクス80以上で売りMACDがゴールデンクロスしたら売り決済と言うものです。

if(OrderMagicNumber() == 10 ) odSTMACDB = cnt; ←Aシステム
if(OrderMagicNumber() == 20 ) odSTMACDS = cnt; ←Bシステム
として
————中略———————————-
オリジナル関数の宣言を
int STBst(int %Kperiod,int %Dperiod,int slowing)
int STBmcd(int fast,int slow,int signal)
{
double PKa,PDa;
double MACkakoa,MACgennzaia;
double MACkakob,MACgennzaib;
double PKa = iStochastic(NULL,0,%Kperio d,%Dperiod,slowing,MODE_SMA,0,MODE_MAIN,0);
double PDa = iStochastic(NULL,0,%Kperiod,%Dperiod,slowing,MODE_SMA,0,MODE_SIGNAL,0);

//一つ前のMACDのメイン
MACkakoa = iMACD(NULL,0,fast,slow,signal,PRICE_CLOSE,MODE_MAIN,1);
//一つ前のMACDのシグナル
MACkakob = iMACD(NULL,0,fast,slow,signal,PRICE_CLOSE,MODE_SIGNAL,1);

//現在のMACDのメイン
MACgennzaia = iMACD(NULL,0,fast,slow,signal,PRICE_CLOSE,MODE_MAIN,0);
//現在のMACDのシグナル
MACgennzaib = iMACD(NULL,0,fast,slow,signal,PRICE_CLOSE,MODE_SIGNAL,0);

//もしST20以下になったら
if( PKa <=20 && PDa <=20 )
{
return(1);
}

//もしMACDがDCしたら
if( MACkakoa < MACkakob && MACgennzaia >= MACgennzaib)
{
return(2);
}

return(0);
}

箸靴泙靴燭、A,Bシステム共に'(‘ – function definition unexpectedと
‘Kperiod’ – variable not defined ‘Dperiod’ – variable not defined
‘slowing’ – variable not defined と言うふうに引数エラーが返ってきてしまいます。ストキャスティクスの引数部分intをdoubleにしたりしましたが駄目でした。関数の宣言の仕方が悪いと思うので、と言うか知らないので教えて下さいお願いします。

..[補足]..
ftlabo_kirin様 また見て頂けるかどうかわかりませんがファイルUPしてみます http://u3.getuploader.com/mt/download/384/ST_MACD_2System.mq4 ご教授宜しくお願い致します。

回答1

冒頭のサブルーチンの定義の仕方がおかしいです。

int STBst(int %Kperiod,int %Dperiod,int slowing)
int STBmcd(int fast,int slow,int signal)
{

この書き方だと、STBstの関数の定義が行われていません。
それぞれ個別で定義させる必要があります。

int STBst(int %Kperiod,int %Dperiod,int slowing) {

}
int STBmcd(int fast,int slow,int signal){

}

みたいな感じですね。

int STBst(int %Kperiod,int %Dperiod,int slowing) の定義が、
中カッコの中に適応されていないため、今回のような変数の定義エラーがでています。

ご参考になれば幸いです。

プログラム全体のソースを提供いただければより具体的なアドバイスができると思いますよ。

2010/8/13追記

ソースも確認しましたが、
やはり上記 瞭睛討原因のようです。

サブルーチンのなかでどのような計算を行いたかったのでしょうか?

コメントを残す

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

CAPTCHA