Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
(Bevor ich versuche, diesen Kommentar zu schreiben, denke ich, dass ich wild recherchiert habe, um eine Lösung zu finden, ja ich habe ähnliche Threads gefunden, aber ich habe keine Lösung für dieses Problem gefunden. )
Ich verwende den untenstehenden Code für Sell Order, der mir Stop Loss in Pips anzeigt, er zeigt mir den korrekten Wert an, bis der Stop Loss positiv wird.
Also, ich habe keine Ahnung, wie ich etwas versuchen kann, um dieses Problem zu lösen.
Jeder gute Kommentar, wäre besser, bitte.
(Anmerkung: Ich verwende im Moment keinen Trailing Stop. Auch unten Code nur für Info Updates, nicht für OrderSend() oder ähnliche Dinge. )
{
riskinpips=change_to_pips(OrderStopLoss()-OrderOpenPrice());
}
Print("stop loss in pips",DoubleToString(riskinpips,2));
Vielen Dank im Voraus.
(Hinweis: Screenshot-Etiketten, die mit dem Photo-Edition-Programm erstellt wurden, um mein Problem zu beschreiben)Der höchste Wert abzüglich des niedrigsten Wertes ergibt das Ergebnis, so dass Sie überprüfen können, welcher Wert der höchste ist.
{
// orderstoploss - orderopenprice
}
else if(OrderOpenPrice()>OrderStopLoss())
{
// orderopenprice - orderstoploss
}
Nun, es ist der höchste Wert minus dem niedrigsten Wert, der das Ergebnis ergibt, so dass Sie überprüfen können, welcher Wert der höchste ist.
{
// orderstoploss - orderopenprice
}
else if(OrderOpenPrice()>OrderStopLoss())
{
// orderopenprice - orderstoploss
}
Ich lache mich einfach kaputt, dass es mir nichts ausmacht. Ich glaube, das könnte mir helfen. Bald werde ich es ausprobieren.
Vielen Dank , Mr. Marco
#Profit Currency Calculate - Geschlossen
Bis jetzt funktioniert es perfekt.
Vielen Dank @Marco vd Heijden und @whroeder1
#Time - Offen
Seit ich begonnen habe, Forschung über Zeit / Uhr für meine EA. Ich sehe Autoren verwenden start() JUST in Indikator für sie.
Ich verwende OnTimer() und OnTick() in meinem EA, möchte ich nicht zu verwenden start().
So muss ich nur sicher sein / lernen, welche spezielle Funktion wäre besser für Time and Clock Funktion?
Ich werde weiter über dieses Thema 10 Stunden später zu forschen.
( Anmerkung: Ich habe bereits einige Time and Clock Indikatoren von der Mql5.com Codebase Seite gefunden - aber ich mag es nicht, zu kopieren und einzufügen )
Alle guten Kommentare, Forum teilen, und Links und etwas anderes wäre besser für mich.
Vielen Dank im Voraus.
Die Startfunktion wird nur in Skripten durch OnStart ersetzt. In Expert Advisors und Indikatoren sollte sie in OnTick bzw. OnCalculate umbenannt werden. Der Code, der während einer mql5-Programmoperation ausgeführt werden soll, sollte sich in diesen drei Funktionen befinden:
Siehe: https://www.mql5.com/en/docs/migration
Die Startfunktion wird nur in Skripten durch OnStart ersetzt. In Expert Advisors und Indikatoren sollte sie in OnTick bzw. OnCalculate umbenannt werden. Der Code, der während einer mql5-Programmoperation ausgeführt werden soll, sollte sich in diesen drei Funktionen befinden:
#Time - Offen
Seit ich angefangen habe, über Time / Clock für meinen EA zu recherchieren. Ich sehe Autoren verwenden start() JUST in Indikator für sie.
Ich verwende OnTimer() und OnTick() in meinem EA, möchte ich nicht zu verwenden start().
So muss ich nur sicher sein / lernen, welche spezielle Funktion wäre besser für Time and Clock Funktion?
Ich werde weiter über dieses Thema 10 Stunden später zu forschen.
( Anmerkung: Ich habe bereits einige Time and Clock Indikatoren von der Mql5.com Codebase Seite gefunden - aber ich mag es nicht, zu kopieren und einzufügen )
Alle guten Kommentare, Forum teilen, und Links und etwas anderes wäre besser für mich.
Vielen Dank im Voraus.
Verwenden Sie OnTimer().
Die Verwendung von TimeLocal() gibt ein besseres Erscheinungsbild, aber es wird nicht mit der Zeitzone des Brokers synchronisiert.
Die Verwendung von TimeCurrent() wird mit dem Broker synchronisiert, kann aber um Sekunden "springen", je nachdem, wann die Ticks eintreffen. Dieses Beispiel soll das Problem verdeutlichen:
int OnInit()
{
EventSetTimer(1);
return(INIT_SUCCEEDED);
}
void OnTimer()
{
Comment(StringFormat("%s - Local\n%s - Broker",TimeToString(TimeLocal(),TIME_SECONDS),TimeToString(TimeCurrent(),TIME_SECONDS)));
}
#Zeit - Geschlossen
Verwenden Sie OnTimer().
Die Verwendung von TimeLocal() gibt ein besseres Erscheinungsbild, aber es wird nicht mit der Zeitzone des Brokers synchronisiert.
Die Verwendung von TimeCurrent() wird mit Ihrem Broker synchronisiert, kann aber um Sekunden "springen", je nachdem, wann die Ticks ankommen. Dieses Beispiel soll das Problem verdeutlichen:
int OnInit()
{
EventSetTimer(1);
return(INIT_SUCCEEDED);
}
void OnTimer()
{
Comment(StringFormat("%s - Local\n%s - Broker",TimeToString(TimeLocal(),TIME_SECONDS),TimeToString(TimeCurrent(),TIME_SECONDS)));
}
Forum zum Thema Handel, automatische Handelssysteme und Testen von Handelsstrategien
Expert Advisor - div. Fragen
ehrlich_knave, 2016.11.30 01:28
IMHO wäre es besser, wenn Sie alle Ihre Lot-Berechnungen zusammen halten, anstatt sie zwischen OnChartEvent() und _lotCalc() aufzuteilen. Eine Funktion, die min / max / step prüft und das Inkrement / Dekrement durchführt.
const long & lparam , // Parameter of type long event
const double & dparam , // Parameter of type double event
const string & sparam // Parameter of type string events
)
{
_lotCalc();
//-------Process Button---------------------------------------------------------|
if ( sparam == _btnLotMinus )
{
ObjectSetInteger( 0, sparam, OBJPROP_STATE, false );
_lotSize = fmax(_lotMin, _lotSize-_lotStep);
_calcUpdade( CALC_CHANGE_LOT );
printf( " | Lot: %.2f ", _lotSize );
return;
} //---if Close
// ...
}
void _lotCalc()
{
//---
_lotMin = SymbolInfoDouble( _Symbol, SYMBOL_VOLUME_MIN );
_lotMax = SymbolInfoDouble( _Symbol, SYMBOL_VOLUME_MAX );
_lotStep = SymbolInfoDouble( _Symbol, SYMBOL_VOLUME_STEP );
//---
}
#Lot Step - Neu öffnen
@honest_knave- vielen Dank für Ihre große Hilfe zu Lot Size und Lot Step.
Ich muss also nur diesen Teil des Codes verbessern, damit, wenn " Lot Size >= ( Lot Step * 100 ) ", der Lot Step um " Lot Step * 100 " erhöht wird.
if(sparam==lotbuttonplus)
{
if(lotsize>=(lotstep*100))
{
lotstep=lotstep*100;
Print("lot step: ",lotstep);
}
lotmaxdivide=lotmax/lotmax *(lotvalue*10);
lotsize=fmin(lotmaxdivide,lotsize+(( ctrlfalse) ? lotstep*10 : lotstep));
// global variable
infoupdate();
printf("Lot: %.2f ",lotsize);
ObjectSetInteger(0,sparam,OBJPROP_STATE,false);
return;
}
Vielen Dank im Voraus.