[Archive] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 2. - page 398

 
alk:

Veuillez m'indiquer ce qui ne va pas dans ce code. Le robot est censé fermer un ordre de vente, s'il n'y en a pas, il doit acheter. L'erreur 4105 apparaît, que j'essaie de traiter, mais sans résultat. Peut-être y a-t-il d'autres façons de le traiter ?


Remplacer

for(cnt=OrdersTotal();cnt>=0;cnt--)

à

for(cnt=OrdersTotal()-1;cnt>=0;cnt--)
 
Bonne journée à vous, chers experts, aidez-moi s'il vous plaît... J'ai besoin : sur la base de l'indicateur i-Regr (ci-joint) écrire un bloc de programme, qui est capable de déterminer la largeur du canal en points avec une périodicité de 1 fois par minute et afficher ce nombre sur le graphique. Merci d'avance !
Dossiers :
i-regr_1.mq4  5 kb
 
magogy:
Bonjour ! Chers experts, aidez-moi s'il vous plaît... J'ai besoin : sur la base de l'indicateur i-Regr (ci-joint) écrire un bloc de programme, qui est capable de déterminer la largeur du canal en points avec une périodicité de 1 fois par minute et afficher ce nombre sur le graphique. Merci d'avance !

Je pense qu'avec cette tâche, il est préférable de s'adresser au service
 
magogy:
Bonne journée à vous, chers experts, aidez-moi s'il vous plaît... J'ai besoin : sur la base de l'indicateur i-Regr (ci-joint) écrire un bloc de programme, qui est capable de déterminer la largeur du canal en points avec une périodicité de 1 fois par minute et afficher ce nombre sur le graphique. Merci d'avance !
 datetime Time_=0; // объявить вверху, в глобальных переменных

 if(Time[0]!=Time_){Alert(NormalizeDouble(sqh[0]-sql[0],4));Time_=Time[0];} //добавить внижней части кода, перед return-ом
 
KONDOR:

Merci beaucoup pour le conseil !

Il y a quelques subtilités. L'information affichée est de 0,0026, ce qui correspond à 26 points. J'ai modifié la ligne de fond et maintenant cela ressemble à ceci :

if(Time[0]!=Time_){Alert(NormalizeDouble(sqh[0]*10000-sql[0]*10000,4));Time_=Time[0];}

La sortie est maintenant affichée comme 25.6809

Veuillez me conseiller sur la manière d'arrondir ce nombre par programmation afin d'afficher les informations en points entiers plutôt qu'en fractions.

Salutations magogy

 
magogy:

Pouvez-vous me dire comment arrondir ce nombre de manière programmatique afin que l'information soit affichée comme un point entier et non comme un nombre fractionnaire.

Salutations magogy

вместо 4, поставить 0, т.е. точность выводимого значения - ноль знаков после запятой
Alert(NormalizeDouble(sqh[0]*10000-sql[0]*10000,4))
 
KONDOR:


heh... comment tout cela est simple et évident pour un professionnel et comment tout cela est effrayant et incompréhensible pour un novice...

Merci beaucoup pour votre aide !

 

S'il vous plaît, dites-moi ce qui ne va pas. Dans le script, je déclare importé et appelle la fonction :

#import "PendingDlg.dll"
int  ShowPendingDlg(int& nbar,int& sltp);

...

int    nbar=3,sltp=10;
//--- покажем диалог
if(!ShowPendingDlg(nbar,sltp)) return(1);

J'ai essayé d'obtenir la valeur par référence et par pointeur dans la DLL (en C++). Si c'est par référence, cela ne fonctionne pas, si c'est par pointeur, j'obtiens des pointeurs avec une valeur nulle. Le code est en DLL :

__declspec(dllexport) int __stdcall ShowPendingDlg(int *nbar,int *sltp) { ... }

Merci.

 
apm:

S'il vous plaît, dites-moi ce qui ne va pas. Dans le script, je déclare importé et appelle la fonction :

J'ai essayé d'obtenir la valeur par référence et par pointeur dans la DLL (en C++). Si c'est par référence, cela ne fonctionne pas, si c'est par pointeur, j'obtiens des pointeurs avec une valeur nulle. Le code est en DLL :

Merci.

MQL4 by reference et by pointer ne fonctionne qu'avec des tableaux et des chaînes de caractères (également des tableaux).
 
Zhunko:
MQL4 by reference and pointer ne fonctionne qu'avec les tableaux et les chaînes de caractères (également les tableaux).
Merci ! J'ai tout compris maintenant, passez un bon week-end, bonhomme).