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 MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   Mehrdimensionales Array + loss of data due to type conversion (http://www.expert-advisor.com/forum/showthread.php?t=7093)

Ir0nm4n83 06.10.21 21:23

Mehrdimensionales Array + loss of data due to type conversion
 
Hallo zusammen,
mein EA lädt sich zuerst in nachfolgendes Array zuerst die Währung und sucht dann per Schleife nach allen dazu passenden Währungspaaren (bspw. zu EUR = EURUSD, EURCHF, etc.).

string Currency[8][8][3];

Currency[0][0][0] = "EUR";
Currency[1][0][0] = "USD";
...

Die Suchschleife speichert dann bspw. EURUSD unter Currency[0][1][0] ab...

--> Bis hier hin funktioniert alles tadellos. Als nächstes möchte ich die Correlation zwischen den unterschiedlichen Währungen abspeichern. An sich funktioniert das, aber ich bekomme bei nachfolgender Zeile immer und immer wieder die Meldung "possible loss of data due to type conversion", egal was ich mache.

(Currency[i][0][0] == CharToStr(StringGetChar(Currency[i][k][0],0)) + CharToStr(StringGetChar(Currency[i][k][0],1)) + CharToStr(StringGetChar(Currency[i][k][0],2)))

An sich ist das Array als String definiert. Somit klappt auch der Befehl "StringGetChar(Currency[i][k][0],0)". Sobald ich "CharToStr(" davor setze kommt die Meldung und ich weiß wirklich nicht was es ist. Ich nutze in einem anderen Indikator eine ähnliche Übergabe...

Currency_current = CharToStr(StringGetChar(_Symbol,0)) + CharToStr(StringGetChar(_Symbol,1)) + CharToStr(StringGetChar(_Symbol,2));

...aber hier kommt die Meldung nicht, weshalb ich davon ausgehe, dass es sich um ein Array-Problem handelt?

Ich wollte mir auch schon die Währungsbuchstaben schon vorab bei der Währungspaarsuche separat im Array abspeichern, aber da ich dafür auch "CharToStr" benötige, kam dieselbe Meldung...
Ich bin etwas überfragt.

Indikator-Trading 07.10.21 09:42

Hiermit funktioniert es auch ohne Warnungen:
Code:

(Currency[i][0][0] == CharToStr((char)StringGetChar(Currency[i][k][0],0)) + CharToStr((char)StringGetChar(Currency[i][k][0],1)) + CharToStr((char)StringGetChar(Currency[i][k][0],2)))
Der Grund hierfür ist der Rückgabetyp der Funktion StringGetChar, welcher ushort ist. Man macht also ein typecasting auf char und somit ist die Warnung weg.

Ir0nm4n83 07.10.21 20:53

Top, ich dank dir vielmals für die Erklärung!


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:41 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