voidOnStart()
{
string text="Hello man";
string keystr="ABCDEFG";
uchar src[],dst[],key[];
//--- подготовка ключа шифрованияStringToCharArray(keystr,key);
//--- подготовка исходного массива src[]StringToCharArray(text,src);
//--- вывод исходных данныхPrintFormat("Initial data: size=%d, string='%s'",ArraySize(src),CharArrayToString(src));
//--- шифрование массива src[] методом DES с 56-битным ключом key[]int res=CryptEncode(CRYPT_AES256,src,key,dst);
//--- проверка результата шифрованияif(res>0)
{
//--- вывод шифрованных данныхPrintFormat("Encoded data: size=%d %s",res,ArrayToHex(dst));
//--- расшифровка данных массива dst[] методом DES с 56-битным ключом key[]
res=CryptDecode(CRYPT_AES256,dst,key,src);
//--- проверка результатаif(res>0)
{
//--- вывод дешифрованных данныхPrintFormat("Decoded data: size=%d, string='%s'",ArraySize(src),CharArrayToString(src));
}
elsePrint("Ошибка в CryptDecode. Код ошибки=",GetLastError());
}
elsePrint("Ошибка в CryptEncode. Код ошибки=",GetLastError());
}
//+------------------------------------------------------------------+string ArrayToHex(uchar &arr[],int count=-1)
{
string res="";
//--- проверка размераif(count<0 || count>ArraySize(arr))
count=ArraySize(arr);
//--- преобразование в шестнадцатиричную строкуfor(int i=0; i<count; i++)
res+=StringFormat("%.2X",arr[i]);
//---return(res);
}
J'essaie d'exécuter l'exemple cryptographique du manuel, maisj'utilise la méthode CRYPT_AES256 au lieu deCRYPT_DES. Le résultat est l'erreur 4029 après la méthodeCryptEncode
J'essaie d'exécuter l'exemple cryptographique du manuel, maisj'utilise la méthode CRYPT_AES256 au lieu deCRYPT_DES. En conséquence, l'erreur 4029 après la méthodeCryptEncode
J'ai compris. Il a besoin d'une clé plus prudente.)
Je suis stupide et je n'arrive pas à trouver la solution moi-même. Veuillez m'indiquer quel est le problème ou au moins m'indiquer la bonne direction.
Différents indicateurs commencent à montrer de façon synchrone une autre partie de l'histoire. Ça arrive parfois, pas tous les jours.
Je pensais que la raison était que les indicateurs ne traitent pas correctement l'historique chargé dynamiquement. J'ai essayé tout ce qui concerne la mise à jour correcte de l'indicateur sur l'historique de mise à jour, je ne sais pas ce qu'il faut faire d'autre pour éviter cela.
Courtier Alpari. MT5 build 2363 du 13.03.2020.
Les captures d'écran montrent d'abord la version "ratée".
Puis la version correcte après la mise à jour manuelle.
//+------------------------------------------------------------------+bool IsReadyForCalculate(constint rates_total,constint prev_calculated,constdatetime &time[])
{
//--- подключение терминала и синхронизация данныхif(TerminalInfoInteger(TERMINAL_CONNECTED))
if(!SymbolIsSynchronized(_Symbol) ||
!SeriesInfoInteger(_Symbol,_Period,SERIES_SYNCHRONIZED)) return(false);
//--- некорректное значение prev_calculatedif(prev_calculated<0) return(false);
//---if(prev_calculated==0) prev_time = time[rates_total-1];
//--- произошли изменения в данных, но prev_calculated не сброшен в 0//--- или изменение времени не соответствует одному баруif( (rates_total!=prev_calculated+1 &&
rates_total!=prev_calculated &&
prev_calculated!=0) ||
(time[rates_total-1]>prev_time &&
time[rates_total-2]!=prev_time))
{
loc_prev_calculated = 0; // чтобы индикатор не висел "голым" до следующей котировки, вычисляю индикатор из того, что естьreturn(true);
}
//--- корректный сценарийif( (rates_total==prev_calculated || rates_total==prev_calculated+1 || prev_calculated==0) &&
(time[rates_total-1]==prev_time || time[rates_total-2]==prev_time))
{
loc_prev_calculated = prev_calculated;
return(true);
}
//--- return(false); // верну false, пока не знаю, какие варианты ещё могут быть
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,constint prev_calculated,constdatetime &time[],constdouble &open[],constdouble &high[],constdouble &low[],constdouble &close[],constlong &tick_volume[],constlong &volume[],constint &spread[])
{
if(!IsReadyForCalculate(rates_total,prev_calculated,time)) return(0);
//---// вызов функции зигзага//--- return value of prev_calculated for next call
prev_time = time[rates_total-1];
return(rates_total);
}
//+------------------------------------------------------------------+
J'ai cette question dans MQL5. Comment puis-je forcer le lancement de la fonction OnChartEvent() ? Existe-t-il une méthode standard pour le faire ?
Pour cela, j'utilise la fonction ChartNavigate() et je l'exécute depuis OnChartEvent(). Mais cela fonctionne de manière instable - quand beaucoup de ticks arrivent, souvent OnChartEvent() ne redémarre pas après avoir appelé ChartNavigate() pour une raison quelconque. Je n'arrive pas à comprendre comment cela est lié - ChartNavigate() et le taux d'arrivée des tics, mais cela se produit néanmoins.
В языке MQL5 предусмотрена обработка некоторых предопределенных событий. Функции для обработки этих событий должны быть определены в программе MQL5: имя функции, тип возвращаемого значения, состав параметров (если они есть) и их типы должны строго соответствовать описанию функции-обработчика события. Именно по типу возвращаемого значения и по...
Je suis stupide et je n'arrive pas à trouver la solution moi-même. Veuillez me dire quel est le problème ou au moins m'indiquer la bonne direction.
loc_prev_calculated = 0; // чтобы индикатор не висел "голым" до следующей котировки, вычисляю индикатор из того, что естьreturn(true);
J'ai peut-être ajouté ça récemment pour rien...
Supprimé
loc_prev_calculated
Remplacé par...
return(false);
Je vais garder un œil dessus.
Parlez-moi des indicateurs standard fournis avec le MT5, comment fonctionnent-ils ? Est-ce qu'ils tombent comme je l'ai fait dans les captures d'écran ci-dessus ?
Bonjour à tous ! Je maîtrise la double fonction OnTester() et la fonction TesterStatistics( ). J'ai écrit un code simple pour mon testeur dans MT4, qui ouvre un ordre chaque jour à 10:00, à 16:00, à 20:00 et à 01:00. À la fin de l'essai, la fonction TesterStatistics( ) renvoie la plus petite valeur de solde (c'est-à-dire le prélèvement relatif).
PROBLÈME
TesterStatistics( ) renvoie la plus petite valeur de solde pour TOUS les ordres ouverts.
QUESTION
Comment puis-je utiliser une construction linguistique pour que TesterStatistics() renvoie la plus petite valeur de solde uniquement pour un ordre ouvert à une heure donnée, par exemple à 16h00. A ce stade, toutes les commandes spécifiées dans le code doivent être testées simultanément. Cela signifie que TesterStatistics doit suivre la dynamique du solde pour un seul ordre ouvert à 16h00 et, à la fin du test, afficher la valeur minimale du solde uniquement pour l'ordre ouvert à 16h00.
Je vous serais très reconnaissant si vous pouviez insérer la construction linguistique requise dans mon code. Il me permettra de comprendre rapidement l'algorithme de résolution de mon problème. Voici mon code.
Bonne journée à tous ! J'ai maîtrisé le double OnTester() et TesterStatistics( ). J'ai écrit un code simple pour mon testeur dans MT4, qui ouvre un ordre à 10:00, à 16:00, à 20:00 et à 01:00 chaque jour. À la fin de l'essai, la fonction TesterStatistics renvoie la plus petite valeur de solde (c'est-à-dire le tirage relatif).
PROBLÈME
TesterStatistics( ) renvoie la valeur du solde le plus bas pour TOUS les ordres ouverts.
QUESTION
Quelle construction linguistique peut-on utiliser pour que TesterStatistics() renvoie la plus petite valeur de solde uniquement pour un ordre ouvert à une heure donnée, par exemple à 16h00. A ce stade, toutes les commandes spécifiées dans le code doivent être testées simultanément. Par exemple, TesterStatistics( ) devrait suivre la dynamique du solde d'un seul ordre ouvert à 16h00 et, à la fin du test, renvoyer la valeur minimale du solde pour l'ordre ouvert à 16h00 uniquement.
Je vous serais très reconnaissant, si vous pouviez insérer le langage requis dans mon code. Cela me permettra de comprendre très rapidement l'algorithme pour résoudre mon problème. Voici mon code.
Merci pour vos commentaires. Grâce à vous, j'ai réalisé que la spécification de la fonctionTesterStatistics( ) ; avec la déclaration de la variable globale H ... était mon erreur. Je l'ai réparé.
Глобальные переменные создаются путем размещения их объявлений вне описания какой-либо функции. Глобальные переменные определяются на том же уровне, что и функции, т. е. не локальны ни в каком блоке. Область видимости глобальных переменных - вся программа, глобальные переменные доступны из всех функций, определенных в программе...
Bonjour ! Comment puis-je mettre en œuvre l'affichage des données des barres hautes et basses sur un graphique ? Et mettre en évidence la même couleur.
MT4
Quel est cet article et à quoi sert-il ? Je ne trouve aucune description nulle part.
Comment puis-je le désactiver par défaut ?
J'essaie d'exécuter l'exemple cryptographique du manuel, maisj'utilise la méthode CRYPT_AES256 au lieu deCRYPT_DES. Le résultat est l'erreur 4029 après la méthodeCryptEncode
J'essaie d'exécuter l'exemple cryptographique du manuel, maisj'utilise la méthode CRYPT_AES256 au lieu deCRYPT_DES. En conséquence, l'erreur 4029 après la méthodeCryptEncode
J'ai compris. Il a besoin d'une clé plus prudente.)
Bonjour !
Je suis stupide et je n'arrive pas à trouver la solution moi-même. Veuillez m'indiquer quel est le problème ou au moins m'indiquer la bonne direction.
Différents indicateurs commencent à montrer de façon synchrone une autre partie de l'histoire. Ça arrive parfois, pas tous les jours.
Je pensais que la raison était que les indicateurs ne traitent pas correctement l'historique chargé dynamiquement. J'ai essayé tout ce qui concerne la mise à jour correcte de l'indicateur sur l'historique de mise à jour, je ne sais pas ce qu'il faut faire d'autre pour éviter cela.
Courtier Alpari. MT5 build 2363 du 13.03.2020.
Les captures d'écran montrent d'abord la version "ratée".
Puis la version correcte après la mise à jour manuelle.
Bonjour.
J'ai cette question dans MQL5. Comment puis-je forcer le lancement de la fonction OnChartEvent() ? Existe-t-il une méthode standard pour le faire ?
Pour cela, j'utilise la fonction ChartNavigate() et je l'exécute depuis OnChartEvent(). Mais cela fonctionne de manière instable - quand beaucoup de ticks arrivent, souvent OnChartEvent() ne redémarre pas après avoir appelé ChartNavigate() pour une raison quelconque. Je n'arrive pas à comprendre comment cela est lié - ChartNavigate() et le taux d'arrivée des tics, mais cela se produit néanmoins.
Bonjour !
Je suis stupide et je n'arrive pas à trouver la solution moi-même. Veuillez me dire quel est le problème ou au moins m'indiquer la bonne direction.
J'ai peut-être ajouté ça récemment pour rien...
SuppriméRemplacé par...
return(false);Je vais garder un œil dessus.
Parlez-moi des indicateurs standard fournis avec le MT5, comment fonctionnent-ils ? Est-ce qu'ils tombent comme je l'ai fait dans les captures d'écran ci-dessus ?
Bonjour à tous !
Je maîtrise la double fonction OnTester() et la fonction TesterStatistics( ). J'ai écrit un code simple pour mon testeur dans MT4, qui ouvre un ordre chaque jour à 10:00, à 16:00, à 20:00 et à 01:00. À la fin de l'essai, la fonction TesterStatistics( ) renvoie la plus petite valeur de solde (c'est-à-dire le prélèvement relatif).
PROBLÈME
TesterStatistics( ) renvoie la plus petite valeur de solde pour TOUS les ordres ouverts.
QUESTION
Comment puis-je utiliser une construction linguistique pour que TesterStatistics() renvoie la plus petite valeur de solde uniquement pour un ordre ouvert à une heure donnée, par exemple à 16h00. A ce stade, toutes les commandes spécifiées dans le code doivent être testées simultanément. Cela signifie que TesterStatistics doit suivre la dynamique du solde pour un seul ordre ouvert à 16h00 et, à la fin du test, afficher la valeur minimale du solde uniquement pour l'ordre ouvert à 16h00.
Je vous serais très reconnaissant si vous pouviez insérer la construction linguistique requise dans mon code. Il me permettra de comprendre rapidement l'algorithme de résolution de mon problème.
Voici mon code.
Bonne journée à tous !
J'ai maîtrisé le double OnTester() et TesterStatistics( ). J'ai écrit un code simple pour mon testeur dans MT4, qui ouvre un ordre à 10:00, à 16:00, à 20:00 et à 01:00 chaque jour. À la fin de l'essai, la fonction TesterStatistics renvoie la plus petite valeur de solde (c'est-à-dire le tirage relatif).
PROBLÈME
TesterStatistics( ) renvoie la valeur du solde le plus bas pour TOUS les ordres ouverts.
QUESTION
Quelle construction linguistique peut-on utiliser pour que TesterStatistics() renvoie la plus petite valeur de solde uniquement pour un ordre ouvert à une heure donnée, par exemple à 16h00. A ce stade, toutes les commandes spécifiées dans le code doivent être testées simultanément. Par exemple, TesterStatistics( ) devrait suivre la dynamique du solde d'un seul ordre ouvert à 16h00 et, à la fin du test, renvoyer la valeur minimale du solde pour l'ordre ouvert à 16h00 uniquement.
Je vous serais très reconnaissant, si vous pouviez insérer le langage requis dans mon code. Cela me permettra de comprendre très rapidement l'algorithme pour résoudre mon problème.
Voici mon code.
Qu'est-ce que c'est ?
C'est ce que c'est ?
Merci pour vos commentaires. Grâce à vous, j'ai réalisé que la spécification de la fonctionTesterStatistics( ) ; avec la déclaration de la variable globale H ... était mon erreur. Je l'ai réparé.