Mntiwana, Bar to Useに0を入れると、まだ開いているバーでシグナルを取得することになります(EAにとって危険です、IMHO)0より大きい場合は、EAは開いているバーから戻って閉じたバーからシグナルを取得します、したがってBarToUse = 2とすると、EAは2本戻ってチェック することになります。
aress: hi mladen....please help me....ı was posted but ı guess you can't see... OK... ı have a got indicator ... ı need histo version.thank you very much.
mrtools: Mntiwana, Bar to Useに0を入れると、まだ開いているバーでシグナルを取得することになります(EAにとって危険です、IMHO)0より大きい場合、EAは開いたバーから戻って閉じたバーからシグナルを取得します、したがってBarToUse = 2とすると、EAは2バー遡ってチェックすることになります。
Mntiwana, Bar to Useに0を入れると、まだ開いているバーでシグナルを取得することになります(EAにとって危険です、IMHO)0より大きい場合は、EAは開いているバーから戻って閉じたバーからシグナルを取得します、したがってBarToUse = 2とすると、EAは2本戻ってチェック することになります。
こんにちは、mladenです...どうか私を助けてください...ıは投稿されましたが、あなたは見ることができないと思います...OK...ıはインジケータを持っています...ıはヒスト版が必要です、どうもありがとうございました。
hi mladen....please help me....ı was posted but ı guess you can't see... OK... ı have a got indicator ... ı need histo version.thank you very much.
アレス
インジケーターのオリジナル(デコンパイルされていない)ソースコードをお持ちですか?もしあれば、作業できるようにオリジナルのmq4ファイルを投稿してください。
_________________
PS: あなたはまた、これをチェックすることができますhttps://www.mql5.com/en/forum/174961/page4 私が見る限り、それはそれです。
こんにちは、皆さん。
私のコードを見てください。
このインジケータは、icustom関数で 別のインジケータを呼び出しています。
問題は、時々、シグナルの条件が満たされていないときでも、このインジケータは偽のサウンドアラートを生成することです。
このインジケータは偽のシグナルを発生させ、その偽のシグナルは矢印を表示しないことです。
どこに問題があるのかわかりません。私の限られた知識で)試してみましたが、成功しませんでした。
偽のアラートを停止させるにはどうしたらいいですか?矢印があるときだけアラートが鳴るようにするにはどうしたらいいですか?
助けてください。
ありがとうございます。
int start()
{
int counted_bars=IndicatorCounted();
//----
if(counted_bars>0) counted_bars--;
int limit=Bars-counted_bars;
int j;
for(int i=limit; i>=0; i--)
{
arr_up = EMPTY_VALUE; arr_dn = EMPTY_VALUE.j=i; arr_dn = EMPTY_VALUE;
j=i;
double var1 = 0;
double var2 = 0;
for (j = i; j <= i + 9; j++) var2 += MathAbs(High[j] - Low[j]);
var1 = var2 / 10.0;
double sellprevious = iCustom(NULL,0, "MA-Repaint", FastEMA,SlowEMA,signal,price,0,i);
double buyprevious = iCustom(NULL,0, "MA-Repaint", FastEMA,SlowEMA,signal,price,1,i);
静的 datetime LastAlert;
datetime curbar = Time[0];
if (buyprevious !=EMPTY_VALUE )
{
arr_up=iLow(Symbol(),0,i) - (var1/2);
DrawLine("EntryLine11",iHigh(Symbol(),0,i+1),EntryLineColor);
if ( LastAlert != curbar && !upalert){。
アラート(Symbol()," ",Period(), "BUY")。
upalert=true。
downalert=false。
LastAlert =curbar;
}
}
else if(sellprevious !=EMPTY_VALUE )
{
arr_dn=iHigh(Symbol(),0,i) + (var1/2);
DrawLine("EntryLine11",iLow(Symbol(),0,i+1),EntryLineColor);
if ( LastAlert != curbar && !downalert){。
アラート(Symbol()," ",Period(), "SELL")。
downalert=true。
upalert=false。
LastAlert = curbar;
}
}
}
よろしくお願いします。
私のコードをご覧ください。
このインジケータは、icustom関数で別のインジケータを呼び出しています。
問題は、シグナルの条件が満たされていないときでも、このインジケータが偽のサウンドアラートを出すことがあることです。
このインジケータは偽のシグナルを発生させ、その偽のシグナルは矢印を表示しないのです。
どこに問題があるのかわかりません。私の限られた知識で)試してみましたが、成功しませんでした。
偽のアラートを停止させるにはどうしたらいいですか?矢印があるときだけアラートが鳴るようにするにはどうしたらいいですか?
助けてください。
ありがとうございます。
int start()
{
int counted_bars=IndicatorCounted();
//----
if(counted_bars>0) counted_bars--;
int limit=Bars-counted_bars;
int j;
for(int i=limit; i>=0; i--)
{
arr_up = EMPTY_VALUE; arr_dn = EMPTY_VALUE.j=i; arr_dn = EMPTY_VALUE;
j=i;
double var1 = 0;
double var2 = 0;
for (j = i; j <= i + 9; j++) var2 += MathAbs(High[j] - Low[j]);
var1 = var2 / 10.0;
double sellprevious = iCustom(NULL,0, "MA-Repaint", FastEMA,SlowEMA,signal,price,0,i);
double buyprevious = iCustom(NULL,0, "MA-Repaint", FastEMA,SlowEMA,signal,price,1,i);
静的 datetime LastAlert;
datetime curbar = Time[0];
if (buyprevious !=EMPTY_VALUE )
{
arr_up=iLow(Symbol(),0,i) - (var1/2);
DrawLine("EntryLine11",iHigh(Symbol(),0,i+1),EntryLineColor);
if ( LastAlert != curbar && !upalert){。
アラート(Symbol()," ",Period(), "BUY")。
upalert=true。
downalert=false。
LastAlert =curbar;
}
}
else if(sellprevious !=EMPTY_VALUE )
{
arr_dn=iHigh(Symbol(),0,i) + (var1/2);
DrawLine("EntryLine11",iLow(Symbol(),0,i+1),EntryLineColor);
if ( LastAlert != curbar && !downalert){。
アラート(Symbol()," ",Period(), "SELL")。
downalert=true。
upalert=false。
LastAlert = curbar;
}
}
}
ルフィ
テストできるように、呼び出されたインジケータも 掲載していただけませんか?
Mntiwana, Bar to Useに0を入れると、まだ開いているバーでシグナルを取得することになります(EAにとって危険です、IMHO)0より大きい場合、EAは開いたバーから戻って閉じたバーからシグナルを取得します、したがってBarToUse = 2とすると、EAは2バー遡ってチェックすることになります。
親愛なるMLADENとMRTOOLS。
......このEAの場合、どのバーを追加するのがより最適で適切でしょうか。遅いMA線が速いMA線と完全にクロスしたとき(どちらかの方法)......次のバーで取引が実行されるべきですが、クロス後に何バー後に取引が実行されるか、例えば最初のバーでのクロス後、2番目または3番目のバーでのクロス後、この方法でコーディングできますか。 写真を添付しますので質問をより良く説明して下さい、ありがとう。
よろしくお願いします。
インジケーターはこちらです。
ありがとうございます。
Mntiwanaさん、Bar to Useに0を入れると、まだ開いているバーのシグナルを取ることになります(EAにとって危険です、IMHO)0より大きいと、EAは開いたバーから戻って閉じたバーからシグナルを取ることになります、ですからBarToUse = 2とすると、EAは2バー遡ってチェックすることになります。
親愛なるMRTOOLS。
あなたが意味した......使用するバー= 2 ......クロス後2バー...ではない2 Nバー、あなたが書いたときBars BACK、私は混乱して、私の障害...私を修正してくださいありがとうございます。
よろしくお願いします。
MRTOOLSさんへ。
あなたが意味した......使用するバー= 2 ......クロス後の2バー......ではない2 Nバー、あなたが書くときBars BACK、私は混乱して、私の障害...私を修正ください。
よろしくお願いします。mntiwana
しかし、bars to use == 2 の場合、現在のバーから2バー後のクロスをチェック します。つまり、2バーの遅れがある場合
mntiwana いや、しかし、使用するバー== 2の場合、現在のバーから2バー後のクロスをチェックすることになり、現在のバーでのクロスはチェックされません。つまり、2バーの遅延がある場合
親愛なるMLADEN。
ありがとうございます。
よろしくお願いします。
===================================================================
オリジナルの "シンプルMAクロスEA "のコード
//
#define _doNothing 0
#define _doBuy 1
#定義 _doSell 2
int start()
{
int doWhat = _doNothing;
double diffc = iMA(NULL,0,Ma1Period,0,Ma1Method,Ma1Price,BarToUse) -iMA(NULL,0,Ma2Period,0,Ma2Method,Ma2Price,BarToUse)とする。
double diffp = iMA(NULL,0,Ma1Period,0,Ma1Method,Ma1Price,BarToUse+1)-iMA(NULL,0,Ma2Period,0,Ma2Method,Ma2Price,BarToUse+1).のようになります。
if ((diffc*diffp)<0))
if (diffc>0)
doWhat = _doBuy;
else doWhat = _doSell;
if (doWhat==_doNothing) return(0);
//
================================================
このように変更
#define _doNothing 0
#define _doBuy 1
#define _doSell 2
int start()
{
int doWhat = _doNothing;
double diffc = iCustom(NULL,0, "Hullparabolic 2.1",PERIOD_CURRENT,Ma1Period,Ma1Price,2,0 ,BarToUse)(ハルパラボリック 2.1,Ma1Price,2,0,0,BarToUse)。
-iCustom(NULL,0, "Hull parabolic 2.1",PERIOD_CURRENT,Ma2Period,Ma2Price,2,0 ,0,BarToUse)。
double diffp = iCustom(NULL,0, "Hull parabolic 2.1",PERIOD_CURRENT,Ma1Period,Ma1Price,2,0 ,0,BarToUse==2))です。
-iCustom(NULL,0, "Hull parabolic 2.1",PERIOD_CURRENT,Ma2Period,Ma2Price,2,0 ,0,BarToUse==2).If(diffc*diff)は、2.0を意味します。
if ((diffc*diffp)<0))
if (diffc>0)
doWhat = _doBuy;
else doWhat = _doSell;
if (doWhat==_doNothing) return(0);
//
=====================================