Kleinsten Wert raus filtern und speichern

 
for (int i = ObjectsTotal(0,-1)-1; i>=0; i--){

        worth = (MathAbs(bid-ObjectGetDouble(ChartID(),objects_lines,OBJPROP_PRICE))); 
}

Hallo, ich habe folgendes Problem: Ich will den Preis des Objekts mit dem kleinsten Abstand zum aktuellen Kurs bekommen, sowie den Preis des Objekts mit dem 2. größten Abstand zum Kurs. 

Da ja die Schleife immer wieder durchläuft und der Wert sich ständig ändert, müsste ich diesen Wert raus filtern und in einer globalen Variable speichern.. 

Globalvariablen des Kundenterminals - Nachschlagewerk MQL5 - Nachschlagewerk über die Sprache des algothitmischen/automatischen Handels für MetaTrader 5

Ich muss zugeben, dass ich gerade absolut keinen Plan habe, wie ich weiter machen soll und wäre über Lösungsansätze und jede andere Hilfe sehr dankbar. Vielleicht ist es ja auch anders machbar und einfacher.

("worth" gibt mir gerade alle Abstände zum aktuellen Kurs wieder.)

Dokumentation zu MQL5: Globalvariablen des Kundenterminals
Dokumentation zu MQL5: Globalvariablen des Kundenterminals
  • www.mql5.com
Globalvariablen des Kundenterminals - Nachschlagewerk MQL5 - Nachschlagewerk über die Sprache des algothitmischen/automatischen Handels für MetaTrader 5
 
  1. Wenn Du nicht zu viele Objekte hast, machst Du eine zweite Schleife und sucht das Minimum, das größer ist als das erste Minimum.
  2. Schreib alle Preis in eine Array (so groß wie die Anzahl der Objekte), sortiere das Array und nimm die kleinsten beiden.
PS: Man muss nicht für jede Frage einen neuen Thread aufmachen, das thematisch zu einem Vorgänger passt.
 
Carl Schreiber #:
  1. Wenn Du nicht zu viele Objekte hast, machst Du eine zweite Schleife und sucht das Minimum, das größer ist als das erste Minimum.
  2. Schreib alle Preis in eine Array (so groß wie die Anzahl der Objekte), sortiere das Array und nimm die kleinsten beiden.
PS: Man muss nicht für jede Frage einen neuen Thread aufmachen, das thematisch zu einem Vorgänger passt.

Das war nicht meine Absicht. Manchmal sieht man die Beiträge irgendwie nicht mehr, ich dachte, er wäre gelöscht.

 
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, weshalb ich das ganze nicht wirklich verstehen kann. 

 
Yango #:

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, weshalb ich das ganze nicht wirklich verstehen kann. 

Ganz verstehe ich nicht, was Du willst, aber Du verkaufst zum Bid und kaufst zum Ask, auf dem Chart werden nur Bid gezeichnet, daher kann es passieren, dass man meint zu sehen, es müsste was passieren, aber.,,