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

 
artmedia70:

Et vous devez être très précis sur ce que vous voulez redessiner.

Vous devrez peut-être recalculer complètement tous les tampons indicateurs.
Nous devons expérimenter le comportement de l'indicateur et sa réponse aux changements externes de ses variables internes.

Honnêtement, je n'ai jamais essayé (non... bon, je l'ai certainement fait, et plusieurs fois j'ai fait des indicateurs qui répondent aux événements et dessinent ce qui est nécessaire. Mais à l'origine, j'ai utilisé une approche non standard pour dessiner les tampons). Créez un indicateur de test, qui dessine quelque chose (même un couple de points à l'écran sur les barres les plus proches) et essayez de changer sa valeur de tampon en utilisant des événements. S'il change, c'est une façon de travailler avec votre indicateur, sinon, c'est une autre approche à envisager. Peut-être faut-il déplacer tous les calculs vers un timer, ou directement dans OnChartEvent() faire un cycle de recalcul après la détection de l'événement souhaité...

En bref - des expériences sont nécessaires...

Merci !

 
artmedia70:

Pour une raison quelconque, l'apparition d'un TakeProfit n'interrompt pas la sommation. Compte tous les moins dans l'historique.
 
Neron_plus34:
Pour une raison quelconque, l'apparition d'un TakeProfit n'interrompt pas la sommation. Il compte tous les points négatifs de l'histoire.
Dépliez la boucle.
 
artmedia70:
Dépliez la boucle.
Merci, cela fonctionne.
 

Bonjour... J'avais l'habitude de négocier sur ForexClub avec MT4 que j'avais téléchargé à partir de là... J'ai décidé d'ouvrir un autre compte sur InstaForex... mais lorsque je me connecte à un autre compte, l'écran des cotations boursières indique "en attente de mise à jour" .... Je dois choisir"ouvrir le graphique" à nouveau pour ouvrir l'écran requis... J'ai essayé de télécharger MT4 à partir du fabricant, mais ensuite je ne peux pas me connecter aux comptes de négociation....pis aucune connexion... qu'est-ce que je fais mal ? S'il vous plaît aidez ....

 
Forexman77:

Merci, je l'ai fait !

Comment faire pour que l'indicateur se redessine après avoir fait glisser la ligne ?

// Определение LastBar по расположению StopLine на графике
bool fNewStopLine(){
   bool New;
   int StopBar, Error;
   double Shift;
   datetime StopLine;
   if( ObjectFind("StopLine")==0 ){                // Есть стоп-линия
      StopLine=ObjectGet("StopLine",OBJPROP_TIME1);// Время стоп-линии
      StopBar=iBarShift(NULL,0,StopLine);          // Бар стоп-линии
      LastBar=StopBar+1;                           // Бар окончания построения
      if( StopBar<=БарОкончания ){                 //    правее или на последнем баре
         LastBar=БарОкончания;                     // Перенести на нулевой бар
         StopBar=LastBar-1;
         StopLine=Time[StopBar];
         if( !ObjectMove("StopLine",0,StopLine,0) ){
            if( !РежимОтладки ) PlaySound("alert.wav");
            Print("***   StopLine - объект не перемещен, ошибка "+GetLastError());
      }  }
      if( StopLine!=OldStopLine ){                 // Новая стоп-линия
         ReInit();                                 // Повторная инициализация
         ClearScreen();                            // Очистить экран
         Shift=0.01*(WindowPriceMax()-WindowPriceMin())*СдвигИндикатораТиков;
         Error=fArrow("TickIndicator","",0,StopBar // Сформировать индикатор тика
                     ,WindowPriceMin()+Shift,0,0,0,0
                     ,ЗнакИндикатораТиков,ЦветИндикатораТиков,РазмерИндикатораТиков);
         OldStopLine=StopLine;                     // Стоп-линия обработана
         New=true;                                 // Выполнить построение заново
      }
      else{                                        // Нет новой стоп-линии
         New=false;                                // Построение заново не выполнять
   }  }
   else{                                           // Нет стоп-линии
      New=false;                                   // Построение заново не выполнять
      Error=fObjectDelete("TickIndicator");        // Удалить индикатор тика
   }
   return(New);
}
 
tara:

Merci !
 

Je suis confronté à un problème. Je suis en train de développer mon propre indicateur sur la base d'un indicateur, mais il y a certaines chaînes que je ne comprends pas et ces chaînes utilisent la bibliothèque dll. Si vous pouvez me dire avec vos propres mots à quoi servent ces lignes. Comment puis-je les modifier sans utiliser la bibliothèque dll ? J'ai souligné ces lignes ci-dessous :

#import "user32.dll"
        int  RegisterWindowMessageA (string lpString); 
        int  PostMessageA           (int hWnd,int Msg,int wParam,int lParam);
                
#define  WM_COMMAND                     0x0111
#import

            int MT4InternalMsg;
            int hwnd;
            string sn; 
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create timer
   EventSetTimer(60);

  if(MT4InternalMsg == 0)  
         {
         MT4InternalMsg = RegisterWindowMessageA("MetaTrader4_Internal_Message"); 
    }       
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- destroy timer
   EventKillTimer();
      
  }

//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
//---
                  hwnd = WindowHandle(Symbol(), 1);
        if(PostMessageA(hwnd, 0x0111, 0x822c, 0) == false)
          {
          hwnd = 0;
          return;
          }
          PostMessageA(hwnd, MT4InternalMsg, 2, 1);    
  }
//+------------------------------------------------------------------+
 
1. Comment ouvrir deux ou plusieurs commandes en même temps ?
2. Comment puis-je savoir que l'ordre a été clôturé sur le TP ou le SL et appeler quelque chose sur cet événement ?
3. Quels sont les problèmes qui peuvent survenir lors d'une négociation réelle avec le conseiller expert ? Mon TP, SL, pending, etc. ne peuvent-ils pas être exécutés sur un serveur ? Que feriez-vous dans un tel cas ? Où puis-je stocker mes journaux de transactions de manière fiable (dans des variables globales, dans le terminal, dans des fichiers, etc.)
 
smart_man:
1. Comment ouvrir deux ou plusieurs commandes en même temps ?
2. Comment savoir si un ordre est fermé par le TP ou le SL, et appeler quelque chose sur cet événement ?
3. Quels sont les problèmes qui peuvent survenir lors d'une négociation réelle avec le conseiller expert ? Mon TP, SL, pending, etc. ne peuvent-ils pas être exécutés sur un serveur ? Que feriez-vous dans un tel cas ? Où puis-je stocker mes journaux de transactions de manière fiable (dans des variables globales, dans le terminal, dans des fichiers, etc.)

Vous trouverez ici une partie des réponses : https://www.mql5.com/ru/forum/131859

Raison: