![]() |
|
Startseite | Registrieren | Hilfe | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Programmierung MQL5 Hier gehts rund ums Programmieren in MQL5. |
![]() |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
![]()
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); } |
|
|||
![]()
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 |
|
|||
![]()
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. |
|
|||
![]()
Hat sich erledigt
![]() Jetzt, wo ich den Code in der onTick() weiter nach oben verschoben habe, funktioniert es.. |
|
|||
![]()
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); } } } |
![]() |
Lesezeichen |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|