Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 204

 
STARIJ:

Le croisement des MA se produit entre les barres - prise d'un exemple clair

Le MA sur les barres à gauche et à droite du croisement est différent du prix au point de croisement. Je comprends que l'auteur de la question souhaite obtenir la valeur au point de croisement exact plutôt que la valeur sur l'une des barres adjacentes. Cette valeur exacte peut être obtenue en utilisant l'interpolation linéaire - parce que le MA entre les barres est construit comme des segments de ligne droite. Ou prenez les coordonnées de chaque MA sur des barres adjacentes. Construire analytiquement 2 droites et calculer leur point d'intersection. Il est possible de calculer en considérant 2 triangles similaires. Une autre question se pose : pourquoi en avons-nous besoin ? Les coûts sont-ils proportionnels à la valeur du résultat ? Après tout, les points d'intersection se déplaceront si les paramètres MA sont modifiés de façon minimale. Le plus souvent, il est exigé par le responsable du projet de cours.

Merci pour la clarification, je comprends que ce n'est pas facile à faire.
 
missha32:

Je n'arrive pas à trouver l'erreur dans mes calculs.
J'ai besoin de trouver le haut et le bas du jour précédent, mais pour une raison quelconque, le bas était le jour d'avant.

Il est préférable d'utiliser CopyHigh et CopyLow avec la période PERIOD_D1 et la barre ou le temps correspondant.

CopyHigh - Доступ к таймсериям и индикаторам - Справочник MQL4
CopyHigh - Доступ к таймсериям и индикаторам - Справочник MQL4
  • docs.mql4.com
CopyHigh - Доступ к таймсериям и индикаторам - Справочник MQL4
 
missha32: J'ai besoin de trouver le plus haut et le plus bas du jour précédent, mais pour une raison quelconque, le plus bas est trouvé le jour précédent.
  // iHigh и iLow дают макс и мин цены указанного бара. Если PERIOD_D1, то целых суток  если 1 то вчерашних последних завершенных суток

   Alert("Максимум вчерашнего дня = ", iHigh(_Symbol, PERIOD_D1, 1));
   Alert("Минимум  вчерашнего дня = ", iLow(_Symbol,  PERIOD_D1, 1));
Toute barre de n'importe quelle période contient des informations générales sur l'intervalle correspondant de barres de périodes inférieures : Maximum ; Minimum ; Heure d'ouverture égale à l'heure de la première barre de l'intervalle ; Heure de clôture égale à l'heure de la dernière barre de l'intervalle ; Volume égal à la somme des volumes des barres de l'intervalle. Plus précisément, ces informations sont contenues dans les tableaux respectifs
 
STARIJ:
Toute barre de n'importe quelle période contient des informations générales sur l'intervalle correspondant des barres des périodes inférieures : maximum, minimum, heure d'ouverture et de fermeture et volume égal à la somme des volumes des barres inférieures. Plus précisément, ces informations sont contenues dans les tableaux correspondants

Je le ferais, mais il se peut que je ne puisse pas calculer les données en utilisant un autre algorithme, car je devrai peut-être chercher d'autres valeurs d'hier et ce sera une corvée de réécrire les fonctions à nouveau.

Si vous pouviez me dire où se trouve l'erreur dans mon code, je ne le comprends pas. Lorsque j'essaie d'afficher le nombre de barres, elles vont toutes ensemble, mais lorsque j'essaie d'obtenir le maximum ou le minimum, il ne montre pas ce qu'il devrait.

 
missha32:

Je le ferais, mais je risquerais de ne pas pouvoir calculer les données car je devrais chercher d'autres valeurs de la veille et ce serait une plaie de réécrire les fonctions à nouveau.

Si vous pouviez me dire où se trouve l'erreur dans mon code, je ne le comprends pas. Lorsque j'affiche le nombre de barres à l'écran, tout converge, mais lorsque j'essaie d'obtenir le maximum ou le minimum, il n'affiche pas ce qu'il devrait.

Tu as fait tellement de dégâts que je n'arrive pas à y voir clair. Une montagne de conversions de l'un à l'autre...

Et tout cela pour trouver le maximum et le minimum de la journée ?

Alors qu'est-ce qui ne marche pas pour vous ?

//+------------------------------------------------------------------+
double GetPriceMaximum(const string symbol_name,const ENUM_TIMEFRAMES timeframe,int shift){
   double array[1];
   ResetLastError();
   if(CopyHigh(symbol_name,timeframe,shift,1,array)==1) return(array[0]);
   Print(__FUNCTION__," > Ошибка копирования цены High: ",GetLastError());
   return(WRONG_VALUE);
}
//+------------------------------------------------------------------+
double GetPriceMinimum(const string symbol_name,const ENUM_TIMEFRAMES timeframe,int shift){
   double array[1];
   ResetLastError();
   if(CopyLow(symbol_name,timeframe,shift,1,array)==1) return(array[0]);
   Print(__FUNCTION__," > Ошибка копирования цены Low: ",GetLastError());
   return(WRONG_VALUE);
}
//+------------------------------------------------------------------+

Besoin de connaître les sommets de la journée ? S'il vous plaît :

double max_price=GetPriceMaximum(Symbol(),PERIOD_D1,0);

Besoin de connaître le maximum de la journée d'hier ? Facile :

double max_price=GetPriceMaximum(Symbol(),PERIOD_D1,1);

Vous avez besoin de connaître le niveau le plus bas d'avant-hier ? Pas de problème :

double min_price=GetPriceMinimum(Symbol(),PERIOD_D1,2);

Vous pourriez choisir la solution de facilité et utiliser des fonctions quadruples pures :

double price_max=iHigh(Symbol(),PERIOD_D1,1);

Mais je ne conseillerais pas - en utilisant de nouvelles constructions de langage, vous vous préparerez vous-même et votre code à ce qu'un jour le quadruple ne soit plus supporté, et l'autodiscipline et tout ça ;)

 
Artyom Trishkin:

Tu as fait un tel gâchis que c'est difficile de s'y retrouver. Une montagne de conversions de l'un à l'autre...

Tout pour trouver les hauts et les bas de la journée ?

Alors qu'est-ce qui ne marche pas pour vous ?

Besoin de connaître les sommets de la journée ? S'il vous plaît :

Besoin de connaître le maximum de la journée d'hier ? Facile :

Vous avez besoin de connaître le niveau le plus bas d'avant-hier ? Pas de problème :

Vous pourriez choisir la solution de facilité et utiliser des fonctions quadruples pures :

Mais je ne conseillerais pas - en utilisant de nouvelles constructions de langage, vous vous préparerez et préparerez vos codes qu'un jour le quadruple ne sera pas supporté, et l'autodiscipline et tout ça ;)

J'ai trouvé une erreur moi-même (par inattention, j'ai mal lu les paramètres iHighest, iLowest ).

Donc, ce n'est pas approprié car il faudra d'autres calculs d'hier.

 
missha32:

J'ai trouvé l'erreur moi-même (par inattention, j'ai mal lu les paramètres iHighest,iLowest).

Cela ne convient pas car d'autres calculs de la veille seront nécessaires.

Je ne comprends pas pourquoi on vous empêche d'obtenir les données d'une manière simple et naturelle pour d'autres calculs.
 
missha32 chaque signal rouge pour l'achat et chaque signal bleu pour la vente pour permettre de remplir à chaque signal

if(Red ) OrderSend( ... Buy ...) ; if( Blue ) OrderSend( ... Sell ...) ;

Seulement le contraire, vendre au sommet, acheter au fond...

La fonction OnInit (l'ancienne qui demande l'init) est exécutée au démarrage de l'indicateur (lors d'un changement de période, d'une recompilation, ...). Une valeur doit être attribuée à toutes les variables utilisées. La ligne SetIndexDrawBegin(0,i-1) est présente dans la fonction OnInit; il faut attribuer une valeur à la variable i ou utiliser une constante

 
STARIJ:

if(Red ) OrderSend( ... Buy ...) ; if( Blue ) OrderSend( ... Sell ...) ;

Seulement le contraire, vendre au sommet, acheter au fond...

La fonction OnInit (l'ancienne qui demande l'init) est exécutée au démarrage de l'indicateur (lors d'un changement de période, d'une recompilation, ...). Une valeur doit être attribuée à toutes les variables utilisées. Dans la fonction OnInit, il y a la ligne SetIndexDrawBegin(0,i-1) ; il faut attribuer une valeur à la variable i ou utiliser une constante

Pour être honnête, je ne comprends rien, je suis nouveau dans la programmation Mql4, alors s'il vous plaît aidez-moi avec le code.
 
missha32:
Pour être honnête, je ne comprends rien, je suis nouveau dans la programmation Mql4, si cela ne vous dérange pas de m'aider avec le code.

Le code aide généralement dans le cadre du freelancing.

Ici - soit l'algorithme ou pour corriger vos erreurs. Mais pas pour le réécrire à nouveau pour vous.