Meine Freunde helfen!!! Ich habe Metatrader heruntergeladen, und er startet nicht in 32 Bit auf meinem 64 Bit Windows. Das ist das erste Mal, dass ich auf ein solches Problem gestoßen bin, bevor ich Metatrader von alpha forex installiert habe, und es hat alles gut funktioniert.
Und was, der Compiler hat diesen Offset nicht abgeschworen? Das bezweifle ich.
Jedenfalls ist es das, was wir wollten.
Offensichtlich wissen Sie nicht genau, wie Bitverschiebungen funktionieren. In den Bits niederer Ordnung kann nichts passieren. Im Zweifelsfall hilft Ihnen C++.
meat: In den niederwertigen Bits kann dort nichts vorkommen.
In MQL sind, glaube ich, alle Bitverschiebungen als zyklisch (ROL/ROR) implementiert (was Sie wahrscheinlich nicht wissen, weil weder C noch C++ sie haben), nur für solche Situationen
Ich glaube, in MQL sind alle Bitverschiebungen als zyklische Verschiebungen (ROL/ROR) implementiert (die Sie wahrscheinlich nicht kennen, weil weder C noch C++ sie haben), nur für solche Situationen
In der MQL-Dokumentation steht nichts über eine zyklische Verschiebung, also wird die übliche Verschiebung angenommen. Aber ich habe dort den folgenden Satz gefunden
Es wird nicht empfohlen, mehr oder die gleiche Anzahl von Bits zu verschieben als die Anzahl der Bits in der zu verschiebenden Variablen, da das Ergebnis dieser Operation undefiniert ist.
Dies ist falsch. Bei bitweisen Operationen kann es kein undefiniertes Ergebnis geben. Es ist nur so, dass das abgehende Bit entweder in einem speziellen Flag gespeichert wird oder nicht, was aber keine Auswirkung auf den Verschiebealgorithmus hat, d.h. die rechten Bits werden sowieso mit Nullen aufgefüllt. Wenn es sich um eine zyklische Verschiebung handelt, muss dies explizit angegeben werden (obwohl eine normale C++-kompatible Verschiebung korrekter wäre).
In der MQL-Dokumentation steht nichts über eine zyklische Verschiebung, also wird eine normale Verschiebung angenommen. Allerdings habe ich dort einen solchen Satz gefunden:
Dies ist falsch. Bei bitweisen Operationen kann es kein undefiniertes Ergebnis geben. Es ist nur so, dass das abgehende Bit entweder in einem speziellen Flag gespeichert wird oder nicht, aber das hat keinen Einfluss auf den Verschiebungsalgorithmus, d.h. die rechten Bits werden sowieso mit Nullen aufgefüllt. Wenn es sich um eine zyklische Verschiebung handelt, muss man das explizit angeben (obwohl eine plain++-kompatible Verschiebung korrekter wäre).
Das mag sein.
Maximal 5 Bits bei 32-Bit-Ganzzahlen (bzw. 6 Bits bei 64-Bit-Ganzzahlen) dürfen an Verschiebeoperationen beteiligt sein. Wenn ein Verschiebungswert mehr als 5 (oder 6) Bits benötigt, behandeln verschiedene Prozessoren diese Situation unterschiedlich. In der Dokumentation haben wir diese Tatsache nur dadurch berücksichtigt, dass wir sagen, dass das Ergebnis der Operation undefiniert ist.
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Die mobilen Anwendungen MetaTrader 4 und MetaTrader 5 für Android wurden aktualisiert
pav36krs, 2014.12.20 10:21
Meine Freunde helfen!!! Ich habe Metatrader heruntergeladen, und er startet nicht in 32 Bit auf meinem 64 Bit Windows. Das ist das erste Mal, dass ich auf ein solches Problem gestoßen bin, bevor ich Metatrader von alpha forex installiert habe, und es hat alles gut funktioniert.Fehler bei bitweisen Operationen.
Wir erhalten 4, was 0 sein sollte. Wie viele Jahre MT-Polieren und immer noch solche Fehler.
Und was, der Compiler hat diesen Offset nicht abgeschworen? Das bezweifle ich.
Jedenfalls ist es das, was wir wollten.
Und was, der Compiler hat diesen Offset nicht abgeschworen? Das bezweifle ich.
Jedenfalls ist es das, was wir wollten.
In den niederwertigen Bits kann dort nichts vorkommen.
In der MQL-Dokumentation steht nichts über eine zyklische Verschiebung, also wird die übliche Verschiebung angenommen. Aber ich habe dort den folgenden Satz gefunden
Es wird nicht empfohlen, mehr oder die gleiche Anzahl von Bits zu verschieben als die Anzahl der Bits in der zu verschiebenden Variablen, da das Ergebnis dieser Operation undefiniert ist.
Dies ist falsch. Bei bitweisen Operationen kann es kein undefiniertes Ergebnis geben. Es ist nur so, dass das abgehende Bit entweder in einem speziellen Flag gespeichert wird oder nicht, was aber keine Auswirkung auf den Verschiebealgorithmus hat, d.h. die rechten Bits werden sowieso mit Nullen aufgefüllt. Wenn es sich um eine zyklische Verschiebung handelt, muss dies explizit angegeben werden (obwohl eine normale C++-kompatible Verschiebung korrekter wäre).
Ist es möglich, einen mit dem alten Build kompilierten Indikator als Ressource mit einem anderen Indikator zu verbinden?
Ich kann es so nicht zum Laufen bringen:
........
#resource "\\Indicators\\тфьу.ex4"
........
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
........
ExtLimeBuffer[i]=iCustom(_Symbol,0,"::Indicators\\тьфу.ex4",pr1,pr2,pr3,pr4,pr5,pr6,pr7,2,i);
........
return(rates_total);
}
sagt der Compiler dies:
unknown resource type 'C:\Program Files\MT4\MQL4\Indicators\тфьу.ex4' тфьу1.mq4 10 1
In der MQL-Dokumentation steht nichts über eine zyklische Verschiebung, also wird eine normale Verschiebung angenommen. Allerdings habe ich dort einen solchen Satz gefunden:
Dies ist falsch. Bei bitweisen Operationen kann es kein undefiniertes Ergebnis geben. Es ist nur so, dass das abgehende Bit entweder in einem speziellen Flag gespeichert wird oder nicht, aber das hat keinen Einfluss auf den Verschiebungsalgorithmus, d.h. die rechten Bits werden sowieso mit Nullen aufgefüllt. Wenn es sich um eine zyklische Verschiebung handelt, muss man das explizit angeben (obwohl eine plain++-kompatible Verschiebung korrekter wäre).
Das mag sein.
Maximal 5 Bits bei 32-Bit-Ganzzahlen (bzw. 6 Bits bei 64-Bit-Ganzzahlen) dürfen an Verschiebeoperationen beteiligt sein. Wenn ein Verschiebungswert mehr als 5 (oder 6) Bits benötigt, behandeln verschiedene Prozessoren diese Situation unterschiedlich. In der Dokumentation haben wir diese Tatsache nur dadurch berücksichtigt, dass wir sagen, dass das Ergebnis der Operation undefiniert ist.
...
schreibt der Compiler wie folgt:
unknown resource type 'C:\Program Files\MT4\MQL4\Indicators\тфьу.ex4' тфьу1.mq4 10 1