bool signal_MACD()
{
bool signal_MACD = false; //изначально сигнал стоит false
double tmp = iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,0); //это текущий бар MACD
for(int i=1;i<=7;i++) //цикл for первый
{
for(int j=2;j<=7;j++) //цикл for второй (я подозреваю, что именно в for у меня ошибка)
{
if((iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,j)*tmp)>0.0) //если текущий бар MACD находится по одну сторону с одним из баров MACD, сдвинутых на 2 назад
{
if((iMACD(Symbol(),TF,fast_ema,slow_ema,signal_period,PRICE_CLOSE,MODE_MAIN,i)*tmp)<0.0) //если текущий бар MACD находится по разные стороны с одним из баров MACD, сдвинутых на 1 назад
{
signal_MACD = true;
break;
}
}
}
}
return(signal_MACD);
}
別のプロジェクトで試したが、同じ問題だった。
.defファイルを追加します。この点では、MT5とMT4では、良い意味で多くの違いがあります。
追加しましたが、効果はありませんでした。
皆さん、こんにちは。int型変数を文字列に変換して、文字列の長さを常に同じ2文字にする方法を教えてください(ただ、2桁と1桁が違っていて、困るのです)。何から実行するかについてのアドバイス、私は特定のソリューションを求めない:) 事前にありがとうございます。
追記:原理的には(if x < 10)とやって左に0を足せばいいのですが、もしかして何かデータ変換 機能が組み込まれているのでしょうか?
追加しましたが、効果はありませんでした。
友よ、私の論理を教えてくれ...。
結論から言うと
つまり、MACDは0に片寄った後、反対側で終わり、再び戻ってきたのです。MACDは、なんとなくゼロラインを突破して戻ってくる...。が、ストラテジーテスターでは、全然ダメで...。というのはなんで
スリッページの最大値は?
どれぐらい必要ですか?
皆さん、こんにちは。あなたは、文字列の長さが常に同じだったように、int型変数を文字列に変換する方法をアドバイスしてください - 2文字(ちょうど彼女は私が別の出来事と2桁と単一の値を持っており、それは悩む)。 何から実行するためのアドバイス、私は特定のソリューションを求めない:)事前にありがとうございました。
追記:基本的には、(if x < 10)とやって左に0を追加 すればいいのですが、もしかしたら、何かデータ変換機能が内蔵されているのでしょうか?
笑えない...。
ただ、時間帯や日によって広がりが大きく異なることがあるんです。だから、笑い事ではありません。
編集可能なファイル<indicator.mq4>をどこかに移動させるか、別の名前でコピーして何かしたのですが、コンパイル後、ターミナルのインジケーター一覧で、名前がグレーになり、非アクティブになってしまいました。
ただし、インジケーターは左ウィンドウバーの「リストツリー」のサイドメニューから利用でき、チャート上にドラッグして利用します。
このような状況に遭遇したことがある方は、その改善策をアドバイスしてください。
敬具
信じられなくなりますよ。
理由は単純で、<indicators>フォルダにインジケータが多すぎるからです。
不要な*.mq4を<Arxiv>に移動し、フォルダ内のインジケータを2/3に減らしたところ、すべて動作するようになりました。
誰が考えたのでしょう?
友よ、私の論理を教えてくれ...。
結論から言うと
つまり、MACDは0に片寄った後、反対側で終わり、再び戻ってきたのです。MACDは、なんとなくゼロラインを突破して戻ってくる...。が、ストラテジーテスターでは、全然ダメで...。というのはなんで
その後,i と j の値を表示して,何が起こるか見てみましょう。
2番目のループを修正する必要があると推測されます。