Ajouter de la couleur à un indicateur - page 2

 

Je n'ai toujours pas compris les tampons de l'indicateur,

mais le code suivant fait ce que je veux, afficher la couleur des barres Heiken Ashi actuelles et passées.

Ce qu'il ne fait pas, c'est le mettre dans une fenêtre séparée, et l'afficher UNIQUEMENT sous la barre actuelle.

Est-ce possible ? Ou dois-je encore comprendre le tampon de l'indicateur ?

Vous avez affaire à un débutant très vert... merci de votre patience.

int start()

{

ObjectsDeleteAll() ;

// efface le graphique avant de dessiner

// courant 5 min

double open.5.0 =iCustom(NULL,1, "Heiken Ashi",0,2,0) ; //Ouverture précédente

double close.5.0 =iCustom(NULL,1, "Heiken Ashi",0,3,0) ; //Fermeture précédente


bool Up.5.0 = (close.5.0>open.5.0) ;

bool Down.5.0 = (close.5.0<open.5.0) ;

// 5 min passées

double open.5.1 =iCustom(NULL,1, "Heiken Ashi",0,2,1) ; //Ouverture précédente

double close.5.1 =iCustom(NULL,1, "Heiken Ashi",0,3,1) ; //Fermeture précédente

bool Up.5.1 = (close.5.1>open.5.1) ;

bool Down.5.1 = (close.5.1<open.5.1) ;


ObjectCreate("square1",OBJ_RECTANGLE, 0, TimeCurrent(), Ask-0.001, 0, Bid-0.001) ;

if(Down.5.0 == 1) ObjectSet("square1",OBJPROP_COLOR,Red) ;


ObjectCreate("square1",OBJ_RECTANGLE, 0, TimeCurrent(), Ask-0.001, 0, Bid-0.001) ;

if(Down.5.0 == 0) ObjectSet("square1",OBJPROP_COLOR,White) ;


ObjectCreate("square2",OBJ_RECTANGLE, 0, TimeCurrent(), Ask-0.0015, 0, Bid-0.0015) ;

if(Down.5.1 == 1) ObjectSet("square2",OBJPROP_COLOR,Red) ;


ObjectCreate("square2",OBJ_RECTANGLE, 0, TimeCurrent(), Ask-0.0015, 0, Bid-0.0015) ;

if(Down.5.1 == 0) ObjectSet("square2",OBJPROP_COLOR,White) ;


return(0) ;

}

 

Veuillez utiliser ceci pour afficher le code. . il est plus facile à lire.

 
mrchuckw:

Je n'ai toujours pas compris les tampons de l'indicateur,

mais le code suivant fait ce que je veux, afficher la couleur des barres Heiken Ashi actuelles et passées.

Ce qu'il ne fait pas, c'est le mettre dans une fenêtre séparée, et l'afficher UNIQUEMENT sous la barre actuelle.

Est-ce possible ? Ou dois-je encore comprendre le tampon de l'indicateur ?

Je pense qu'il faudrait dessiner un indicateur sur la fenêtre séparée pour obtenir la fenêtre en premier lieu afin de pouvoir y ajouter les objets...
 

quelque chose comme ceci

double adUpBuffer[],
       adDnBuffer[];
//---- indicator colors
color  cDirection[2]={LimeGreen,FireBrick};
string sDirection[2]={"up", "down"};
int    iSquare=110;
double dGap=10*Point
//+------------------------------------------------------------------+
//   Custom indicator initialization function                        |
//+------------------------------------------------------------------+
int init()
  {
//---- drawing settings
   IndicatorBuffers(2);
   for(int i=0;i<2;i++){
   SetIndexStyle(i,DRAW_ARROW,clrDirection[i]);
   SetIndexArrow(i,iSquare);
   SetIndexDrawBegin(i,12);
   SetIndexLabel(i,sDirection[i]);}
//---- 2 indicator buffers mapping
   SetIndexBuffer(0,adUpBuffer);
   SetIndexBuffer(1,adDnBuffer);
//---- initialization done
   return(0);
  }


      if(Up.5.0)
           adUpBuffer[i]=Low[i]-dGap;
      else adDnBuffer[i]=NULL;
      if(Dn.5.0)
           adDnBuffer[i]=High[i]+dGap;}
      else adDnBuffer[i]=NULL;} 
 

Je ne suis pas doué pour les indicateurs... Jetez un coup d'œil à ceci pour voir si cela vous donne ce dont vous avez besoin...

Dossiers :
ashi1.mq4  3 kb
 

J'y travaille... mais vous supposez que j'en sais BEAUCOUP plus que je n'en sais.

Ci-joint le programme complet de mon indicateur jusqu'à présent. Comment pourrais-je mettre votre code dedans ? Ou dois-je créer un tout nouveau programme ?

J'ai essayé de le coller du mieux que je pouvais, mais je n'arrive pas à compiler. Il n'aime pas le double dGap=10*Point même après avoir mis un ; après.

Et il y a une tonne d'autres erreurs de compilation. Je suppose que je suis juste assez bête pour ne pas savoir quoi faire maintenant.

Dossiers :
objects2.mq4  3 kb
 
mrchuckw:

J'y travaille... mais vous supposez que j'en sais BEAUCOUP plus que je n'en sais.

Ci-joint le programme complet de mon indicateur jusqu'à présent. Comment pourrais-je mettre votre code dedans ? Ou dois-je créer un tout nouveau programme ?

J'ai essayé de le coller du mieux que je pouvais, mais je n'arrive pas à compiler. Il n'aime pas le double dGap=10*Point même après avoir mis un ; après.

Et il y a une tonne d'autres erreurs de compilation. Je suppose que je suis juste assez bête pour ne pas savoir quoi faire maintenant.

Il suffit de télécharger mon code, de le copier dans la structure du répertoire de votre MT4 dans Indicateurs. Arrêtez et redémarrez MT4 puis ajoutez l'Indicateur à un graphique . . si vous utilisez les tampons de l'Indicateur vous n'utilisez pas d'objets.
 

où puis-je télécharger votre code ?

Vous voyez comme je suis dense ?

 
mrchuckw:

où puis-je télécharger votre code ?

Vous voyez comme je suis dense ?

C'est joint à mon message, quelques messages plus haut... ashi1.mq4.
 

c'est presque parfait. J'ai joué avec, et je me suis amusé comme un fou.

Je pense que je l'ai peut-être assassiné, mais maintenant il met les carrés dans une fenêtre séparée.

Cette partie fonctionne parfaitement. Maintenant... Je n'arrive pas à trouver comment avoir tous les carrés dans une ligne parfaite.

Parce que, je veux mettre une autre ligne en dessous de celle-là. Je pense que je peux trouver comment faire ça... au moins je vais m'amuser à essayer.

la nouvelle ligne sera un cadre temporel plus large. Et la 3ème ligne sera encore une autre plus grande image temporelle.

Voici comment se présente votre ea après que j'ai joué avec. Pouvez-vous me dire comment mettre le carré dans une ligne droite. ?

Merci

ps... J'ai joué avec ça pendant un moment, et je n'arrive pas à trouver comment obtenir une deuxième et une troisième ligne, et les rendre droites.

Si vous pouviez m'aider, je vous en serais reconnaissant. Le deuxième fichier est ma tentative pour la deuxième ligne.

Dossiers :
ashi1_1.mq4  3 kb
ashi1-a.mq4  3 kb
Raison: