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

 
Oui, bien sûr. Premier : 0, dernier : OrdersTotal()-1
 
Aleksei Stepanenko #:
Oui, bien sûr. Premier : 0, dernier : OrdersTotal()-1

Ah, il y a un tableau, vraiment à partir de zéro...

 
#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_color2 Red
                                                              
extern int RSIPERIOD=3;
extern double KOEFF1=2.5;
extern double KOEFF2=1.86; 
                                                                                                                                                                  
double mass0[],Buf1[],Buf2[];
double D10,D11,D12;
                                                                                                                                                                                                                                                                                                                                             
int init()
  {
   IndicatorDigits(0);
   string short_name="RSITEST";           
   IndicatorShortName("RSITEST");
   
   D10=RSIPERIOD;D11=D10*KOEFF1;D12=D11*KOEFF2;;
 
   SetIndexBuffer(0,mass0);
   SetIndexLabel (0,"Stoch "+Ds_0(D10)+")\n");
   SetIndexBuffer(1,Buf1);
   SetIndexLabel (1,"Stoch ("+Ds_0(D11)+")\n");
   SetIndexBuffer(2,Buf2);
   SetIndexLabel (2,"Stoch ("+Ds_0(D12)+")\n");
   return(0);
  }
                                                                                                               
int start()
  {
   if(Bars<=RSIPERIOD) return(0);
   int ExtCountedBars=IndicatorCounted();
   if (ExtCountedBars<0) return(-1);
   if (ExtCountedBars>0) ExtCountedBars--;
   for(int i=0;i<Bars-RSIPERIOD;i++)
      {
       mass0[i] = iRSI(NULL,0,D10,0,i);
       if(iRSI(NULL,0,D11,0,i)>iRSI(NULL,0,D12,0,i))
       Buf1[i] = Buf2[i];
       Buf1[i] = DRAW_LINE;
       Buf2[i] = EMPTY_VALUE;
      }
   return(0);
  }

string Ds_0(double DOUBLE) {return(DoubleToStr(DOUBLE,0));}
MakarFX #:
dans votre cas, il n'a travaillé que sur 2 des 3 lignes, je l'ai adapté à la tâche à accomplir et il s'avère que la première ligne reste (comme il se doit) et le niveau des deux autres (rouge et bleu) avec les conditions données (au lieu de la ligne rouge et bleue était une seule ligne - et elle était rouge siRSI2>RSI3 et bleu siRSI2<RSI3) deviennent droits et uniquement rouges comme s'il ne savait pas qu'il s'agissait d'un RSI
Je joins une capture d'écran.
Dossiers :
 
Andrey Kipyatkov #:
dans votre cas, il s'avère que seulement 2 des 3 lignes, je l'ai adapté au problème, et il s'avère que la première ligne reste (comme il se doit) et le niveau des deux autres (rouge et bleu) avec des conditions données (au lieu d'une ligne rouge et bleue était une seule ligne - et elle était rouge siRSI2>RSI3 et bleu siRSI2<RSI3) deviennent droits et uniquement rouges comme s'il ne savait pas qu'il s'agissait d'un RSI
Je joins une capture d'écran.

Comment égalisez-vous Buf1 et Buf2 ?

Dans votre état, ils sont nuls !

 
Andrey Kipyatkov #:
dans votre cas, il n'a travaillé que sur 2 des 3 lignes, je l'ai adapté à la tâche à accomplir et il s'avère que la première ligne reste (comme il se doit) et le niveau des deux autres (rouge et bleu) avec les conditions données (au lieu de la ligne rouge et bleue était une seule ligne - et elle était rouge siRSI2>RSI3 et bleu siRSI2<RSI3) deviennent droits et uniquement rouges comme s'il ne savait pas qu'il s'agissait d'un RSI
Je joins une capture d'écran.


Dossiers :
RSITEST-1.mq4  4 kb
 
Bonjour à tous, pouvez-vous me dire quelle est la différence entre un robot de trading et un Expert Advisor ?
 
Daniil Osipov #:
Bonjour à tous, pouvez-vous me dire quelle est la différence entre un robot de trading et un conseiller en trading ?
C'est la même chose... un jeu de mots.
 
MakarFX #:

Merci de m'aider avec le code mais si ce n'est pas difficile j'aimerais comprendre le but. Lorsque vous écrivez tout sur une seule ligne, vous :
Buf0[i] = iRSI(NULL,0,D10,0,i) ; - on précise dans cette chaîne que le tableau zéro est une ligne rsy avec le paramètre donné ci-dessus
si(iRSI(NULL,0,D11,0,i)>iRSI(NULL,0,D12,0,i)) alors vous dites que Rsai avec le paramètre D11 >D12
Buf1[i] = Buf0[i] ; et ensuite vous faites correspondre (superposer une ligne sur l'autre) le psi avec le paramètre D11 et D10
sinon
Buf1[i] = EMPTY_VALUE ; et vous lui dites de ne pas rendre xy avec le paramètre D11.
mais quand vous travaillez avec 3 lignes
Buf0[i] = iRSI(NULL,0,D10,0,i) ; vous dites comment dessiner 1
ligne Buf1[i] = (iRSI(NULL,0,D11,0,i)+iRSI(NULL,0,D12,0,i))/2 ; Ensuite, vous additionnez et divisez par 2. 2 et 3 - Cette action n'est pas très claire pour moi car avant vous mettiez en équation des tableaux et superposiez une ligne sur l'autre pourquoi cette syntaxe.
si(iRSI(NULL,0,D11,0,i)>iRSI(NULL,0,D12,0,i)) alors vous répétez l'exemple vous ditesD11>D12
Buf2[i] = Buf1[i] ; et vous mettez en équation les 3ème et 2ème
lignes
else
Buf2[i] = EMPTY_VALUE ; et vous lui dites de ne pas dessiner la deuxième ligne

. Je comprends bien comment vous "paramétrez" le langage et pourquoi vous avez ajouté des tableaux et divisé par 2 dans le deuxième cas

 
MakarFX #:
C'est la même chose... un jeu de mots.
Vitaly Muzichenko #:

Un jeu de mots.

De la branche suivante. Sans collusion...

 
Andrey Kipyatkov #:
Je vous remercie de votre aide pour le code, mais si cela ne vous dérange pas trop, j'aimerais en comprendre l'essence. Lorsque vous écrivez tout sur une seule ligne, vous :

Andrew, définissons d'abord votre condition du premier message

Je voulais savoir s'il y a un moyen de prescrire dans le code au lieu d'une ligne rouge et bleue (RSI2 et RSI3 dans l'image (jointe également), respectivement) était une seule ligne - et elle était rouge si RSI2>RSI3 et bleue si RSI2 < RSI3

.

donc, au lieu de la rouge et de la bleue - nous obtenons la moyenne de ces lignes, c'est-à-dire

Buf1[i] = (iRSI(NULL,0,D11,0,i)+iRSI(NULL,0,D12,0,i))/2;

et cette ligne, par défaut, est de couleur rouge.

En outre, lorsque la condition est remplie

if(iRSI(NULL,0,D11,0,i)>iRSI(NULL,0,D12,0,i))

nous ne changeons pas la couleur de la ligne car cela ne peut être fait dans MT4,

on prend et on superpose une autre ligne avec une autre couleur

Buf2[i] = Buf1[i];