Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 730
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
bars[]
Der Compiler schimpft es in den höchstenTönen. Haben Sie dieses Design getestet oder nur angenommen, dass es funktionieren sollte, oder mache ich etwas falsch?
Ja, mein Fehler. Nennen Sie es. Im Allgemeinen geht es darum, den Variablen aussagekräftige Namen zu geben, dann müssen Sie keine zusätzlichen Variablen erstellen, deren Existenz nicht immer gerechtfertigt ist.
Der Grund ist nicht, etwas auszudrücken, sondern den Code bei der Arbeit mit ihnen zu verkürzen:
Und der Rest auf die gleiche Weise, sonst wird die Länge der Zeilen größer
Vielen Dank an alle für die Klarstellungen!
Ich habe sie nicht benannt, um etwas auszudrücken, sondern um den Code bei der Arbeit mit ihnen zu reduzieren:
Und der Rest auf die gleiche Weise, sonst wird die Länge der Zeilen größer
Vielen Dank an alle für die Klarstellungen!
Wenn Sie den Code auf ein Minimum reduzieren wollen, verweisen Sie direkt auf das Datenfeld
//| test09.mq5 |
//| Sergey Gritsay |
//| https://www.mql5.com/ru/users/sergey1294 |
//+------------------------------------------------------------------+
#property copyright "Sergey Gritsay"
#property link "https://www.mql5.com/ru/users/sergey1294"
#property version "1.00"
MqlRates bars[]; // массив для хранения данных цен OHLC
int start_bar=0; // с какого бара копируем
int count_bar=4; // сколько баров копируем
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
ArraySetAsSeries(bars, true);
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
if(CopyRates(Symbol(),PERIOD_CURRENT, start_bar, count_bar, bars)<count_bar) return;
if(bars[1].open<bars[1].close && bars[2].close>bars[3].close && bars[1].close>bars[2].close)
{
}
}
//+------------------------------------------------------------------+
Guten Tag!
Wo und wie werden erteilte Aufträge und offene Positionen beim Entladen (Löschen) eines Expert Advisors korrekt gelöscht? Wenn es nicht schwierig ist, geben Sie bitte ein Beispiel.
Ich danke Ihnen.
Einer der EAs hat irgendeinen seltsamen Unsinn angestellt. Der EA wird normal getestet, wenn Sie auf "Einzeltest ausführen" klicken, wird nur ein einziger, erster Test durchgeführt. Wenn Sie dann auf den einzelnen Test oder auf eine beliebige Zeile in der Optimierung klicken, wird diese im Journal angezeigt:
2017.02.08 13:31:05.165 Tester kann keine Eingaben für Pass 4234087422336 erhalten
2017.02.08 13:31:34.829 Tester kann keine Eingaben für Pass 4076312468706 erhalten
2017.02.08 13:31:47.973 Tester kann keine Eingaben für Pass 1004506640527 erhalten
Die anderen EAs verhalten sich normal. Was könnte das sein?
Meine Herren, Aufnahme einer riesigen 10000*10000-Matrix
{
//--- запишем файл
ResetLastError();
int handle=FileOpen(path,FILE_READ|FILE_WRITE|FILE_BIN);
//---
if(handle!=INVALID_HANDLE)
{
for(int z=ARRAY_SIZE_Y; z>0; z--) // Перебор по барам, колонка Y
{
for(int q=0; q<ARRAY_SIZE_X; q++) // Перебор по периоду, колонка X
{
arra[q]=sm.d[q].m[nBar-z]; // M(I) SMA
}
//--- запишем данные массива в конец файла FileTell IsFileLineEnded
FileSeek(handle,0,SEEK_END);
FileWriteArray(handle,arra);
}
FileClose(handle);
}
else
Print("Failed to open the file, error ",GetLastError()," handle ",handle);
//---
count=1;
}
Wie effizient ist dieser Algorithmus Ihrer Meinung nach in Bezug auf die Geschwindigkeit?
Bei einer Matrix von 1000*1000 beträgt die Geschwindigkeit nur wenige Sekunden, bei einer Erhöhung auf 10000*10000 wird das System schneller.
Meine Herren, Aufnahme einer riesigen 10000*10000-Matrix
{
//--- запишем файл
ResetLastError();
int handle=FileOpen(path,FILE_READ|FILE_WRITE|FILE_BIN);
//---
if(handle!=INVALID_HANDLE)
{
for(int z=ARRAY_SIZE_Y; z>0; z--) // Перебор по барам, колонка Y
{
for(int q=0; q<ARRAY_SIZE_X; q++) // Перебор по периоду, колонка X
{
arra[q]=sm.d[q].m[nBar-z]; // M(I) SMA
}
//--- запишем данные массива в конец файла FileTell IsFileLineEnded
FileSeek(handle,0,SEEK_END);
FileWriteArray(handle,arra);
}
FileClose(handle);
}
else
Print("Failed to open the file, error ",GetLastError()," handle ",handle);
//---
count=1;
}
Wie effizient ist dieser Algorithmus Ihrer Meinung nach in Bezug auf die Geschwindigkeit?
Bei einer Matrix von 1000*1000 beträgt die Geschwindigkeit nur wenige Sekunden, bei einer Erhöhung auf 10000*10000 wird das System schneller.
Gibt es irgendwelche Unklarheiten?
Wie ist es möglich, eine solche Matrix zu erhalten, wenn nicht mehr als vierdimensionale Arrays erlaubt sind?
Gibt es da keine Verwirrung?
Ist 10000 x 10000 nicht eine zweidimensionale Matrix?
und so weiter...
Wie ist es möglich, eine solche Matrix zu erhalten, wenn nicht mehr als vierdimensionale Arrays erlaubt sind?
Gibt es irgendwelche Unklarheiten?