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

 
drknn:


Le marché se repose - reposez-vous aussi.

Le marché ouvre lundi à Tokyo. Fermeture le vendredi à Chicago. Ouverture vers 2 heures du matin, fermeture vers 10 ou 11 heures (fuseau horaire de Moscou ou Kiev)

Merci beaucoup !)))) Ça me fait rire. Je viens de commencer à travailler le mardi et je ne savais pas que le marché était fermé le week-end :))
 
Zhunko:
Il n'y a pas de fonction, mais elle peut être réalisée en MQL4 + WinAPI.

//+------------------------------------------------------------------+
//|          Function  : int GetChartScale()[1,2,4,6,13]             |
//|          Copyright © 2012, XrustSolution.  mail:xrustx@gmail.com |
//|          https://www.youtube.com/user/opmlv http://forexrust.info |
//+------------------------------------------------------------------+
//|          Description: Возвращает ширину свечи по масштабу чарта  |
//+------------------------------------------------------------------+
#import "user32.dll"
  bool GetWindowRect(int h, int& pos[4]);
#import
//+------------------------------------------------------------------+
int GetChartScale(){
        int h = WindowHandle(Symbol(), Period());
        int rect[4];
        if(h==0) return(1);
        GetWindowRect(h, rect);
        int wW  = rect[2] - rect[0]; // ширина окна
        int bpc = WindowBarsPerChart();
        if(bpc==0) return(1);
        int scale = MathFloor((wW-48)/bpc);
        switch(scale){
                case  1 :       return(0);
                case  2 :       return(1);
                case  4 :       return(2);
                case  8 :       return(3);
                case 16 :       return(6);
                case 32 :       return(13);
                default :   return(1);
        }
        return(1);
}
//+------------------------------------------------------------------+
 

Bonjour ! Pouvez-vous me dire pourquoi la ligne de l'indicateur ne s'affiche pas, le code semble être élémentaire et rien de compliqué. Je l'ai vérifié avec Print (T_V) - il donne la valeur, mais la ligne n'est pas affichée pour une raison quelconque ?

Je voudrais ajouter une question. J'ai supprimé l'indicateur et je l'ai remis sur un graphique et la ligne s'affiche. Pourquoi l'indicateur n'est-il pas recalculé lors de la compilation ?

#property indicator_separate_window
#property indicator_minimum -3
#property indicator_maximum 3
#property indicator_buffers 1
#property indicator_color1 Red
#property indicator_level1 0.0         //горизонтальный уровень N в отдельном окне индикатора, где N от 1 до 8 
#property indicator_levelcolor Black   // цвет горизонтальных уровней индикатора е 
#property indicator_levelwidth 1       //толщина горизонтальных уровней индикатора
double T_Vol[];

int init()
  {  SetIndexBuffer (0, T_Vol); 
     SetIndexStyle  (0, DRAW_HISTOGRAM, STYLE_SOLID, 1); 
     IndicatorDigits(Digits);
   return(0); }
int start(){
   int limit;
   int сounted_bars=IndicatorCounted();
   if (сounted_bars==0) limit=Bars-1;
   if (сounted_bars>0) limit=Bars-сounted_bars-1;
   for(int i=limit;i>=0;i--){
       int T_V=0; 
       if (Volume[i]>Volume[i+1])T_V=1;
       if (Volume[i]<Volume[i+1])T_V=-1;
       T_Vol[i]=T_V;
   }
   return(0);
}
 
PapaYozh:


1.

Quelle est la valeur de la variable "SignalBar" et l'indicateur est-il calculé sur cette barre ?

Peut-être SignalBar=0 et l'indicateur ne calcule pas la 0ème barre.

2.

Oui, pendant le test visuel, les tampons indicateurs ne sont pas affichés jusqu'à ce que le test soit terminé ou interrompu. Mais les indicateurs comptent.

Merci de l'avoir signalé ! Mais rien n'y fait jusqu'à présent :(

J'étudie maintenant la migration des indicateurs dans Expert Advisor. Si vous avez des conseils avisés, je ne les refuserai pas ! :)

 

Bonjour à tous !

J'ai étudié la programmation en tant qu'amateur, je n'ai pas programmé depuis longtemps, j'ai donc une question :

Pourquoi ai-je besoin de points d'arrêt dans MQL4, si après les avoir définis, rien ne se passe à la compilation ? J'ai beaucoup programmé en C#, où il y avait une pause dans l'exécution du programme et où l'on pouvait voir les valeurs des variables, les fonctions appelées et les erreurs répertoriées. Mais ici, j'appuie sur Compile et rien ne se passe. Ou vous pouvez activer Debug d'une manière ou d'une autre, mais je ne sais pas comment ?

 

il y a une fonction "double MathRound( double value)", mais j'ai besoin de l'arrondi à une fraction décimale plus grande, et si le nombre est entier ou déjà décimal, alors laissez-le tranquille.

Par exemple : 1) 0,744 arrondi à 0,8 ; 1,233 arrondi à 1,3

2) 0,9 ou 3 ou 1,5 ne touchent pas.



Qui peut aider, s'il vous plaît ?
 

Je me demande si vous savez seulement qu'il existe une documentation complète et détaillée de la langue ?

NormalizeDouble

 
FAQ:

Je me demande si vous savez seulement qu'il existe une documentation complète et détaillée de la langue ?

NormalizeDouble

en haut, c'est un peu facile pour vous, hein ?...
 
okvseok:
vers le haut, c'est un peu simple, n'est-ce pas... ?

Vous pouvez traduire un nombre en une chaîne de caractères et écrire une fonction pour traiter les caractères de cette chaîne. Ce n'est pas compliqué ici - nous arrondissons uniquement si le nombre a plus d'un chiffre après la virgule.
 
drknn:

Vous pouvez convertir un nombre en une chaîne de caractères et écrire une fonction pour traiter les caractères de cette chaîne. Ce n'est pas compliqué : nous arrondissons un nombre uniquement s'il comporte plus d'un chiffre après la virgule.
OK, je vais vraiment essayer. Merci beaucoup pour l'idée !
Raison: