MT4のEAについて教えてください。エントリーの条件設定(BBのバンドウォーク)につ…

いてです。m(_ _)m
BBのバンドウォークと判断するEAについて教えてください。

条件は1本前から5本前のロウソク足の内、4本以上の終値がBBの1σを超えている。

int start()
{
int i;

High_Bands1=iCustom(NULL,0,"Bands",BandsPeriod,BandsShift,BandsDeviations,1,i);
Low_Bands1=iCustom(NULL,0,"Bands",BandsPeriod,BandsShift,BandsDeviations,2,i);

int Cnt = 0;
for(i=5;i>=1;i–)
{
if(Close[i] > High_Bands1)
Cnt++;
}//ロングのバンドウォーク条件
if(Cnt>=4 )
{ロングのエントリー条件}

Cnt = 0;
for(i=5;i>=1;i–)
{
if(Close[i] < Low_Bands1)
Cnt++;
}//ショートのバンドウォーク条件
if(Cnt>=4 )
{ショートのエントリー条件}

}
約1ヶ月前に、知恵袋で教えてもらって、色々作成してみたのですが、うまく稼働しません。
変数・関数を宣言する場所に問題があるのでしょうか?それとも何か他に問題があるのでしょうか?

回答1

今、出先なので、正確な記述が出来ませんが、

まず、ボリバンはiCustom関数ではなく、組み込み関数のiBands(…)を使用した方が稼働が早いです。

その上で、各条件分岐には、iBands(…,MODE_HIGH,1)という具合に、各足ごとのボリバの値を使うといいでしょう。

iBands()自体の使い方は、その上にカーソルを置いて「F1」キーを押せば、画面下に英語で出ます。

回答2

多分、示された簡略化されたプログラムでは判断できません。
{ロングのエントリー条件}
みたいなところはいずれにせよ、それ以外を明示頂ければ、アドバイスできると思います。

(他の方の回答を受け)
まさか、そこ(for文)とかは当たり前に記述を省略してるんですよね?
そうでないなら、if(Close[i] > High_Bands1) とかも全部間違ってることになっちゃいますよ。
もし提示されたプログラムが掛け値なしのものだったら、文法のイロハが分かってないレベルです。
そうでないことを祈りつつも、もしそうなら、独自のロジックを考える前にネットに転がっている簡単な動くプログラムを見て基本を理解しましょう。

ちなみに、提示されたプログラムを正しく書くとすれば、以下のようになります(これでも多少の省略はありますが)。

int start() {
int i;
double HighBand1[10],LowBand1[10];

for(i=1;i<=5;i++) {
HighBands1[i]=iCustom(NULL,0,"Bands",BandsPeriod,BandsShift,BandsDeviations,1,i);
LowBands1[i]=iCustom(NULL,0,"Bands",BandsPeriod,BandsShift,BandsDeviations,2,i);
}

int Cnt = 0;
for(i=5;i>=1;i–) {
if(Close[i] > HighBands1[i])
Cnt++;
}
//ロングのバンドウォーク条件
if(Cnt>=4 )
{ロングのエントリー条件}

Cnt = 0;
for(i=5;i>=1;i–) {
if( Close[i] < LowBands1[i])
Cnt++;
}
//ショートのバンドウォーク条件
if(Cnt>=4 )
{ショートのエントリー条件}

}


コメントを残す

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

CAPTCHA