Fragen Sie! - Seite 54

 

mögliche Lösung für 0 Puffer:

int currentBar=0;

double lowestFG=iCustom(NULL,0, "Forex-Grail Trade Indicator",period,PRICE_CLOSE,0, currentBar);

double highestFG = lowestFG;

for(;currentBar<4; currentBar++) lowestFG=MathMin(lowestFG, iCustom(NULL,0, "Forex-Grail Trade Indicator",period,PRICE_CLOSE,0,currentBar));

for(currentBar=0;currentBar<4; currentBar++) highestFG =MathMax(highestFG , iCustom(NULL,0, "Forex-Grail Trade Indicator",period,PRICE_CLOSE,0,currentBar));

für Puffer Nr. 1 müssen Sie alles noch einmal wiederholen

 
iscuba11:
Wie kann ich die Anzahl der Dezimalstellen begrenzen, die eine Kommentaranweisung im Diagramm anzeigt. Im Moment zeigt es ein variables Ergebnis als .00347892 an, und ich möchte, dass es nur .0035 anzeigt (gerundet auf die nächste Zahl)?
Vielen Dank für Ihren Beitrag! Dave

Funktion IndicatorDigits

 

Zunächst einmal möchte ich mich bei Ihnen allen für Ihre Hilfe bedanken. Ich glaube, ich kann jetzt meinen neuen EA zum Testen online stellen.

Ich habe noch eine Frage zu den Dezimalstellen.

Die Kommentaranweisung wird vom EA und nicht vom Indikator generiert. Die Funktion indicatordigits wird, glaube ich, im Indikator selbst verwendet und nicht im EA. Gibt es nicht eine einfache Rundung bis zu x Stellen einer Variablen, die ich verwenden könnte. Warum machen sie diese Sprache so kompliziert. Selbst einfache Sprache könnte dies wahrscheinlich tun!

Wie immer ist Feedback von Wissen und Weisheit willkommen. Bitte helfen Sie, wenn Sie können.

Vielen Dank schon mal!

 

Endlich habe ich Ihren Beitrag richtig gelesen, versuchen Sie Comment(DoubleToStr(doubleVariable, 4));

 

Das war's! Jetzt muss ich noch optimieren und testen. Ihr alle habt mich gesegnet - Danke!

Frieden und Liebe für alle, in Jesu Namen! Reverend Dave
 

Benötige mehr Hilfe bitte!

if(currency_decimal == 2) OpenTriggerLevel = DoubleToStr(OpenTriggerLevel,2);

Was ich versuche zu tun ist, haben die EA automatisch ändern Sie die Standard-OpenTriggerLevel von 4 Dezimalstellen auf 2, wenn der Benutzer 2 (currency_decimal) von 4 in der EA-Setup auswählt. Eine solche Änderung müsste für eine Währung wie USDJPY erfolgen, die 2 Dezimalstellen hat.

Offensichtlich mag der Compiler das zweite ' = ' Zeichen in der obigen Anweisung nicht.

Mit fortgesetzter Wertschätzung, Vielen Dank im Voraus für Ihren Beitrag Hilfe!

Dave
 

MQL4 hat eine vordefinierte Variable Digits, die die Anzahl der Dezimalstellen des Paares angibt.

DoubleToStr(OpenTriggerLevel, Ziffern);

der Code ist korrekt, wahrscheinlich liegt ein Fehler in der Variablendefinition vor.

 
asmdev:
MQL4 hat eine vordefinierte Variable Digits, die der Anzahl der Dezimalstellen des Paares entspricht.

DoubleToStr(OpenTriggerLevel, Digits);

Der Code ist korrekt, wahrscheinlich liegt ein Fehler in der Variablendefinition vor.

Ich habe dies ausprobiert, aber OpenTriggerLevel wird immer noch als .0004 statt .04 angezeigt:

if(currency_decimal == 2) DoubleToStr(OpenTriggerLevel,2);

Immer noch verwirrt???

 
iscuba11:
if(currency_decimal == 2) OpenTriggerLevel = DoubleToStr(OpenTriggerLevel,2);[/PHP]

What I am attempting to do is have the EA automatically change the default OpenTriggerLevel from 4 decimal places to 2 when the user selects 2 (currency_decimal) from 4 in the EA setup. Such a change would have to take place on a currency like USDJPY which is 2 decimal places.

Evidently the compiler does not like the second ' = ' sign in the above statement.

With continued appreciation, Thanks in Advance for your input assistance!

Dave

Das Problem bei dieser Anweisung ist, dass die Variable "OpenTriggerLevel" vom Typ "double" ist, während die Funktion einen "String" zurückgibt. Während der Code also syntaktisch korrekt ist, ist er semantisch falsch, und ich glaube, dass der Compiler sich deshalb beschwert.

Wenn Sie die Zeichenkette in einer Variablen speichern wollen, brauchen Sie dafür eine Variable. Andernfalls können Sie die Funktion "DoubleToStr" innerhalb des Arguments "Comment" verwenden, um die Stelle zu ersetzen, an der derzeit "OpenTriggerLevel" steht. Dort könnte es heißen

[PHP]DoubleToStr( OpenTriggerLevel, währung_dezimal )

und Sie bräuchten die 'if ..'-Anweisung gar nicht.

 

Weiß jemand, wie man mit dem Skript die Summe der einzelnen Käufe, Verkäufe, Kauf- und Verkaufsstopps, Kauflimits und Verkaufsstopps ermitteln kann?