Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 5 > Programmierung MQL5

Programmierung MQL5 Hier gehts rund ums Programmieren in MQL5.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4841
Beiträge: 42757
Benutzer: 7.157
Aktive Benutzer: 94
Links: 83
Wir begrüßen unseren neuesten Benutzer: Jasonheamp
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einer Stunde
- Jasonheamp
vor einem Tag
- Tagtranple...
vor 3 Tagen
- Albert12
vor 4 Tagen
- guentheral...
vor einer Woche
- Graf-Rotz

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 24
Gesamt: 24
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #11 (permalink)  
Alt 28.04.22
Neues Mitglied
 
Registriert seit: Apr 2022
Beiträge: 14
Yango befindet sich auf einem aufstrebenden Ast
Standard

Hallo

also ich muss sagen, stark und clever gelöst.. und das ohne Array(dachte ich bräuchte eins). Ich habe es für mich noch etwas angepasst, jetzt habe ich auch meinen Preis! mit DBL_MAX habe ich bis jetzt noch nicht gearbeitet, sehr interessant zu sehen. Kannst du mir noch sagen, warum du "ObjektNumber_of_min" auf -1 gesetzt hast, beim initialisieren? Kann es sein, dass die Objektnummern automatisch über ein Array abgefragt werden?

double Price = SymbolInfoDouble(Symbol(), SYMBOL_ASK);
double Price_Difference_Min = DBL_MAX;

int ObjektNumber_of_Min = -1;
string ObjektName_of_Min = "";
double price_temp = "";


for(int i = 0; i < ObjectsTotal(0, 0, -1) ; i++){
string ObjectNameTemp = ObjectName(0, i, -1, -1);
if (ObjectGetInteger(ChartID(), ObjectNameTemp, OBJPROP_TYPE) == OBJ_HLINE && ObjectGetInteger(ChartID(), ObjectNameTemp, OBJPROP_COLOR) == clrAqua){
double TempValue = ObjectGetDouble(0, ObjectNameTemp, OBJPROP_PRICE, 0);

if(MathAbs(TempValue - Price) < Price_Difference_Min){
Price_Difference_Min = MathAbs(TempValue - Price);
ObjektName_of_Min = ObjectNameTemp;
ObjektNumber_of_Min = i;
price_temp = TempValue;
}
}
}

if(Price_Difference_Min != DBL_MAX){
Print("Min Object Name: ", ObjektName_of_Min, " Id: ", ObjektNumber_of_Min);
Print("Price Difference: ", Price_Difference_Min);
Print("Price : ", price_temp);
}
Mit Zitat antworten
  #12 (permalink)  
Alt 29.04.22
Benutzerbild von Indikator-Trading
Premium Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 308
Indikator-Trading befindet sich auf einem aufstrebenden Ast
Standard

Hallo,

ObjektNumber_of_Min müsstest du nicht auf -1 setzen, allerdings könnte man später im Code auch hierdurch erkennen ob ein Objekt überhaupt gefunden worden ist welches deinen Suchvorgaben entspricht. Im Endeffekt mache ich dies ja später im Code mit if(Price_Difference_Min != DBL_MAX). Da könntest du also auch if(ObjektNumber_of_Min != -1) einsetzten und es würde ebenfalls funktionieren.
Es ist generell Sinnvoll alle Variablen mit einen Wert zu Initialisieren. Für die String Variable hätte ich aber besser NULL genommen, was etwas "sauberer" programmiert wäre.

Ich sehe gerade, dass du dies hier im Code hast:
Code:
double price_temp = "";
Double ist kein String, also bitte nicht mit "" initialisieren.
Mit Zitat antworten
  #13 (permalink)  
Alt 29.04.22
Neues Mitglied
 
Registriert seit: Apr 2022
Beiträge: 14
Yango befindet sich auf einem aufstrebenden Ast
Standard

Gut, dass du das sagst. Ich habe jetzt eine 0, statt "" bei der Initialisierung. Ich hatte mich schon gewundert.. manchmal kommt er dadurch durcheinander. Ich hatte irgendwie in Erinnerung, dass "" als Speicher fungiert, was falsch war.

Liebe Grüße
Mit Zitat antworten
  #14 (permalink)  
Alt 03.05.22
Neues Mitglied
 
Registriert seit: Apr 2022
Beiträge: 14
Yango befindet sich auf einem aufstrebenden Ast
Standard

int ObjektNumber_of_Min_SELL = -1;
string ObjektName_of_Min_SELL = "";
double price_temp_SELL = 0;

double Price_Difference_Min_Sell = DBL_MAX;

for(int i = 0; i < ObjectsTotal(0, 0, -1) ; i++){
string ObjectNameTemp = ObjectName(0, i, -1, -1);
if (ObjectGetInteger(ChartID(), ObjectNameTemp, OBJPROP_TYPE) == OBJ_HLINE && ObjectGetInteger(ChartID(), ObjectNameTemp, OBJPROP_COLOR) == clrBrown){
double TempValue_SELL = ObjectGetDouble(0, ObjectNameTemp, OBJPROP_PRICE, 0);

if(MathAbs(TempValue_SELL - ask) < Price_Difference_Min_Sell){
Price_Difference_Min_Sell = MathAbs(TempValue_SELL - ask);
ObjektName_of_Min_SELL = ObjectNameTemp;
ObjektNumber_of_Min_SELL = i;
price_temp_SELL = TempValue_SELL;
Print("SL SELL: ",price_temp_red_zone);
Print("Price SELL: ",price_temp_SELL);
}
}
}

if(bid >= price_temp_SELL && (price_temp_SELL > 0)) SELL(price_temp_red_zone);

Weisst du zufällig, welchen Fehler ich hier mache?

Meistens öffnet er die Position, doch manchmal auch nicht. Die Variable, welche der Funktion "SELL" übergeben wird, ist der Stop-Loss.

Der Preis und StopLoss passt vom Wert her immer (gebe die Preise über Print aus und sehe es auch auf dem Chart/Preis von Linie), weshalb ich das ganze nicht wirklich verstehen kann.
Mit Zitat antworten
  #15 (permalink)  
Alt 05.05.22
Neues Mitglied
 
Registriert seit: Apr 2022
Beiträge: 14
Yango befindet sich auf einem aufstrebenden Ast
Standard

Hat sich erledigt

Jetzt, wo ich den Code in der onTick() weiter nach oben verschoben habe, funktioniert es..
Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +2. Es ist jetzt 04:08 Uhr.





Die Suchmaschine - Der Wavesnode - Facebook Forum - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2022 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2020 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------