Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 143
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Ich stimme zu, was das int(round) betrifft. Ich danke Ihnen. Eine explizite Typkonvertierung würde nicht schaden. Aber es funktionierte auch ohne explizite Typkonvertierung.
Ich habe keine Fehler. Der Build ist der neueste.
Danke, das MT5-Update hat geholfen. Der Fehler ist weg. der Build war vom 23. Juli 2013. im alten Build gab es übrigens keine Typumwandlungsbefehle, deshalb habe ich sie nicht bemerkt.
Wer hätte solch gravierende Fehler vom Compiler erwartet.
Danke, das MT5-Update hat geholfen. Der Fehler ist verschwunden. Der Build war vom 23. Juli 2013. Im alten Build gab es übrigens keine Typumwandlungsgarantien, so dass ich sie nicht bemerkt habe.
Wer hätte solch gravierende Fehler vom Compiler erwartet.
Sie müssen das Minimum im Zeitintervall finden. Ich habe den folgenden Code erstellt, um das Minimum im Zeitintervall zu finden:
Um Minima in diesem Intervall zu finden, verwende ich die Funktion CopyLow:
Dann erhalte ich, wenn ich es richtig verstehe, ein eindimensionales ArrayLow[],
Ich suche das Minimum darin mit ArrayMinimum:
Ich habe versucht, heute eine Startzeit von 1 Stunde und eine Endzeit von 2 Stunden einzustellen und Alert aufzurufen, um min=-1 zu prüfen.
Frage: Sind bei dieser Aufgabe die Funktionen richtig gewählt, um dieses Problem zu lösen, oder gibt es irgendwo einen Fehler? Ich muss den Mindestpreis erhalten.
Ich habe versucht, es im Handbuch nachzuschlagen, aber es ist ein klassenbasiertes Beispiel, und dazu bin ich noch nicht bereit.
Ich möchte einen EA schreiben, ohne Klassen zu verwenden. Ich habe alles Unwichtige aus der Betrachtung ausgeschlossen und für jeden 3 Zettel bekommen
Ich habe das folgende Programmfragment geschrieben:
Eingabe int Kurtz_Period=5; // schnelllebige Kurtz-Periode
input int Mittel_Period=8 ;
Eingabe int Long_Period=13;
int maHandle; //Handle des Indikators Gleitender Durchschnitt
double ma_buf[]; // Dies ist ein Puffer-Array für die Messwerte des gleitenden Durchschnitts der MA-Funktion
// und dann in die entsprechenden Arrays kopiert werden
datetime Time_buf[]; // Dies ist ein Array der Öffnungszeit der Bar
datetime Time_[6][150]; // Array der Öffnungszeit des Balkens
double Kurtz[6][70]; //das ist ein Array für den schnell gleitenden Kurtz, die Zeilennummern entsprechen den Anzahlen der verwendeten Währungen, während die Spalten die Anzahl der gleitenden Währungen sind
double Mittel[6][70]; // dies ist das Array für den gleitenden Durchschnitt Mittel
double Long[6][70]; // dies ist ein Array für eine lange Periode gleitender Long
string Name_symbol[6] = { "AUDUSD", "EURUSD", "GBPUSD", "USDCAD", "USDCHF", "USDJPY" } ; // Dies ist ein Text-Array mit Währungsnamen:
int nomer_instr; // dies ist eine Instrumentennummer (Währung), nur um die Zyklen nach Währungen zu organisieren
int OnInit()
{
//-----
//-------
}
void OnDeinit(const int reason)
{
//---
ArrayFree(Time_buf);
ArrayFree( ma_buf); // Nullstellung des freigegebenen Arrays
//-------
}
void OnTick()
{
//---------------------
ArraySetAsSeries(time_buf, true); //set indexing for the time_array array as in timeseries
ArraySetAsSeries(ma_buf, true); //Setzen der Indizierung für das Array ma_buf wie in timeseries
for( nomer_instr=0; nomer_instr<=5; nomer_instr++ ) // dies ist eine Schleife über alle verwendeten Währungen
{
int digit = int( SymbolInfoInteger( Name_symbol[nomer_instr], SYMBOL_DIGITS)); // dies ist die Anzahl der Ziffern in der Währungsangabe
CopyTime( Name_symbol[nomer_instr], PERIOD_M1,0,160,Time_buf); // historische Zeitdaten für jeden Balken in den Puffer kopieren
for( i=1; i<=145; i++ ) Time[nomer_instr][i]=Time_buf[i]; // Zeitpunkt der Eröffnung des ersten Balkens
//#############################################################################################
//Blockgenerierende Zählungen der ersten 3 Schiebetakte:Kurtz, Mittel, Long
manHandle = iMA( Name_symbol[nomer_instr],PERIOD_M1, Kurtz_Period , 0, MODE_SMMA, PRICE_CLOSE );
if( CopyBuffer(maHandle,0,0,155,ma_buf)<0 )
{
Alert("Fehler beim Kopieren von Indikatorpuffern ---PERIOD_M1,Kurtz_Period--- Gleitender Durchschnitt - Fehlernummer:",GetLastError());
Rückkehr;
}
for( i=1; i<=45; i++ ) Kurtz[nomer_instr][ i ] = NormalizeDouble( ma_buf[i], digit);
/*
//===============================================================
// BLOCK-Prüfung auf Balkenversatz wie bei Zeitreihen und Genauigkeit der Zahlennormalisierung
// MA-5 mit schneller Bewegung
if( Multi_Torgi == 0 && Optim_parametrov == nomer_instr ) // dies ist eine Taste zur Auswahl des Modus des Expert Advisors, jetzt ist er im Debug-Modus
{
for( i=1; i<=5; i++ )
{
if(i==1) Alert("====================");
if(i==1) Alert(" Eröffnungszeit des 1. Taktes: Time[nomer_instr][1]=",Time[nomer_instr][1] );
Alert(" Taktnummer: i=",i,", MA_buf[i]=",MA_buf[i],", Kurtz[nomer_instr][i]=",Kurtz[nomer_instr][i]);
}
}
//=================================================================
*/
//---------------------------------------------------------------------------------------------------------------------------
maHandle = iMA( Name_symbol[nomer_instr],PERIOD_M1, Mittel_Period, 0, MODE_SMMA, PRICE_CLOSE );
if(CopyBuffer(maHandle,0,0,155,ma_buf)<0)
{
Alert("Fehler beim Kopieren von Indikatorpuffern ===PERIOD_M1, Mittel_Period,=== Gleitender Durchschnitt - Fehlernummer:",GetLastError());
Rückkehr;
}
for( i=1; i<=45; i++ ) Mittel[nomer_instr][ i ] = NormalizeDouble( ma_buf[i], digit);
//----------------------------------------------------------------------------------------------------------------------
maHandle = iMA( Name_symbol[nomer_instr],PERIOD_M1, Long_Period, 0, MODE_SMMA, PRICE_CLOSE );
if(CopyBuffer(maHandle,0,0,155,ma_buf)<0)
{
Alert("Fehler beim Kopieren von Indikatorpuffern ===PERIOD_M1, Long_Period,===Moving Average - Fehlernummer:",GetLastError());
Rückkehr;
}
for( i=1; i<=45; i++ ) Long[nomer_instr][ i ] = NormalizeDouble( ma_buf[i], digit);
// Ende des Blocks, der die Zählungen der ersten 3 Folien bildet: Kurtz, Mittel,Long
//#############################################################################################
} // Ende der Schleife nach verwendeten Währungen
//============================================================
Andere Programmbetreiber
//============================================================
//-----------------------------------------
}// Ende von OnTick()
//+------------------------------------------------------------------+
Bei der Kompilierung dieses Programms werden keine Fehler festgestellt, aber bei der Prüfung im Logbuch für jeden Beleg wird ein
Fehlermeldung: 4806 lautet "angeforderte Daten nicht gefunden".
Bitte sagen Sie mir, wo ich den Fehler habe.
Ich danke Ihnen.
Verstehen Sie nicht das Prinzip des Typecasting? Es ist ganz einfach:
Jetzt scheint es klar zu sein) Es stellt sich heraus, dass der Operand int st von einem anderen Typ ist als datetime tp[].
Aus diesem Grund gibt es bei der Operation keine Umrechnung in Sekunden:
Ich habe versucht, das Minimum im Zeitintervall zu finden. Ich bin mir nicht sicher, ob ich es richtig mache. Können Sie den vorherigen Beitrag sehen?
Wie können Alert oder Comment ohne neue Ticks aufgerufen werden, um Wochenendprüfungen durchzuführen?
Sie müssen das Minimum im Zeitintervall finden. Ich habe den folgenden Code erstellt, um das Minimum im Zeitintervall zu finden:
Um Minima in diesem Intervall zu finden, verwende ich die Funktion CopyLow:
Dann erhalte ich, wenn ich es richtig verstehe, ein eindimensionales ArrayLow[],
Ich suche das Minimum darin mit ArrayMinimum:
Ich habe versucht, heute eine Startzeit von 1 Stunde und eine Endzeit von 2 Stunden einzustellen und Alert aufzurufen, um min=-1 zu prüfen.
Frage: Sind bei dieser Aufgabe die Funktionen richtig gewählt, um dieses Problem zu lösen, oder gibt es irgendwo einen Fehler? Sie müssen den Mindestpreis erhalten.
Bitte sorgfältig lesen:
Rückgabewert.
Die Funktion gibt den Index des gefundenen Elements zurück, wobei die Serialität des Arrays berücksichtigt wird. Schlägt siefehl, gibt die Funktion -1 zurück.
Daher sollte es so sein:
Prüfen und testen Sie an den Wochenenden und darüber hinaus, müssen Sie Skript.
Prüfen und testen Sie an den Wochenenden und darüber hinaus, müssen Sie Skript.