-Alexey-: Это было бы логично, но сейчас операция ">" ("<" не проверял) может возвращать результ true для таких чисел "равных в смысле машинного нуля". Обнаружился эффект т.к. результат численного расчета получился больше теоретически возможного в результате такого эффекта, а после использования спец. функций, что выше - стал правильным. Поэтому и предлагаю ввести дополнение в справку.
Ma connaissance du sujet est superficielle, je ne peux donc pas évaluer ce que vous avez dit. Écrivez au Service Desk et il examinera la question de plus près.
La classe CSignalCustomMACD est absolument identique à CSignalMACD, à l'exception du fait qu'elle est basée sur la version "personnalisée" de l'indicateur de la livraison standard.
N'oubliez pas d'ajouter une ligne dans le code source de l'Expert Advisor :
sinon il ne fonctionnera pas dans le testeur.
Si le dossier Indicators\Examples ne contient pas le fichier MACD.ex5, l'indicateur doit être compilé.
Un exemple sera ajouté à l'aide dans un avenir proche.
-Alexey-: Cela aurait du sens, mais maintenant l'opération ">" ("<" n'a pas été vérifié) peut retourner vrai pour de tels nombres "égaux au sens de la machine zéro". Cet effet a été détecté parce que le résultat du calcul numérique était plus grand que ce qui est théoriquement possible en raison de cet effet, mais après avoir utilisé les fonctions spéciales ci-dessus, il est devenu vrai. C'est pourquoi je propose un ajout à l'aide.
Utilisez simplement DBL_EPSILON dans toutes les comparaisons, ce n'est pas difficile :
if ( a - b > DBL_EPSILON ) // a > bif ( b - a > DBL_EPSILON ) // a < bif ( MathAbs( a - b ) < DBL_EPSILON ) // a == b
Si vous travaillez avec des prix, normalisez-les après tout calcul et utilisez Point/2.0 au lieu de DBL_EPSILON :
Pour une raison quelconque, la lecture d'un tableau via la fonction FileReadArray ne fonctionne pas , bien que le fichier soit ouvert, contienne des données, etc :
string filename="equity FileWrite23.txt"; int handle; int NumberCopyElements; string common_folder; string Array[];
voidOnInit(){ common_folder=TerminalInfoString(TERMINAL_COMMONDATA_PATH); handle=FileOpen(filename,FILE_READ|FILE_COMMON); if(handle!=INVALID_HANDLE) Print("Equity FileWrite23 - OnInit(): Удалось открыть файл ",filename,". Ошибка ",GetLastError()); else Print("Equity FileWrite23 - OnInit(): Не удалось открыть файл ",filename,". Ошибка ",GetLastError());
NumberCopyElements = FileReadArray(handle,Array,0,WHOLE_ARRAY); PrintFormat("Equity FileWrite23 - OnInit(): Записано %d байт в общую папку всех терминалов - %s",NumberCopyElements,common_folder); FileClose(handle);
}
2011.01.2616:27:00 Core 1 connect closed 2011.01.2616:27:00 Core 1log file "C:\Program Files\MetaTrader 5\Tester\Agent-127.0.0.1-3000\logs\20110126.log" written 2011.01.2616:27:00 Core 1 EURUSD,H1: 5516 ticks (23 bars) generated within 15 ms (total bars in history 6419, total time 218 ms) 2011.01.2616:27:00 Core 1 OnTester result 0 2011.01.2616:27:00 Core 12011.01.1400:00:00 Equity FileWrite23 - OnInit(): Записано 0 байт в общую папку всех терминалов - C:\Documents and Settings\All Users\Application Data\MetaQuotes\Terminal\Common 2011.01.2616:27:00 Core 12011.01.1400:00:00 Equity FileWrite23 - OnInit(): Удалось открыть файл equity FileWrite23.txt. Ошибка 0 2011.01.2616:27:00 Core 1 EURUSD,H1: testing of Experts\_My\Experts\Expert1\Expert Small FileWriteEquity.ex5 from 2011.01.1400:00 to 2011.01.1500:00 started 2011.01.2616:27:00 Core 1 EURUSD,H1 (Alpari-Demo): 1 minutes OHLC ticks generating. OnTick executed on the bar begin only 2011.01.2616:27:00 Core 1 Intel Pentium 43.40 GHz, 3063 MB, PR39 2011.01.2616:27:00 Core 14255 bytes of total initialization data received 2011.01.2616:27:00 Core 1 successfully initialized 2011.01.2616:27:00 Core 1 initial deposit 10000.00 USD, leverage 1:100 2011.01.2616:27:00 Core 1 expert file added: Experts\_My\Experts\Expert1\Expert Small FileWriteEquity.ex5. 4106 bytes loaded 2011.01.2616:27:00 Core 1 common synchronization completed 2011.01.2616:27:00 Tester EURUSD,H1 (Alpari-Demo): testing of Experts\_My\Experts\Expert1\Expert Small FileWriteEquity.ex5 from 2011.01.1400:00 to 2011.01.1500:00 to be started2011.01.2616:27:00 Core 1 authorized (agent build 384) 2011.01.2616:27:00 Core 1 connected 2011.01.2616:27:00 Core 1 connecting to 127.0.0.1:3000
Pour une raison quelconque, la lecture d'un tableau via la fonction FileReadArray ne fonctionne pas , bien que le fichier soit ouvert, contienne des données, etc :
Vous écrivez d'abord les données dans le fichier de la même manière, voir le format...
Pour une raison quelconque, la lecture d'un tableau via la fonction FileReadArray ne fonctionne pas , bien que le fichier soit ouvert, contienne des données, etc :
Lit des tableaux de n'importe quel type à l'exception des tableaux de chaînes de caractères (peut être un tableau de structures ne contenant pas de chaînes de caractères et des tableaux dynamiques) d'un fichier binaire à partir de la position actuelle du pointeur de fichier.
-Alexey-:
Это было бы логично, но сейчас операция ">" ("<" не проверял) может возвращать результ true для таких чисел "равных в смысле машинного нуля". Обнаружился эффект т.к. результат численного расчета получился больше теоретически возможного в результате такого эффекта, а после использования спец. функций, что выше - стал правильным. Поэтому и предлагаю ввести дополнение в справку.
Ma connaissance du sujet est superficielle, je ne peux donc pas évaluer ce que vous avez dit. Écrivez au Service Desk et il examinera la question de plus près.
Developerc - Merci pour le travail effectué - mt5 est un bon outil,
J'aimerais ajouter d'autres exemples de travail avec les fonctions,
cours, etc. Bien sûr, pour le faire dans l'aide - idéal, mais ici aussi
Mais ici, ce serait bien.
Un grand merci à ceux qui écrivent des articles avec des exemples. Merci beaucoup.
Pour l'instant, prenons ce fichier comme exemple.
La classe CSignalCustomMACD est absolument identique à CSignalMACD, à l'exception du fait qu'elle est basée sur la version "personnalisée" de l'indicateur de la livraison standard.
N'oubliez pas d'ajouter une ligne dans le code source de l'Expert Advisor :
sinon il ne fonctionnera pas dans le testeur.
Si le dossier Indicators\Examples ne contient pas le fichier MACD.ex5, l'indicateur doit être compilé.
Un exemple sera ajouté à l'aide dans un avenir proche.
Cela aurait du sens, mais maintenant l'opération ">" ("<" n'a pas été vérifié) peut retourner vrai pour de tels nombres "égaux au sens de la machine zéro". Cet effet a été détecté parce que le résultat du calcul numérique était plus grand que ce qui est théoriquement possible en raison de cet effet, mais après avoir utilisé les fonctions spéciales ci-dessus, il est devenu vrai. C'est pourquoi je propose un ajout à l'aide.
Utilisez simplement DBL_EPSILON dans toutes les comparaisons, ce n'est pas difficile :
Si vous travaillez avec des prix, normalisez-les après tout calcul et utilisez Point/2.0 au lieu de DBL_EPSILON :
Pour une raison quelconque, la lecture d'un tableau via la fonction FileReadArray ne fonctionne pas , bien que le fichier soit ouvert, contienne des données, etc :
Pour une raison quelconque, la lecture d'un tableau via la fonction FileReadArray ne fonctionne pas , bien que le fichier soit ouvert, contienne des données, etc :
Vous écrivez d'abord les données dans le fichier de la même manière, voir le format...
Et puis lire...
Vous écrivez d'abord les données dans un fichier de la même manière, voir le format...
Et puis lire...
J'écris les données une ligne à la fois dans l'indicateur OnCalculated ou OnInit de l'Expert Advisor via FileWrite.
En conséquence, le fichier est une liste de chiffres :
10000
10000
9996,85
10005,25
10023,4
10029,7
Bien sûr, nous pourrions aussi écrire le tableau dans son ensemble, mais pourquoi devrions-nous faire des étapes inutiles et quelle est l'erreur ici ?
Je n'ai pas trouvé de restrictions à ce sujet dans la documentation.
J'écris les données ligne par ligne dans l'indicateur OnCalculated ou OnInit de l'Expert Advisor via FileWrite.
En conséquence, le fichier est une liste de chiffres :
10000
10000
9996.85
10005.25
10023.4
10029.7
Bien sûr, vous pouvez aussi écrire le tableau dans son ensemble, mais pourquoi dois-je faire des choses inutiles et quelle est l'erreur ici ?
Je n'ai pas trouvé de limitations à ce sujet dans la documentation.
Pour une raison quelconque, la lecture d'un tableau via la fonction FileReadArray ne fonctionne pas , bien que le fichier soit ouvert, contienne des données, etc :
De l'aide :
FileReadArray
Lit des tableaux de n'importe quel type à l'exception des tableaux de chaînes de caractères (peut être un tableau de structures ne contenant pas de chaînes de caractères et des tableaux dynamiques) d'un fichier binaire à partir de la position actuelle du pointeur de fichier.