Wie programmiert man? - Seite 93

 

thx aber können Sie mir erklären, warum

BuyCondition = BuyValueCurrent1 != EMPTY_VALUE

warum empty_value?

 

Trotzdem funktioniert es nicht und ich verstehe nicht, warum.

Hier sind meine Variablen

BuyValueCurrent = iCustom(NULL,TimeFrame,IndicatorName1,NumBars,0,1); // braintrend1 [/PHP]
BuyValueCurrent2 = iCustom(NULL,TimeFrame,IndicatorName2,NumBars,0,1); // braintrend2

and here is the statement

[PHP] BuyCondition = (BuyValueCurrent != EMPTY_VALUE && BuyValueCurrent2 != EMPTY_VALUE);

es gibt völlig unscharfe Ergebnisse, auch wenn der Indikator (Braintrend2stop und BrainTrend1Stop) SELL ist

 
clarc:
ich habe einen EA, der die Position öffnet und verwaltet, aber manchmal gibt der Indikator das gleiche Signal mehrfach und der EA öffnet jedes Mal, wenn dieses Signal herauskommt, eine neue Position - aber ich möchte nicht eine zweite oder dritte und so weiter und weiter Position, ich will nur die erste - ist es möglich, dass der EA die offene Position anhand der magischen Zahl und des Paares prüft, um solche Mehrfacheinträge zu vermeiden?

Hier ist die Idee:

int CountLongs()

{

int count=0;

int Handel;

int trades=OrdersTotal();

for(trade=0;trade<trades;trade++) {

OrderSelect(Handel,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()!=Symbol() || OrderMagicNumber() != MagicNumber) weiter;

if(OrderType()==OP_BUY) count++;

} //---- für

return(count);

}

int CountShorts()

{

int count=0;

int Handel;

int trades=OrdersTotal();

for(trade=0;trade<trades;trade++) {

OrderSelect(Handel,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()!=Symbol() || OrderMagicNumber() != MagicNumber) weiter;

if(OrderType()==OP_SELL) count++;

} //---- für

return(count);

}

Und in der Funktion start() :

if(CountLongs() == 0 && CountShorts() == 0) {

Ihre Einstiegsbedingung hier

}

Hoffentlich hilft das.

FerruFx

 
payback:
Jedenfalls funktioniert es nicht, und ich verstehe nicht, warum.

hier sind meine Variablen

BuyValueCurrent = iCustom(NULL,TimeFrame,IndicatorName1,NumBars,0,1); // braintrend1 [/PHP]
BuyValueCurrent2 = iCustom(NULL,TimeFrame,IndicatorName2,NumBars,0,1); // braintrend2

and here is the statement

[PHP] BuyCondition = (BuyValueCurrent != EMPTY_VALUE && BuyValueCurrent2 != EMPTY_VALUE);
es gibt völlig unscharfe Ergebnisse, auch wenn der Indikator (Braintrend2stop und BrainTrend1Stop) SELL sind

Ich kenne Ihre Indikatoren Braintrend1 und 2 nicht, ich habe nur angenommen, dass sie einen Pfeil auf dem Chart zeichnen, wenn eine Kaufbedingung erfüllt ist. In MT4 ist der Wert des Standardpuffers eine Konstante mit dem Namen "EMPTY-VALUE". Wenn es also keinen Pfeil gibt, ist der von iCustom() zurückgegebene Wert diese Konstante, und wenn es einen Pfeil gibt, ist der zurückgegebene Wert der Preis, auf den der Pfeil gesetzt wird.

So wie ich es verstanden habe, wollen Sie kaufen, wenn beide Indizes einen Pfeil anzeigen, nicht wahr?

 

Ja, das ist genau das, was ich tun möchte.

 
payback:
Ja, das ist genau das, was ich tun möchte

Überprüfen Sie also bitte Ihre iCustom()-Syntax.

 

was muss ich überprüfen? vielleicht habe ich etwas übersehen

double iCustom( string symbol, int timeframe, string name, ..., int mode, int shift)

Wenn es ein Kaufsignal gibt, wird es in Puffer 0 gespeichert, ansonsten ist er leer und Puffer 1 enthält das Verkaufssignal.

 
payback:
Was muss ich überprüfen? Vielleicht übersehe ich etwas
double iCustom( string symbol, int timeframe, string name, ..., int mode, int shift)
Nun, wenn es ein Kaufsignal gibt, wird es in Puffer 0 gespeichert, sonst ist er leer und Puffer 1 enthält das Verkaufssignal.

Posten Sie Ihr Signal hier, ich werde es mir ansehen.

 

OK, danke!

und bitte erklären

Dateien:
 
payback:
ok thx! und bitte erklären

Öffnen Sie BrainTrend1Stop.mq4.

Am Anfang der Datei finden Sie :

extern int NumBars=500;

extern int EnableAlerts=0;

extern int SignalID=0;[/PHP]This means that you have to fill those three parameters as arguments in the iCustom() call, like this:

BuyValueCurrent = iCustom(NULL,0,"BrainTrend1Stop",NumBars,EnableAlerts,SignalID,0,1); // braintrend1

[/PHP]About the buffer's number, you can see this:

#property indicator_color1 Magenta

#property indicator_color2 Aqua[/PHP]So the buffer 0 is Magenta and the buffer 1 is Aqua.

Thus if the Buy arrow's color is Aqua, the buffer's number is 1 and the iCustom call is:[PHP]BuyValueCurrent = iCustom(NULL,0,"BrainTrend1Stop",NumBars,EnableAlerts,SignalID,1,1); // braintrend1
A little lower you have:[PHP] SetIndexEmptyValue(1,0.0);

This means that the default empty value for the buffer 1 is set to 0.0; so when there is no arrow, the value returned by the iCustom() call will be 0.0.

So you should know the presence of the arrow checking its value against 0, like this (if the second indic follows the same behavior):[PHP]BuyCondition = (BuyValueCurrent > 0 && BuyValueCurrent2 > 0);

Zum zweiten Indikator: Ich denke, Sie sollten in der Lage sein, die gleiche Analyse selbst durchzuführen.