Update:
Wenn ich den Tester im visuellen Modus in dem OpenPrice Modus laufen lassen will, erscheint folgender Fehler
ich vermute, hierfür sind die folgenden Zeilen relevant:
Das ist einer Header Datei. Die jeweiligen Funktionen werden in der Oninit aufgerufen:
void ResizeCoreArrays() { ArrayResize(currentAtr, NumberOfTradeableSymbols); ArrayResize(OpenTradeOrderTicket1, NumberOfTradeableSymbols); ArrayResize(OpenTradeOrderTicket2, NumberOfTradeableSymbols); ArrayResize(sellOrder, NumberOfTradeableSymbols); ArrayResize(openOrders, NumberOfTradeableSymbols); ArrayResize(buyOrder, NumberOfTradeableSymbols); ArrayResize(triggerLong1, NumberOfTradeableSymbols); ArrayResize(triggerShort1, NumberOfTradeableSymbols); ArrayResize(slOldBuy, NumberOfTradeableSymbols); ArrayResize(slOldSell, NumberOfTradeableSymbols); ArrayResize(tradeOpenTime, NumberOfTradeableSymbols); ArrayResize(tradeClosuretime, NumberOfTradeableSymbols); } //+------------------------------------------------------------------+ //| Resize Handle Arrays | //+------------------------------------------------------------------+ void ResizeIndicatorHandleArrays() { //Indicator Handles ArrayResize(vhfHandle, NumberOfTradeableSymbols); ArrayResize(atrHandle, NumberOfTradeableSymbols); ArrayResize(dssHandle, NumberOfTradeableSymbols); } //+------------------------------------------------------------------+ //| SET UP REQUIRED INDICATOR HANDLES | //+------------------------------------------------------------------+ bool SetUpIndicatorHandles() { for(int SymbolLoop = 0; SymbolLoop < NumberOfTradeableSymbols; SymbolLoop++) { //Reset any previous error codes so that only gets set if problem setting up indicator handle ResetLastError(); //"AAA_EA_Indicators\\Trigger\\Bands_Fill" vhfHandle[SymbolLoop] = iCustom(SymbolArray[SymbolLoop],FilterTf,"AAA_EA_Indicators\\Filter\\Step VHF adaptive VMA",inpPeriod,inpPeriod2,inpPriceVhf,inpStepSize); dssHandle[SymbolLoop] = iCustom(SymbolArray[SymbolLoop], TriggerTf, "AAA_EA_Indicators\\Trigger\\Stoch\\DSS",inpStoPeriod,inpSmtPeriod,inpSigPeriod,inpPrice); atrHandle[SymbolLoop] = iATR(SymbolArray[SymbolLoop], TriggerTf, 14); if(atrHandle[SymbolLoop] == INVALID_HANDLE || dssHandle[SymbolLoop] == INVALID_HANDLE || vhfHandle[SymbolLoop] == INVALID_HANDLE) { string outputMessage = "";
und die CopyBuffer fkt. (in einer anderen Header Datei)
bool tlamCopyBuffer(int ind_handle, // handle of the indicator int buffer_num, // for indicators with multiple buffers double &localArray[], // local array int numBarsRequired, // number of values to copy string symbolDescription, string indDesc) { int availableBars; bool success = false; int failureCount = 0; //Sometimes a delay in prices coming through can cause failure, so allow 3 attempts while(!success) { availableBars = BarsCalculated(ind_handle); if(availableBars < numBarsRequired) { failureCount++; if(failureCount >= 3) { Print("Failed to calculate sufficient bars in tlamCopyBuffer() after ", failureCount, " attempts (", symbolDescription, "/", indDesc, " - Required=", numBarsRequired, " Available=", availableBars, ")"); return(false); } Print("Attempt ", failureCount, ": Insufficient bars calculated for ", symbolDescription, "/", indDesc, "(Required=", numBarsRequired, " Available=", availableBars, ")"); //Sleep for 0.1s to allow time for price data to become usable Sleep(100); } else { success = true; if(failureCount > 0) //only write success message if previous failures registered Print("Succeeded on attempt ", failureCount + 1); } }
Das sollten sämtliche Funktionen sein, welche in der Oninit aufgerufen werden.
Vielen Dank für Eure Hilfe :)
Windows kennt den Fehler 565: https://docs.microsoft.com/en-us/windows/win32/debug/system-error-codes--500-999-
565 (0x235)
Indicates a process has too many threads to perform the requested action. For example, assignment of a primary token may only be performed when a process has zero or one threads.
Vielleicht liegt es daran? Dann könnte Dein EA zuviele Threads aufmachen.
Da ArrayResizes wahrscheinlich öfters durchgeführt werden müssen: Was passiert wenn Du den Resizekram in der OnTick laufen lässt?
Windows kennt den Fehler 565: https://docs.microsoft.com/en-us/windows/win32/debug/system-error-codes--500-999-
Vielleicht liegt es daran? Dann könnte Dein EA zuviele Threads aufmachen.
hab gerade einen weiteren Test am laufen. Diesmal tritt ein anderer Fehlern auf. Villeicht hängt es mit dem oben ganannten zusammen...( witzigerweise läuft der trest trotzdem weiter, ich schätze nur, dass die jeweilige iteration nicht ausgeführt wurde)
Werde ich mal ausprobieren und Bericht erstatten.
Was is denn in bezug auf den MT5 mit "Thread" gemeint?
hab gerade einen weiteren Test am laufen. Diesmal tritt ein anderer Fehlern auf. Villeicht hängt es mit dem oben ganannten zusammen...( witzigerweise läuft der trest trotzdem weiter, ich schätze nur, dass die jeweilige iteration nicht ausgeführt wurde)
OnInit wird nicht mit INIT_SUCCEEDED beendet.
Da ArrayResizes wahrscheinlich öfters durchgeführt werden müssen: Was passiert wenn Du den Resizekram in der OnTick laufen lässt?
an der vom tester angegebenen Stelle befinden sich meine Arrays, welche resized werden. scheint wohl nicht in der ontick zu laufen...
wenn ich das mache, bekomme ich nen 502 er runtime Error
an der vom tester angegebenen Stelle befinden sich meine Arrays, welche resized werden. scheint wohl nicht in der ontick zu laufen...
Schlechte Idee mit Arrays.
Resize MUSS einmal mindestens nach dem Definieren der Arrays aufgerufen werden. OnInit() ist da schon richtig.
Danach nur bei bedarf. Eher gar nicht mehr.
Raus damit aus OnTick()
Werde ich mal ausprobieren und Bericht erstatten.
Was is denn in bezug auf den MT5 mit "Thread" gemeint?
hab gerade einen weiteren Test am laufen. Diesmal tritt ein anderer Fehlern auf. Villeicht hängt es mit dem oben ganannten zusammen...( witzigerweise läuft der trest trotzdem weiter, ich schätze nur, dass die jeweilige iteration nicht ausgeführt wurde)
Da die Threads vom MT5 intern verwaltet werden kannst du das verwerfen.
Der Fehlercode vom Carl ist auf das Windows Kernel bezogen.
Update:
Wenn ich den Tester im visuellen Modus in dem OpenPrice Modus laufen lassen will, erscheint folgender Fehler
ich vermute, hierfür sind die folgenden Zeilen relevant:
Das ist einer Header Datei. Die jeweiligen Funktionen werden in der Oninit aufgerufen:
und die CopyBuffer fkt. (in einer anderen Header Datei)
Das sollten sämtliche Funktionen sein, welche in der Oninit aufgerufen werden.
Vielen Dank für Eure Hilfe :)
Die OpenPrice Einstellung ist eigentlich ein Relikt von damals. Wird auch kaum noch Fehlerbereinigt.
Nutze Ticks oder RealTicks und teste nochmal.
OpenPrice dient nur zur "schnellen" Analyse. Hat aber null Aussagekraft da später eben doch Ticks genutzt werden.
Teste die anderen beiden Modi und berichte.
Die OpenPrice Einstellung ist eigentlich ein Relikt von damals. Wird auch kaum noch Fehlerbereinigt.
Nutze Ticks oder RealTicks und teste nochmal.
OpenPrice dient nur zur "schnellen" Analyse. Hat aber null Aussagekraft da später eben doch Ticks genutzt werden.
Teste die anderen beiden Modi und berichte.
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Hallo zusammen,
ich wollte meinen Multiymbol EA backtesten und erhielt schon mehrfach diesen runtime Error 565. Seltsamerweise tritt er manchmal nur bei einem 1m OHLC Durchlauf auf und beim anderen mal nur bei der OpenPrice Methode. Wenn ich den visuellen Modus wähle, läuft er einwandfrei. Manchmal kommt es vor, dass er den Fehler plötzlich garnicht mehr anzeigt und alles funktioniert makellos.
der Error scheint nirgends gelistet zu sein. Ich hoffe ihr könnt mir in dieser Sache helfen. Der Fehler scheint in der OnInit Fkt. zu liegen.
Ich denke aber nicht, dass der Fehler hier zu finden ist, da schon beim Aufruf der Onitit (--> line 1, col 1) der Fehler auftritt...