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

 

Merci pour le conseil. C'est ce que je pensais du message, ça n'a pas l'air bon. Bon à savoir. Correction du message.

//+------------------------------------------------------------------+
//|                                                    SimpleBars.mq4|
//|                                                  excelf@gmail.com|
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, Ivan Kornilov. All rights reserved."
#property link "excelf@gmail.com"

#property indicator_chart_window
#property indicator_buffers 4
#property  indicator_color1 Red
#property  indicator_color2 Green
#property  indicator_color3 Red
#property  indicator_color4 Green

#define  SIGNAL_NONE        0//Пустой сигнал
#define  SIGNAL_BUY         1//Сигнал на покупку 
#define  SIGNAL_SELL       -1//Сигнал на продажу 
#define  SIGNAL_TRADE_ALLOW 3//Сигнал разрешающий торговлю


extern int period = 6;
extern bool useClose = true;
extern int width = 1;

double bufferRed1[];
double bufferGreen1[];
double bufferRed2[];
double bufferGreen2[];
double trand[];

int init() {
    IndicatorBuffers(5);
 
    SetIndexBuffer(0, bufferRed1);
    SetIndexBuffer(1, bufferGreen1);
    SetIndexBuffer(2, bufferRed2);
    SetIndexBuffer(3, bufferGreen2);
    SetIndexBuffer(4, trand);
    
    IndicatorDigits(Digits+1);
    SetIndexStyle(0, DRAW_HISTOGRAM, 0, 1);
    SetIndexStyle(1, DRAW_HISTOGRAM, 0, 1);
    SetIndexStyle(2, DRAW_HISTOGRAM, 0, width);
    SetIndexStyle(3, DRAW_HISTOGRAM, 0, width);
}


int start() {
   int counted_bars=IndicatorCounted();

   if(counted_bars > 0) {
       counted_bars--;
   }
   int limit = Bars - counted_bars;

   int j;
   double buyPrice;
   double sellPrice;
   for(int i = limit - 1; i >= 0; i--) {
        if(useClose) {
            buyPrice = Close[i];
            sellPrice = Close[i];
        } else {
            buyPrice = Low[i];
            sellPrice = High[i];
        }
        if(trand[i + 1] == SIGNAL_NONE || trand[i + 1] == EMPTY_VALUE) {
            if(Close[i] > Open[i]) {
               trand[i] = SIGNAL_BUY;
           } else {
               trand[i] = SIGNAL_SELL;
           }
        } else {
            if(trand[i + 1] == SIGNAL_BUY) {
                if(buyPrice > Low[i + 1]) {
                   trand[i] = SIGNAL_BUY;
                } else {
                   for(j = 2; j <= period; j++) {
                        if(buyPrice > Low[i + j]) {
                           trand[i] = SIGNAL_BUY;
                        break;
                        } else {
                           trand[i] = SIGNAL_SELL;
                        }
                   }
                }
            } else if(trand[i + 1] == SIGNAL_SELL) {
                if(sellPrice < High[i + 1]) {
                   trand[i] = SIGNAL_SELL;
                } else {
                    for(j = 2; j <= period; j++) {
                        if(sellPrice < High[i + j]) {
                           trand[i] = SIGNAL_SELL;
                           break;
                        } else {
                           trand[i] = SIGNAL_BUY;
                        }
                   }
                }
            }   
        }

        if(trand[i] == SIGNAL_SELL) {//RED BAR 
            bufferRed1[i]  = High[i];
            bufferGreen1[i] = Low[i]; 
            bufferRed2[i]  = MathMax(Open[i], Close[i]); 
            bufferGreen2[i] = MathMin(Open[i], Close[i]);   
        } else if(trand[i] == SIGNAL_BUY)  {
            bufferRed1[i]  = Low[i];
            bufferGreen1[i] = High[i]; 
            bufferRed2[i]  = MathMin(Open[i], Close[i]);  
            bufferGreen2[i] = MathMax(Open[i], Close[i]);    
        } 
    }
}
 
Kirill875:

C'est ce que vous vouliez dire :

Aussi ce Buff8[i]=iMA(NULL,60,Period1,sh 0,MODE_SMA,PRICE_CLOSE,sh) ;

Et utilisez le code coller.

 
Roman_Bryansk:

Merci pour le conseil. C'est ce que je pensais du message, ça n'a pas l'air bon. Bon à savoir. Correction du message.

Il y a des options magiques "supprimer" et "modifier" en bas à droite sous vos messages, pas besoin d'écrire la même chose dans un nouveau message, il suffit de le corriger là ;)
 
evillive:
Pour le code, il existe un bouton en haut du panneau d'édition des messages ou la combinaison Ctrl+Alt+M, le code devient agréable et lisible. Et à propos des pertes, la fonction f SetIndexStyle() a un paramètre couleur, utilisez-le, n'hésitez pas.

Si vous le voulez bien, pouvez-vous me donner plus de détails ? J'ai juste besoin que les paramètres de couleur et de largeur soient comme ceci :

# couleur largeur style

0. Noir 0 0

1. noir 0 0

2. rouge 2 0

3. Vert 2 0

La largeur disparaît toujours, c'est-à-dire que c'est comme s'il revenait toujours au réglage par défaut.

Ne jugez pas, je ne semble pas avoir ce que vous avez. Également lors de la compilation de 2 messages de ce type : tous les chemins de contrôle ne renvoient pas une valeur SimpleBars.mq4 115 1.

 
Compris. Mes excuses. J'ai fait un gâchis de choses.
 
Roman_Bryansk:

Si vous le voulez bien, pouvez-vous me donner plus de détails ? J'ai juste besoin que les paramètres de couleur et de largeur soient comme ceci :

# couleur largeur style

0. Noir 0 0

..

disparaît toujours de la largeur, c'est-à-dire que c'est comme s'il revenait toujours aux paramètres par défaut.

Ne jugez pas trop sévèrement, je ne semble pas avoir ce que vous avez. Également à la compilation 2 messages de ce type : tous les chemins de contrôle ne renvoient pas une valeur SimpleBars.mq4 115 1.


void  SetIndexStyle(
   int     index,       // номер линии
   int     type,        // тип
   int     style=EMPTY, // стиль линии
   int     width=EMPTY, // ширина линии
   color   clr=clrNONE  // цвет
   );

C'est pour le premier tampon dans votre cas :

SetIndexStyle(0, DRAW_HISTOGRAM, EMPTY,width,Red);

Si les paramètres ne sont pas sauvegardés, il se peut que vous ne disposiez pas des autorisations suffisantes pour écrire dans le répertoire des données du terminal. Cela se produit lorsque vous l'installez sur la partition système et que vous l'exécutez en mode normal. Essayez d'exécuter le terminal en mode /portable (la clé est écrite dans le raccourci de démarrage du terminal).

Et j'ai toujours recommandé et je continuerai à recommander à tous les utilisateurs d'installer tous les programmes qu'ils peuvent sur une partition non système.

 
Простите меня за наглость)
 
evillive:


C'est-à-dire, pour le premier tampon dans votre cas :

Si les paramètres ne sont pas sauvegardés, il est possible que vous n'ayez pas les droits d'écriture suffisants sur le répertoire de données du terminal. Cela se produit lorsque vous l'installez sur la partition système et que vous l'exécutez en mode normal. Essayez d'exécuter le terminal en mode /portable (la clé est écrite dans le raccourci de démarrage du terminal).

Et j'ai toujours recommandé et je continuerai à recommander à tous les utilisateurs d'installer tous les programmes qu'ils peuvent sur une partition non système.

Vous êtes un magicien.) Jel'ai remplacé parEMPTY et tout va bien avec les deux indicateurs. Merci beaucoup. En ce qui concerne "/portable" : lorsque j'écris dans les paramètres de la chaîne d'objets, il est indiqué que le chemin est incorrect.
 
Roman_Bryansk:
Vous êtes un magicien.) Jel'ai remplacé parEMPTY et tout va bien avec les deux indicateurs. Merci beaucoup. En ce qui concerne "/portable" : Lorsque j'écris dans les paramètres de la chaîne d'objets n'écrit pas le chemin correct.
J'ai juste besoin de mettre la clé derrière les guillemets.
 
Kirill875:
Le terminal se bloque après la compilation. Pouvez-vous me montrer un exemple de l'endroit où il faut mettre le produit.

Voici

Dossiers :
testmtf.mq4  4 kb