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: 4973
Beiträge: 43323
Benutzer: 7.221
Aktive Benutzer: 81
Links: 84
Wir begrüßen unseren neuesten Benutzer: Thomas75
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 4 Stunden
- Thomas75
vor 17 Stunden
- JosephTK
vor 2 Tagen
- Hopfen&Mal...
vor 3 Tagen
- frankmicha...
vor einer Woche
- DFeck

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

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #11 (permalink)  
Alt 28.04.22
Mitglied
 
Registriert seit: Apr 2022
Beiträge: 31
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);
}
  #12 (permalink)  
Alt 29.04.22
Benutzerbild von Indikator-Trading
Premium Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 345
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.
  #13 (permalink)  
Alt 29.04.22
Mitglied
 
Registriert seit: Apr 2022
Beiträge: 31
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
  #14 (permalink)  
Alt 03.05.22
Mitglied
 
Registriert seit: Apr 2022
Beiträge: 31
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.
  #15 (permalink)  
Alt 05.05.22
Mitglied
 
Registriert seit: Apr 2022
Beiträge: 31
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..
  #16 (permalink)  
Alt 20.07.22
Mitglied
 
Registriert seit: Apr 2022
Beiträge: 31
Yango befindet sich auf einem aufstrebenden Ast
Standard

Weisst du zufällig auch, wie ich den zweinächsten Preis erhalte? Für mich grad schwieriger, als gedacht!

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) == clrMaroon){
double TempValue_red_zone = ObjectGetDouble(0, ObjectNameTemp, OBJPROP_PRICE);

if(MathAbs(TempValue_red_zone - bid) < Price_Difference_Min_Red_Up){
Price_Difference_Min_Red_Up = MathAbs(TempValue_red_zone - bid);
ObjektName_zone_red_up = ObjectNameTemp;
ObjektNumber_zone_red_up = i;
temp_red_up = TempValue_red_zone;
Print(temp_red_up);
}
}
}
Thema geschlossen

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 +1. Es ist jetzt 15:44 Uhr.





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