Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL5 (http://www.expert-advisor.com/forum/forumdisplay.php?f=221)
-   -   2D-Array mit Preisen befüllen (http://www.expert-advisor.com/forum/showthread.php?t=7187)

Yango 24.05.22 15:05

2D-Array mit Preisen befüllen
 
Hallo,

kann meinen Fehler nicht finden. Habe zwei 2D-Arrays, von denen eines mit den Preisen der HLINES und das andere mit den Preisen der RECTANGLE befüllt werden soll (erste Schleife für die Linien, zweite Schleife für die Rechtecke). Jeweils innerhalb der Schleife schaut eine Funktion (HasPriceBeenCheckedRectangles und HasPriceBeenCheckedRectangles), ob die Preise schon vorhanden sind. Lasse mir die Arrays über Print ausgeben.. nur irgendwie gibt er mir immer nur die Preise der Rechtecke (oben und unten aus, was so gewollt ist), aber nicht die, der Linien. Ich bin jetzt soweit, dass ich weiß, dass irgendetwas mit den If-Abfragen für die Preise der Linien nicht stimmt. Nur was.. Im Debugging-Modus sehe ich, dass er immer nur die obere oder die untere Linie bekommt und das wechselt sich ständig ab, nie bekommt er beide gleichzeitig.

double RectanglePrices[2][1000];
int RectanglePricesIdx = -1;
double LinePrices[2][1000];
int LinesPricesIdx = -1;

int obj_index = ObjectsTotal(0,0,-1);

for (int i = obj_index; i>=0; i--){

string object_name = ObjectName(ChartID(), i);
double Price_Line_Up = 0;
double Price_Line_Do = 0;

if (ObjectGetInteger(ChartID(), object_name, OBJPROP_TYPE) != OBJ_HLINE) continue;

if (ObjectGetInteger(ChartID(), object_name, OBJPROP_COLOR) == clrMaroon )Price_Line_Up = ObjectGetDouble(_Symbol,object_name,OBJPROP_PRICE) ;
if (ObjectGetInteger(ChartID(), object_name, OBJPROP_COLOR) == clrBrown ) Price_Line_Do = ObjectGetDouble(_Symbol,object_name,OBJPROP_PRICE) ;

if( !HasPriceBeenCheckedLines(Price_Line_Up, Price_Line_Do) ){
LinesPricesIdx++;
LinePrices[0][LinesPricesIdx] = Price_Line_Up;
LinePrices[1][LinesPricesIdx] = Price_Line_Do;
Print("Lines");
ArrayPrint(LinePrices,_Digits,NULL,0,LinesPricesId x,ARRAYPRINT_INDEX);
}
}

for (int i = obj_index; i>=0; i--){

string object_name = ObjectName(ChartID(), i);
double Price_Rectangle_Up = 0;
double Price_Rectangle_Do = 0;

if (ObjectGetInteger(ChartID(), object_name, OBJPROP_TYPE) != OBJ_RECTANGLE) continue;

if (ObjectGetInteger(ChartID(), object_name, OBJPROP_COLOR) == clrRed || ObjectGetInteger(ChartID(), object_name, OBJPROP_COLOR) == clrGreen){
Price_Rectangle_Up = ObjectGetDouble(_Symbol,object_name,OBJPROP_PRICE, 0);
Price_Rectangle_Do = ObjectGetDouble(_Symbol,object_name,OBJPROP_PRICE, 1); }

if( !HasPriceBeenCheckedRectangles(Price_Rectangle_Up, Price_Rectangle_Do) ){
RectanglePricesIdx++;
RectanglePrices[0][RectanglePricesIdx] = Price_Rectangle_Up;
RectanglePrices[1][RectanglePricesIdx] = Price_Rectangle_Do;
Print("Recs");
ArrayPrint(RectanglePrices,_Digits,NULL,0,Rectangl ePricesIdx,ARRAYPRINT_INDEX);
}
}

bool HasPriceBeenCheckedRectangles(double rectanglepriceUP, double rectanglepriceDO)
{
int i;
for (i=0;i<=RectanglePricesIdx;i++)
{
if ( (RectanglePrices[0][i]==rectanglepriceUP)||(RectanglePrices[1][i]==rectanglepriceDO) )
{
return true;
}
}
return false;
}

bool HasPriceBeenCheckedLines(double linepriceUP, double linepriceDO)
{
int i;
for (i=0;i<=LinesPricesIdx;i++)
{
if ( (LinePrices[0][i]==linepriceUP)||(LinePrices[1][i]==linepriceDO) )
{
return true;
}
}
return false;
}

traderdoc 25.05.22 18:18

Ob es daran liegt, kann ich nicht mit Sicherheit sagen, aber in beiden Zeilen

for (int i = obj_index; i>=0; i--){

müsste stehen:

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

traderdoc

Yango 26.05.22 08:25

Danke für die Antwort. Daran liegt es leider nicht..

lG

traderdoc 26.05.22 22:45

Ja, nur ein Fehler ist es trotzdem und sollte demnächst berücksichtigt werden.

traderdoc

Yango 27.05.22 08:51

Ja, das stimmt.


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:57 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum