[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 25

 
Chers programmeurs. En tant que débutant, il m'est difficile d'écrire un algorithme, mais je peux le modifier, alors aidez-moi s'il vous plaît. Je vous en serais très, très reconnaissant ! !!
Un EA si simple et qui en a besoin :

Si la condition1 est remplie, alors :
-vérifier les ordres de VENTE ouverts
-Vérifier s'il y a des ordres de VENTE ouverts et les fermer.
vérifiez s'il y a des ordres de VENTE ouverts - s'il y en a, fermez-les.
-Ouvrir un ordre d'achat

De même, si la condition 2 est remplie, alors
-Vérifier s'il y a des ordres d'achat ouverts.
s'il y en a, fermez-les
vérifier s'il y a des ordres BUY ouverts - s'il y en a, les fermer
-ouvrir un ordre de VENTE
+ analyse des erreurs (pas l'essentiel, mais c'est possible)
Tout ceci pour la paire de devises actuelle.

int start()                       
  {
   double M_0, M_1,               // Значение MAIN на 0 и 1 барах
          S_0, S_1;               // Значение SIGNAL на 0 и 1барах
//--------------------------------------------------------------------
                                  // Обращение к функции техн.индикат.
   M_0 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,  0);// 0 бар
   M_1 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,  1);// 1 бар
   S_0 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,0);// 0 бар
   S_1 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,1);// 1 бар
//--------------------------------------------------------------------
                                  
   if( M_1 < S_1 && M_0 >= S_0 )  // УСЛОВИЕ 1: Зеленая пересекает красную снизу
     
   if( M_1 > S_1 && M_0 <= S_0 )  // УСЛОВИЕ 2: Зеленая пересекает красную сверху
     
//--------------------------------------------------------------------
   return;                            // Выход из start()
  }
 
Bonjour, Pourriez-vous me dire s'il est possible d'assigner une valeur à plusieurs variables globales dans une fonction, et où ces variables doivent être déclarées dans ce cas ?
 
ideasforlife:
Chers programmeurs. En tant que débutant, il m'est difficile d'écrire un algorithme, mais je peux le modifier, alors aidez-moi s'il vous plaît. Je vous en serais très, très reconnaissant ! !!
Un EA si simple et qui en a besoin :

Si la condition1 est remplie, alors :
-vérifier les ordres de VENTE ouverts
-Vérifier s'il y a des ordres de VENTE ouverts et les fermer.
vérifiez s'il y a des ordres de VENTE ouverts - s'il y en a, fermez-les.
-Ouvrir un ordre d'achat

De même, si la condition 2 est remplie, alors
-Vérifier s'il y a des ordres d'achat ouverts.
s'il y en a, fermez-les
vérifier s'il y a des ordres BUY ouverts - s'il y en a, les fermer
-ouvrir un ordre de VENTE
+ analyse des erreurs (pas l'essentiel, mais c'est possible)
Tout ceci pour la paire de devises actuelle.

Il y a beaucoup d'Expert Advisors sur le stochastique dans CodeBase. Voir et refaire
 
ideasforlife:
Chers programmeurs. En tant que débutant, il m'est difficile d'écrire un algorithme, mais je peux le modifier, alors aidez-moi s'il vous plaît. Je vous en serais très, très reconnaissant ! !!
Un EA si simple et qui en a besoin :

Si la condition1 est remplie, alors :
-vérifier les ordres de VENTE ouverts
-Vérifier s'il y a des ordres de VENTE ouverts et les fermer.
vérifiez s'il y a des ordres de VENTE ouverts - s'il y en a, fermez-les.
-Ouvrir un ordre d'achat

De même, si la condition 2 est remplie, alors
-Vérifier s'il y a des ordres d'achat ouverts.
s'il y en a, fermez-les
vérifier s'il y a des ordres BUY ouverts - s'il y en a, les fermer
-ouvrir un ordre de VENTE
+ analyse des erreurs (pas l'essentiel, mais c'est possible)
C'est tout pour la paire de devises actuelle.

Et encore plus facile serait un exemple tiré du manuel : https://book.mql4.com/ru/samples/expert.

Est-ce si difficile de lire le manuel de bout en bout ?

 
ideasforlife:
Chers programmeurs. En tant que débutant, il m'est difficile d'écrire un algorithme, mais je peux le modifier, alors aidez-moi s'il vous plaît. Je vous en serais très, très reconnaissant ! !!
Un EA si simple et qui en a besoin :

Si la condition1 est remplie, alors :
-vérifier les ordres de VENTE ouverts
-Vérifier s'il y a des ordres de VENTE ouverts et les fermer.
vérifiez s'il y a des ordres de VENTE ouverts - s'il y en a, fermez-les.
-Ouvrir un ordre d'achat

De même, si la condition 2 est remplie, alors
-Vérifier s'il y a des ordres d'achat ouverts.
s'il y en a, fermez-les
vérifier s'il y a des ordres BUY ouverts - s'il y en a, les fermer
-ouvrir un ordre de VENTE
+ analyse des erreurs (pas l'essentiel, mais c'est possible)
Tout ceci pour la paire de devises actuelle.


Solution prête - en version manuel, ici. Enlevez tout ce qui concerne le MACD - ici et c'est tout... :-Р

P.S. Même les noms des variables sont presque les mêmes. Vous pouvez lire notre tutoriel, il contient à la fois la description et tout le reste. :-Р

 
Roman.:


Solution prête - en version manuel, ici. Enlevez tout ce qui concerne le MACD - ici et c'est tout... :-Р

P.S. Même les noms des variables sont pratiquement les mêmes. Lisez le manuel - il y a une description et tout le reste. :-Р

Moi d'abord ! :-P :-P
 
Code:

Bonjour, chers membres du forum.

Bien sûr, j'ai quelques questions de la part d'un nouveau venu. J'essaie d'apprendre mql4, car je n'ai jamais développé de programme auparavant, donc les questions peuvent être très primitives. Mais je n'ai jamais été capable de les faire moi-même.

J'ai décidé de "déconner" avec l'affichage des volumes en traçant une ligne au lieu d'un graphique à barres avec quelques traitements. Le code devrait avoir le sens suivant. En partant de la deuxième barre qui est dans la même direction que la précédente (les deux barres sont à la hausse), le volume est dessiné à partir de la deuxième barre. En conséquence, j'obtiens une ligne brisée dans la fenêtre de l'indicateur, qui est effectivement tracée à partir de la deuxième barre vers le haut, mais pas dans tous les cas pour une raison quelconque. La ligne est interrompue parce que les autres conditions de son tracé ne sont pas du tout définies, elle est une chose du futur. Mais ici, pour comprendre pourquoi la ligne n'est pas tracée sur une barre sur deux vers le haut, je ne peux pas. Aidez-moi, s'il vous plaît.

Voici le code. Si vous avez d'autres commentaires sur d'autres erreurs dans le code, j'en serais heureux.


Quelle est la signification de cet indicateur ? Pourquoi en ai-je besoin ?


Pourquoi auriez-vous besoin d'une telle caractérisation :

ExtVolumesBuffer[i]=dVolume+vteor12-vrealUP12;

Ou ça l'est, mais c'est déjà exposé :

ExtVolumesBuffer[i]=Volume[i]+(Volume[i]+Volume[i+1])/(2-(Close[i]-Open[i+1])*1000);

? ??


Et à propos des erreurs dans le code. Vos lignes.

double dVolume=Volume[i];
double vback1=Volume[i+1];

         {
         double vteor12=(dVolume+vback1)/2;
            if (Close[i+1]>Open[i+1] && Close[i]>Open[i]) double UP12=(Close[i]-Open[i+1])*1000; else UP12=0;
            if (UP12!=0) double vrealUP12=(dVolume+vback1)/UP12; else vrealUP12=0;
            if (Close[i+1]>Open[i+1])
            if (Close[i]>Open[i])
            ExtVolumesBuffer[i]=dVolume+vteor12-vrealUP12;
            if (ExtVolumesBuffer[i]<0) ExtVolumesBuffer[i]=0;
              }

les équivalents des éléments suivants :

double dVolume=Volume[i];
double vback1=Volume[i+1];

double vteor12=(dVolume+vback1)/2;
if (Close[i+1]>Open[i+1] && Close[i]>Open[i])
{
   double UP12=(Close[i]-Open[i+1])*1000;
   double vrealUP12=(dVolume+vback1)/(Close[i]-Open[i+1])*1000;
   ExtVolumesBuffer[i]=dVolume+vteor12-vrealUP12;
   if (ExtVolumesBuffer[i]<0)
      ExtVolumesBuffer[i]=0;
}
else
{
   UP12=0;
   vrealUP12=0;
}

Vous regardez le code optimisé et vous vous demandez pourquoi tant de variables ont été introduites ? Et pourquoi seraient-ils "autrement" réduits à zéro ?

Si je comprenais l'idée de l'indicateur, je serais en mesure de vous aider.

 
MaxZ:

Quel serait l'intérêt de cet indicateur ? Pourquoi en avez-vous besoin ?


Pourquoi auriez-vous besoin d'une telle caractéristique :

ou l'est, mais déjà divulgué :

? ??


Et à propos des erreurs dans le code. Vos lignes

sont l'équivalent de ce qui suit :

Vous regardez le code optimisé et vous vous demandez pourquoi tant de variables ont été saisies en premier lieu ? Et pourquoi seraient-ils "autrement" réduits à zéro ?

Si je comprenais l'idée de l'indicateur, je pourrais être en mesure de vous aider.


Je vous remercie de votre réponse et je répondrai à vos questions.

Cette caractéristique est l'idée même de l'indicateur. J'ai également préparé un exercice sur MQL. J'ai imaginé une tâche et je comprends intuitivement que sa mise en œuvre dans un langage n'est pas très difficile. Je m'assois et j'essaie.

Ainsi, l'essence de la caractéristique est que je compare un certain niveau théorique fixe de deux volumes unidirectionnels avec le niveau réel. En d'autres termes, si le rapport réel entre la somme des deux volumes et l'intervalle "ouverture-fermeture" réel est supérieur au rapport théorique spécifié, j'ajoute un "bonus" au deuxième volume réel sous la forme de la différence entre les résultats théorique et réel calculés. Si le niveau réel est inférieur au niveau théorique, je soustrais la même différence du volume de la deuxième barre. Je peux l'expliquer clairement ?

Juste au cas où, je dirai qu'en révélant cette caractéristique, vous avez mal mis les parenthèses, probablement dans la précipitation.

D'ailleurs, il me semble que les chaînes que vous considérez comme équivalentes aux miennes conduiront à la division par zéro. Je vais vérifier maintenant.

 

Bonjour à tous !

Grâce à l'aide inestimable des experts de cette branche (en particulier Roman) j'ai réussi à faire un simple Expert Advisor, qui a montré + sur le testeur. Question : Comment déterminer s'il peut être placé pour un commerce réel ? Y a-t-il des critères ?

 
MaxZ:
Moi d'abord ! :-P :-P

Vous allez du tout au tout dans le mauvais sens... Pas du tout aux bons critères commerciaux, c'est une question de STO-HAS-TO-KE... :-Р