Fehler, Irrtümer, Fragen - Seite 1011

 
//Test.mqh
class A {
public:
        virtual int f() { return ( 1 ); }
};
//TestLib.mq5
#property library
#include "Test.mqh"
int g( A* pA ) export { return ( 5 ); }

//Test.mq5
#include "Test.mqh"
#import "TestLib.ex5"
        int g( A* pA );
#import
void OnStart()
{
        A* pA = new A();
        Print( g( pA ));
        delete( pA );
}
So weit ist alles in Ordnung, aber sobald ich es in Test.mq5 einfüge, zum Beispiel
class B : public A {
};
und erzeugt sofort einen Ausführungsfehler - nicht gefunden g in TestLib.ex5
 
Silent:

datetime ist bereits vorhanden

ArraySize - Anzahl der Balken, ArraySize-1 - letzter Balken, ArraySetAsSeries legt die Indizierungsrichtung fest, und Zellennummer = Balken, links oder rechts.

Hier finden Sie ein Testskript.

Ich danke Ihnen! Ich werde es ausprobieren.
 

Guten Tag!

Für TimeCurrent ist festgelegt, dass es die Zeit des letzten Ticks von MarketWatch zurückgibt. Beim Versuch, ihn zu benutzen, wird 20:30 angezeigt, obwohl der letzte Tick 22:59:57 war.

Warum kann das so sein?

Ich danke Ihnen!

 
ns_k:

Guten Tag!

Für TimeCurrent ist festgelegt, dass es die Zeit des letzten Ticks von MarketWatch zurückgibt. Beim Versuch, ihn zu benutzen, wird 20:30 angezeigt, obwohl der letzte Tick 22:59:57 war.

Warum kann das so sein?

Ich danke Ihnen!

Aus der Hilfe:

Im OnTick()-Handler gibt diese Funktion die Zeit des eingehenden Ticks zurück, der verarbeitet wird. In anderen Fällen (z. B. in den Handlern OnInit(), OnDeinit(), OnTimer() usw.) ist dies dieAnkunftszeit des letzten Kurses für ein beliebiges im Fenster "Market Watch" verfügbares Symbol, die gleiche Zeit, die in der Kopfzeile dieses Fensters angezeigt wird.

 
Lizar:

Aus der Referenz:

Ich danke Ihnen!

Wie erhalte ich dann die Ankunftszeit des letzten Angebots in onCalculate?

 
ns_k:

Ich danke Ihnen!

Wie kann man dann die Ankunftszeit des letzten Angebots in onCalculate ermitteln?

Ich habe mir Time Pink Floyd angehört und es herausgefunden :)

if(SymbolInfoTick(Symbol(),last_tick))

     {

      Print(last_tick.time,": Bid = ",last_tick.bid,

            " Ask = ",last_tick.ask,"  Volume = ",last_tick.volume);

     }

   else Print("SymbolInfoTick() failed, error = ",GetLastError());

   lEnd=last_tick.time; 
 

Guten Tag!

ArrayResize scheint in der globalen Initialisierungsphase für statische Klassen/Strukturmitglieder nicht zu funktionieren.

struct Test{
static string arr[];
Test() {
ArrayResize(arr,5) ;
if (ArraySize(arr)!=5) Alert("Wir haben einen Fehler");
}
};
Test Test;

 

Hat jemand das folgende Problem:

Terminalversion und Bit

Windows 8, MetaTrader 5 - Alpari UK, Build 821, 64 bit.

Beschreibung des Problems

Der Indikator auf H1 ruft den Indikator auf M1 auf. Der Befehl CopyBuffer kopiert falsche Daten. Dieses Problem tritt nur beim Strategietester auf. Im Terminal werden alle Daten ohne Fehler kopiert. Der Indikator M1 kopiert die Daten in den ersten Puffer.

Die Reihenfolge der Maßnahmen

Im Strategietester teste ich den Indikator SampleCopyBuffer auf H1. Ich habe den Zeitraum vom 2013-05-01 bis 2013-07-07 festgelegt. Klicken Sie auf Start, und lesen Sie die Fehlermeldungen in den Protokollen.

Ich erhalte das Ergebnis.

Und ich habe die Fehlermeldungen in den Protokollen gelesen. Indikatorpufferwert von M1 stimmt nicht mit dem CopyHigh-Wert überein.

Erwartetes Ergebnis

Die Werte von CopyBuffer und CopyHigh sollten gleich sein.

Weitere Informationen

Beim Start des Terminals liegt kein Fehler vor. Nur im Strategie-Tester. Bitte beachten Sie meine Indikatoren im Anhang. SampleHighs wirkt auf M1 und wird vom SampleCopyBuffer-Indikator aufgerufen, der auf H1 wirkt.
Dateien:
 
denmax:

Guten Tag!

ArrayResize scheint in der globalen Initialisierungsphase für statische Klassen/Strukturmitglieder nicht zu funktionieren.

struct Test{
static string arr[];
Test() {
ArrayResize(arr,5) ;
if (ArraySize(arr)!=5) Alert("Wir haben einen Fehler");
}
};
Test Test;

Vielen Dank für Ihre Nachricht, wir werden den Fehler korrigieren. Ihr Code erzeugt eine Fehlermeldung über die fehlende statische Zeichenfolge arr[]; damit Ihr Code korrekt funktioniert, müssen Sie die statische Variable vor der Testinstanz der Klasse Test "platzieren".

struct Test{
   static string arr[];
   Test() {
       ArrayResize(arr,5) ;
       if (ArraySize(arr)!=5) Alert("We have a bug"); 
    } 
};

string Test::arr[];

Test test; 
 

Guten Tag!

Ich schreibe gerade ein Skript, das einige Merkmale von benutzerdefinierten Indikatoren aus meiner eigenen Produktion analysieren soll :)

In der Hilfe wird angegeben, dassIndicatorCreate verwendet werden soll

für die Aufnahme des Indikatorgriffs. Ich verstehe fast alles, aber es sieht sehr seltsam aus, wenn der Indikator in dem Diagramm ist, das das Skript verwendet, muss es den Indikator erneut erstellen. Vielleicht gibt es eine Möglichkeit, die bereits berechneten Indikatorwerte in das Skript zu übernehmen?

Ich danke Ihnen!