voidOnStart()
{
int Target=6; //Количество тайм-фреймовint Counter_UP=0; //Счетчик нахождения цены над МАint Counter_DOWN=0;
int MA = 200; //Период МАdouble bufer_MA[]; //Буфер для хендлаENUM_TIMEFRAMES frame1[10]; //Битная маска тайм-фреймов//___________________int битная маска ENUM Массив таймфреймов__________________________________________
frame1[1]=1;
frame1[2]=5;
frame1[3]=15;
frame1[4]=30;
frame1[5]=16385;
frame1[6]=16388;
frame1[7]=16408;
frame1[8]=32769;
frame1[9]=49153;
//____________________________________________________________________________________________________________int KollSymbols = SymbolsTotal(true); //Колл. символов в маркет вотчAlert("Колл.Инстр = ",KollSymbols);
//---int MA200; //Переменная для хендлаfor(int i=0; i<KollSymbols; i++) //Перебераем все символы из маркет вотч
{
string symbol = SymbolName(i,true); //Выбираем имя символа из маркет вотч// Alert("symbol = ",symbol,"i= ",i);for(int I=1; I<=Target; I++) //Перебераем таймфреймы
{
MA200 = iMA(symbol,frame1[I],MA,0,MODE_EMA,PRICE_MEDIAN); //хендл на выбранном таймеCopyBuffer(MA200,0,TimeCurrent(),5,bufer_MA); // заполнение масива bufer_MA хендлом MA200 выбранного таймаArraySetAsSeries(bufer_MA,true); //Разворачиваем массив как в тайм-серии//Alert("Символ - ",symbol,"i= ",i);// Alert("Simbol = ",symbol," bufer_MA[1] = ",bufer_MA[1]);if(iClose(symbol,frame1[I],1) > bufer_MA[1]) //Если цена 1 баре, на выбранном символе и тайме, БОЛЬШЕ цены скользяхи на 1 баре
{
//Alert("iClose= ",iClose(symbol,frame1[I],1), " bufer_MA[1]= ",bufer_MA[1]);
Counter_UP++;
if(Counter_UP==Target)
Alert("Инструмент для наблюдения в покупки - ",symbol);
ArrayFree(bufer_MA); //Очистка буфера индикатора
}
else
{
ArrayFree(bufer_MA); //Очистка буфера индикатора
}
IndicatorRelease(MA200); //Удаление хендла
}
Counter_UP=0;
Counter_DOWN=0;
}
}
//+------------------------------------------------------------------+//+------------------------------------------------------------------+
Cela fonctionne bien. Et la liste de 22 instruments. Cela prend environ 5 minutes. C'est bizarre, cependant. Il passe la plupart de son temps à écrire des handles dans le tableau. Résultats du profilage
Question : Pourquoi est-ce si long de copier 5 valeurs d'un handle vers un tableau, bien qu'elles soient copiées 132 fois pour 22 instruments de la liste, c'est-à-dire que pour 273 instruments, il me faudrait copier 1632 fois, et avec un historique de chargement pour tous les instruments du disque dur.
fonctionne bien. Et la liste des 22 outils prend environ 5 minutes à traiter. C'est bizarre, cependant. Il passe la plupart de son temps à écrire le handle dans le tableau. Résultat du profilage
Question : Pourquoi est-ce si long de copier 5 valeurs d'un handle vers un tableau alors que la copie est effectuée 132 fois pour 22 outils de la liste, c'est-à-dire que pour 273 outils il faudrait copier 1632 fois, de plus avec le chargement de l'historique pour tous les outils sur mon disque dur.
Si je ne me trompe pas.
Il semble fonctionner normalement, si les citations ont été téléchargées, il ne ralentit pas. Le premier démarrage est très long, apparemment il télécharge les guillemets.
//+------------------------------------------------------------------+voidOnStart()
{
int Target = 6; //Количество тайм-фреймовint Counter_UP = 0; //Счетчик нахождения цены над МАint Counter_DOWN = 0;
int MA = 200; //Период МАdouble bufer_MA[]; //Буфер для хендлаint MA200[][9]; //Переменная для хендлаstring symbol[];
ENUM_TIMEFRAMES frame1[9]; //Битная маска тайм-фреймов//___________________int битная маска ENUM Массив таймфреймов__________________________________________
frame1[0] = 1;
frame1[1] = 5;
frame1[2] = 15;
frame1[3] = 30;
frame1[4] = 16385;
frame1[5] = 16388;
frame1[6] = 16408;
frame1[7] = 32769;
frame1[8] = 49153;
//____________________________________________________________________________________________________________int KollSymbols = SymbolsTotal(true); //Колл. символов в маркет вотчPrint("Колл.Инстр = ", KollSymbols);
int res = 0;
for(int i = 0; i < KollSymbols; i++)
{
for(int I = 0; I < 9; I++) //Перебераем таймфреймы
{
ArrayResize(MA200, i + 1);
ArrayResize(symbol, i + 1);
symbol[i] = SymbolName(i, true); //Выбираем имя символа из маркет вотч
MA200[i][I] = iMA(symbol[i], frame1[I], MA, 0, MODE_EMA, PRICE_MEDIAN); //хендл на выбранном таймеif(MA200[i][I] == INVALID_HANDLE)
PrintFormat("Инвалид хэндл, символ %s, тайм %d", symbol[i], frame1[I]);
res++;
}
}
Print("Создано хэндлов = " + (string)res);
//---for(int i = 0; i < KollSymbols; i++)
{
for(int I = 0; I < 9; I++) //Перебераем таймфреймы
{
int size = CopyBuffer(MA200[i][I], 0, 1, 1, bufer_MA); // заполнение масива bufer_MA хендлом MA200 выбранного таймаPrintFormat("Скопировано %d, символ %s, тайм %d", size, symbol[i], frame1[I]);
if(size > 0)
if(iClose(symbol[i], frame1[I], 1) > bufer_MA[0]) //Если цена 1 баре, на выбранном символе и тайме, БОЛЬШЕ цены скользяхи на 1 баре
{
Counter_UP++;
}
}
}
Print("Counter_UP = " + (string)Counter_UP);
}
//+------------------------------------------------------------------+
Le but de ce script est de passer en revue chaque instrument de Market Watch sur des échelles de temps allant de 1min à 4H.
Si je devais faire une telle chose, je créerais un tableau et y stockerais les données passées, en mettant à jour les données actuelles. Cela permettrait d'éviter les cycles lourds et CopyBuffer. Tout s'envolerait.
Il semble fonctionner correctement, si les devis sont téléchargés, il ne ralentit pas. Le premier démarrage prend beaucoup de temps, je suppose que ça télécharge les devis.
Merci pour vos commentaires et votre version du programme, je vais l'essayer) ! Je me demande seulement pourquoi je ne supprime pas les poignées avant de terminer le programme ou elles seront supprimées automatiquement après la fin du programme, mais la mémoire n'est pas libérée selon le gestionnaire de tâches.
Si je devais faire une telle chose, je créerais un tableau et y stockerais les données passées, en mettant à jour les données actuelles. Cela permettrait d'éviter les boucles lourdes et le CopyBuffer. Tout s'envolerait.
Merci pour vos commentaires et votre version, je vais l'expérimenter) ! Je ne comprends pas seulement pourquoi vous ne supprimez pas les handles avant de terminer le programme ? Ou bien ils sont automatiquement supprimés à la fin du programme, bien que la RAM ne soit pas libérée, à en juger par le gestionnaire de tâches.
J'ai lu quelque part que les handles des indicateurs sont automatiquement supprimés après un certain intervalle de temps après la fin du script. Mais ce n'est pas exact.
Salutations ! Pourriez-vous m'indiquer comment, après avoirtesté un EA dans MQL5, afficher n'importe laquelle de mes statistiques dans une fenêtre popup lorsque la souris passe sur les flèches ?
Pouvez-vous me dire pourquoi la fonction OrderSend sur les crypto-monnaies ne fonctionne pas lors du test avec le courtier AMarkets. Je n'ai pas trouvé d'interdiction d'échanger des crypto-monnaies par la réglementation. Ou peut-être ai-je des erreurs dans mon code ? GetLastError donne l'erreur 4756
Cela fonctionne bien. Et la liste de 22 instruments.
Cela prend environ 5 minutes. C'est bizarre, cependant. Il passe la plupart de son temps à écrire des handles dans le tableau. Résultats du profilage 
Question : Pourquoi est-ce si long de copier 5 valeurs d'un handle vers un tableau, bien qu'elles soient copiées 132 fois pour 22 instruments de la liste, c'est-à-dire que pour 273 instruments, il me faudrait copier 1632 fois, et avec un historique de chargement pour tous les instruments du disque dur.
sur la création et la suppression de poignées,
ça marche, je suis intéressé par le bon chemin, j'espère que les développeurs me le diront.
C'est exactement ce que je fais, regardez le code ci-dessus, il y a aussi des questions))
Donc, il s'est avéré que le script
fonctionne bien. Et la liste des 22 outils prend environ 5 minutes à traiter. C'est bizarre, cependant. Il passe la plupart de son temps à écrire le handle dans le tableau. Résultat du profilage
Question : Pourquoi est-ce si long de copier 5 valeurs d'un handle vers un tableau alors que la copie est effectuée 132 fois pour 22 outils de la liste, c'est-à-dire que pour 273 outils il faudrait copier 1632 fois, de plus avec le chargement de l'historique pour tous les outils sur mon disque dur.
Si je ne me trompe pas.
Il semble fonctionner normalement, si les citations ont été téléchargées, il ne ralentit pas. Le premier démarrage est très long, apparemment il télécharge les guillemets.
Le but de ce script est de passer en revue chaque instrument de Market Watch sur des échelles de temps allant de 1min à 4H.
Si je devais faire une telle chose, je créerais un tableau et y stockerais les données passées, en mettant à jour les données actuelles. Cela permettrait d'éviter les cycles lourds et CopyBuffer. Tout s'envolerait.
Si je ne me trompe pas.
Il semble fonctionner correctement, si les devis sont téléchargés, il ne ralentit pas. Le premier démarrage prend beaucoup de temps, je suppose que ça télécharge les devis.
Merci pour vos commentaires et votre version du programme, je vais l'essayer) ! Je me demande seulement pourquoi je ne supprime pas les poignées avant de terminer le programme ou elles seront supprimées automatiquement après la fin du programme, mais la mémoire n'est pas libérée selon le gestionnaire de tâches.
Si je devais faire une telle chose, je créerais un tableau et y stockerais les données passées, en mettant à jour les données actuelles. Cela permettrait d'éviter les boucles lourdes et le CopyBuffer. Tout s'envolerait.
Merci, je vais y penser aussi)
Merci pour vos commentaires et votre version, je vais l'expérimenter) ! Je ne comprends pas seulement pourquoi vous ne supprimez pas les handles avant de terminer le programme ? Ou bien ils sont automatiquement supprimés à la fin du programme, bien que la RAM ne soit pas libérée, à en juger par le gestionnaire de tâches.
J'ai lu quelque part que les handles des indicateurs sont automatiquement supprimés après un certain intervalle de temps après la fin du script. Mais ce n'est pas exact.
Bonjour
le terminal dispose d'un outil de régression linéaire
il existe des scripts qui dessinent le même canal avec des objets graphiques
Mais seule la ligne centrale est dessinée correctement, les lignes de déviation sont dessinées à une distance incorrecte de la ligne centrale.
conseiller si quelqu'un connaît la formule correcte pour calculer l'écart, il devrait être comme dans le terminal
ou peut-être existe-t-il une solution toute faite
MERCI
Bonjour !
Pouvez-vous me dire pourquoi la fonction OrderSend sur les crypto-monnaies ne fonctionne pas lors du test avec le courtier AMarkets. Je n'ai pas trouvé d'interdiction d'échanger des crypto-monnaies par la réglementation. Ou peut-être ai-je des erreurs dans mon code ? GetLastError donne l'erreur 4756