Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 976

 
AlexeyVik:
Et votre mère ne vous permet pas de lire la documentation ? Par exemple, SendMail

Oui cette fonction bien sûr je sais, je veux dire - un onglet dans la fenêtre du terminal, (commerce, actifs, historique du compte, nouvelles, alertes, courrier, etc.) quand le courrier arrive là (dans le terminal de courrier interne) envoyé SMS ou e-mail (par exemple pour recevoir des messages sur le redémarrage du serveur, etc.)

 
optionany:

Oui cette fonction bien sûr je connais, je veux dire - un onglet dans la fenêtre du terminal, (trade, actifs, historique du compte, nouvelles, alertes, mail, etc.) quand le mail arrive là (dans le terminal mail interne) envoyé un SMS ou un e-mail (par exemple pour recevoir des messages sur le redémarrage du serveur, etc.)

Formulez donc la question en y réfléchissant.

Si vous avez les idées claires, vous avez les idées claires...

 

Bonjour. Je n'arrive pas à comprendre quelle est mon erreur, ou plutôt quelle est la faille de ce bloc dans mon programme :

//---Comptabilité séparée des commandes en cours

for(int i=OrdersTotal()-1;i>=0;i--)//OrdersTotal()-1;i>=0;i-- //La boucle des commandes
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES) ;// Si un ordre est trouvé, alors :
{
if(OrderSymbol() !=Symbol()||OrderMagicNumber()!=Magic) continue ;
}

{
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic)
if(OrderType()==OP_BUY)
Total++ ;
}
return ;
}
//---

for(int i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES) ;
{
if(OrderSymbol() !=Symbol()||OrderMagicNumber()!=Magic) continue ;
}

{
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic)
if(OrderType()==OP_SELL)
Total++ ;
}
return ;
}
//---

L'EA fonctionne de manière stable dans le Strategy Tester et sur un compte de démonstration, mais lors de la compilation, il génère 2 avertissements : la valeur de retour de 'OrderSelect' devrait être vérifiée, ce que je ne peux pas surmonter. Si c'est possible, dites-moi ce que j'ai écrit de faux ou d'incomplet.

 
YuryVL:

Bonjour. Je n'arrive pas à comprendre quelle est mon erreur, ou plutôt quelle est la faille de ce bloc dans mon programme :

//---Comptabilité séparée des commandes en cours

for(int i=OrdersTotal()-1;i>=0;i--)//OrdersTotal()-1;i>=0;i-- //La boucle des commandes
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES) ;// Si un ordre est trouvé, alors :
{
if(OrderSymbol() !=Symbol()||OrderMagicNumber()!=Magic) continue ;
}

{
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic)
if(OrderType()==OP_BUY)
Total++ ;
}
return ;
}
//---

for(int i=OrdersTotal()-1;i>=0;i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES) ;
{
if(OrderSymbol() !=Symbol()||OrderMagicNumber()!=Magic) continue ;
}

{
if(OrderSymbol()==Symbol()&&OrderMagicNumber()==Magic)
if(OrderType()==OP_SELL)
Total++ ;
}
return ;
}
//---

L'EA fonctionne de manière stable dans le Strategy Tester et sur un compte de démonstration, mais lors de la compilation, il affiche un avertissement : la valeur de retour de 'OrderSelect' devrait être vérifiée, ce que je ne peux contourner d'aucune manière. Si c'est possible, dites-moi ce que j'ai écrit de faux ou d'incomplet.


SRS pour insérer le code! Et pourquoi 2 boucles, après avoir vérifié si non vérifier si oui et Total devrait lire les deux types et garder en mémoire pour chacun séparément ? Personne ne comprendra ça ! Vous devez construire une logique pour que tout le monde comprenne ce que vous voulez, puis le compilateur comprendra aussi !
 
YuryVL:

Bonjour. Je n'arrive pas à comprendre quelle est mon erreur, ou plutôt la déficience de ce bloc dans mon programme :

...

1) Pour coller le code correctement ici, cliquez sur SRC et ensuite copiez votre code dans la case (image ci-dessous).


2) Essayez ce code :

int Total_BUY=0, Total_SELL=0; // новые переменные как счетчики ордеров

//---Раздельный учёт открытых ордеров
for(int i=OrdersTotal()-1; i>=0; i--) // Цикл перебора ордеров
  {
   // OrderSelect() надо выбирать с помощью if
   if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)); // Если найден ордер, то:
     {
      if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;
      else
        {
         if(OrderType()==OP_BUY)  Total_BUY++;  // считает открытые позиции на покупку
         if(OrderType()==OP_SELL) Total_SELL++; // считает открытые позиции на продажу
        }
     }
  }
 

Comment puis-je obtenir une alerte

Alert(OrderOpenPrice());

afficherle prix d'ouverture de l 'ordre avec 5 chiffres décimaux ? NormalizeDouble(OrderOpenPrice(),Digits) n'aide pas(l'ordre est présélectionné).

 
JoinDoe:

Comment puis-je obtenir une alerte

afficher le prix d'ouverture de l'ordre avec 5 chiffres décimaux ? NormalizeDouble(OrderOpenPrice(),Digits) n'aide pas(l'ordre est présélectionné).

Alert(DoubleToString(OrderOpenPrice(),Digits));
 
Leo59:
Bonjour, ma chère !

Veuillez traduire l'algorithme permettant de trouver les coordonnées du point d'intersection de deux segments.

Extrait de l'article :

C'est très simple !
x1,y1 et x2,y2 sont les coordonnées des sommets du premier segment ;
x3,y3 et x4,y4 sont les coordonnées des sommets du deuxième segment ;

pour trouver l'intersection, on fait les équations des lignes :
première équation :
(x-x1)/(x2-x1)=(y-y1)/(y2-y1);
deuxième équation
(x-x3)/(x4-x3)=(y-y3)/(y4-y3);
ces équations définissent une ligne passant par deux points, ce qui est ce dont nous avons besoin.
A partir de ces équations, on trouve x et y par les formules suivantes :
x:=((x1*y2-x2*y1)*(x4-x3)-(x3*y4-x4*y3)*(x2-x1))/((y1-y2)*(x4-x3)-(y3-y4)*(x2-x1));
y:=((y3-y4)*x-(x3*y4-x4*y3))/(x4-x3);
Puisque nos lignes se croisent, elles ont un point d'intersection commun avec les coordonnées (x,y), que nous devons trouver.
Pour que l'intersection appartienne à nos segments de ligne, nous devons la contraindre, c'est-à-dire vérifier la condition :
si
(((x1<=x)et(x2>=x)et(x3<=x)et(x4 >=x))ou((y1<=y)et(y2>=y)et(y3<=y) et(y4>=y))
alors il y a un point d'intersection de ces segments, et si ce n'est pas le cas, il n'y a pas de point d'intersection.
Vous devez également vérifier le parallélisme de ces segments à l'aide de coefficients d'angle :
k1:=(x2-x1)/(y2-y1) ;
k2:=(x4-x3)/(y4-y3) ;
où k1 et k2 sont les tangentes de l'angle des pentes des segments à la direction positive de l'axe ОХ, si k1=k2, alors les segments sont parallèles, ils n'ont donc pas de points d'intersection.

Et peut-être que quelqu'un en a une toute prête dans les archives ?


peut-être
 

Existe-t-il une possibilité ou une fonction dans MT4 pour rediriger les messages vers la messagerie interne du terminal (à propos du changement de levier, du redémarrage du serveur, etc.) par sms ou par e-mail.

P.s un onglet dans la fenêtre du terminal, (trade, assets, account history, news, alerts, MESSAGE, etc.) ?

 
Bonjour chers utilisateurs du forum !

J'ai commencé à étudier MQL4 et j'ai rencontré un problème lors de l'écriture d'un indicateur simple que je ne peux pas résoudre. L'essence du problème :

1_Comment trouver le High[i - fin de journée], j'ai une boucle simple Close[i]-Open[i+1], j'ai besoin de trouver le High[i - fin de journée]. Par exemple, de [i], [1], [2] et jusqu'à la fin de la journée (PERIOD_H1) . Je ne sais pas comment faire. Il existe la fonction "iHigh", mais elle est un peu différente.

2_ Ce n'est pas tout, désolé d'être insolent, il y a la fonction 'iBars' ( Retourne le nombre de barres dans l'historique pour un symbole et une période correspondants). Pouvez-vous me dire quelle combinaison de fonctions peut calculer non seulement le nombre de barres avec l'heure, disons '12:00' ou '15:00' dans history(PERIOD_H1), mais aussi combien de barres avec l'heure.

J'ai parcouru tous les manuels, peut-être ai-je oublié quelque chose, mais je n'ai rien trouvé de convenable. En utilisant le moteur de recherche, le résultat est le même. Si vous savez où ces questions ont été discutées, veuillez m'envoyer le lien.

Merci d'avance !