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

 
FAQ:


Voilà :

erreur de types incompatibles

 
Leo59:

Cher granit77! Si cela ne vous dérange pas, veuillez apporter des corrections directement dans le code, si quelque chose ne va pas. Il sera clair et compréhensible.

Exemple. Sur les huit tampons d'indicateurs disponibles, sept sont utilisés pour afficher les lignes dans la fenêtre de l'indicateur, le huitième est utilisé pour les calculs, sans affichage dans la fenêtre de l'indicateur.
Si le nombre de tampons indicateurs est insuffisant, les calculs peuvent être effectués dans des tableaux classiques.

#property indicator_buffers 7 double ind_buffer1[] ; double ind_buffer2[] ; double ind_buffer3[] ; double ind_buffer4[] ; double ind_buffer5[] ; double ind_buffer6[] ; double ind_buffer7[] ; double ind_buffer8[];//le huitième tampon est utilisé pour des calculs supplémentaires //double ind_buffer9[] ;   //il n'y a pas de neuvième tampon dans l'indicateur ; ce tableau n'a nulle part où aller int init() { IndicatorBuffers(8) ; SetIndexBuffer(0,ind_buffer1) ; SetIndexBuffer(1,ind_buffer2) ;
SetIndexBuffer(2,ind_buffer3) ; SetIndexBuffer(3,ind_buffer4) ; SetIndexBuffer(4,ind_buffer5) ; SetIndexBuffer(5,ind_buffer6) ; SetIndexBuffer(6,ind_buffer7) ; SetIndexBuffer(7,ind_buffer8) ; //ind_buffer1...ind_buffer7 dessine sept lignes //elles sont affichées dans la fenêtre de l'indicateur selon #property indicator_buffers 7 //ind_buffer8 n'est pas affiché dans la fenêtre, mais est disponible pour participer aux calculs return(0) ; }
 
granit77:
Exemple. Sept des huit tampons de l'indicateur sont utilisés pour afficher les lignes dans la fenêtre de l'indicateur, le huitième tampon est utilisé pour les calculs, mais il ne sera pas affiché dans la fenêtre de l'indicateur.
S'il n'y a pas assez de tampons indicateurs, les calculs peuvent être effectués dans des tableaux normaux.



Merci ! C'est compréhensible.

Je n'en comprends pas un autre. Je ne sais pas pourquoi le tableau qui participe aux calculs, mais qui n'est pas affiché dans la fenêtre de l'indicateur, devrait être identifié comme le SetIndexBuffer. Et si nous avons besoin de 10 tableaux pour les calculs et 8 pour l'affichage (18 tableaux au total), comment déclarer et identifier correctement ces 10 tableaux ? Je veux qu'ils aient les mêmes propriétés que les tableaux attachés aux tampons d'indicateurs, sauf qu'ils ne sont pas dessinés.

 
Zhunko:

Vous n'avez pas besoin de le renommer s'il ne fonctionne pas. Ce qui est étrange. Vous pouvez l'ouvrir à partir du menu contextuel en sélectionnant WinRar. Ou ouvrez WinRar, puis à partir de l'élément de menu "Fichier" "Ouvrir une archive", trouvez l'archive et ouvrez-la.

J'ai dit plus haut que l'extension n'est nécessaire que pour l'association automatique du fichier.

Avez-vous activé la visibilité des extensions ? Capture d'écran ou vidéo ici si cela ne fonctionne pas.


Merci pour les instructions détaillées. J'ai téléchargé ce WinRar, apparemment il n'était pas là et l'archive s'est ouverte !
 
Tu sais, je ne vois pas la fonction fonctionner. C'est vrai que les ticks ne fonctionnent pas maintenant, mais au moins le début devrait fonctionner quand on rejoint le graphique, non ? Au moins, ça compile ! !! J'essaie ça.
//+------------------------------------------------------------------+
//|                                                  таймфрейммм.mq4 |
//|                        Copyright 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
#include <ServicesMT4.mqh>
void start()
  {
   int hwndChart = WindowHandle(Symbol(),Period());
   while (!IsStopped())
    {
     for (int i = 0; i < 9; i++)
      {
       ServiceSetTimeframeByNumber(hwndChart, i);
       Sleep(4000);
      }
    }
  }
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
 
PR //Profit
UB //Loss.
Pk //Variable prenant des valeurs d'achat
Pr //Variable prenant les valeurs de la vente
ADR //Variable prenant les valeurs du script

//Profit condition
if(PR==Pk) //Si bénéfice sur achat
ADR=1 ; //Set script 1
else //Si bénéfice sur la vente
ADR=2 ; //Set script 2

//Condition de vente
if(UB==Pk) //Si une perte est subie à l'achat
ADR=2 ; //set script 2
else //Si une perte sur la vente

ADR=1 ; //Set script 1

Comment puis-je l'améliorer pour le commerce ? J'ai besoin d'un EA pour surveiller quel ordre s'est clôturé (achat ou vente), et comment il s'est clôturé en profit ou en perte. Après cette analyse, l'EA exécutera 1 ou 2 scripts.

 
Quels sont les noms des variables take profit et stop loss ? Et comment puis-je spécifier l'adresse du script à exécuter ?
 
Dimka-novitsek:
Je ne vois pas cette fonction fonctionner, vous savez. Certes, les ticks ne se produisent pas maintenant, mais au moins le démarrage devrait fonctionner lors de la connexion au graphique, non ? Au moins, ça compile ! !! J'essaie ceci

Il n'y a pas de tiques. Le départ n'est pas déclenché. Peut être compilé comme un script. Mais vous devrez spécifier le descripteur du graphique adjacent, qui sera mis à jour.

Ou comme ça :

#include <ServicesMT4.mqh>
int hwndChart = NULL;
void init()
 {
  hwndChart = WindowHandle(Symbol(),Period()); // Получаем системный дескриптор графика.
  ServiceRefreshChart(hwndChart, 1000); // Запускаем обновление графика каждую 1 секунду.
 }

void start()
 {
  ServiceStopRefreshChart(hwndChart); // Останавливаем обновление. Больше не требуется.
  while (!IsStopped())
   {
    for (int i = 0; i < 9; i++)
     {
      ServiceSetTimeframeByNumber(hwndChart, i);
      Sleep(4000);
     }
   }
 }

Mais ça ne marchera probablement pas pour vous. Il semble que la fonction ServiceRefreshChart () ne soit pas disponible pour tout le monde.

Vous pouvez l'essayer dans l'indicateur. Il se rafraîchit 2 fois lorsqu'il rejoint le graphique et change de TF.

 
Merci !!!!!!
 
Compile, mais n'exécute pas.
Raison: