Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 1059

 
artmedia70:

Und Sie müssen sehr genau angeben, was Sie neu zeichnen wollen.

Möglicherweise müssen Sie alle Indikatorpuffer neu berechnen.
Wir müssen mit dem Verhalten des Indikators und seiner Reaktion auf externe Veränderungen seiner internen Variablen experimentieren.

Ehrlich gesagt habe ich das noch nie ausprobiert (nein... na ja, ich habe es auf jeden Fall gemacht, und ich habe oft Indikatoren erstellt, die auf Ereignisse reagieren und zeichnen, was erforderlich ist. Aber ich habe ursprünglich einen nicht standardisierten Ansatz für das Zeichnen von Puffern verwendet). Erstellen Sie einen Testindikator, der etwas zeichnet (mindestens zwei oder drei Punkte auf dem Bildschirm auf den nächsten Balken) und versuchen Sie, seinen Pufferwert mithilfe von Ereignissen zu ändern. Wenn er sich ändert, ist dies eine Möglichkeit, mit Ihrem Indikator zu arbeiten, wenn nicht, ist dies ein anderer Ansatz, der in Betracht gezogen werden sollte. Vielleicht müssen Sie alle Berechnungen in einen Timer verschieben, oder direkt in OnChartEvent() einen Zyklus der Neuberechnung durchführen, nachdem das gewünschte Ereignis erkannt wurde...

Kurzum - es sind Experimente erforderlich...

Ich danke Ihnen!

 
artmedia70:

Aus irgendeinem Grund unterbricht das Auftreten eines TakeProfits die Summierung nicht. Zählt alle Minuspunkte in der Historie.
 
Neron_plus34:
Aus irgendeinem Grund unterbricht das Auftreten eines TakeProfits die Summierung nicht. Es zählt alle Minuspunkte in der Geschichte.
Entfalten Sie die Schleife.
 
artmedia70:
Entfalten Sie die Schleife.
Danke, es funktioniert.
 

Hallo... Ich habe bei ForexClub mit MT4 gehandelt, den ich von dort heruntergeladen habe... Ich habe mich entschieden, ein anderes Konto bei InstaForex zu eröffnen... aber wenn ich mich mit einem anderen Konto verbinde, sagt der Bildschirm mit den Aktienkursen "waiting for update" .... Ich muss wieder"open chart" wählen, um den gewünschten Bildschirm zu öffnen... Ich habe versucht, MT4 vom Hersteller herunterzuladen, aber dann kann ich mich nicht mit den Handelskonten verbinden....pis no connection... was mache ich falsch? Bitte helfen Sie ....

 
Forexman77:

Danke, ich habe es geschafft!

Wie kann ich erreichen, dass der Indikator nach dem Ziehen der Linie neu gezeichnet wird?

// Определение 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:

Ich danke Ihnen!
 

Ich stehe vor einem Problem. Ich entwickle meinen eigenen Indikator auf der Grundlage eines Indikators, aber es gibt einige Strings, die ich nicht verstehe, und diese Strings verwenden eine DLL-Bibliothek. Wenn Sie mir in Ihren eigenen Worten sagen können, wofür diese Zeilen gedacht sind. Wie kann ich sie ändern, ohne die dll-Bibliothek zu verwenden? Ich habe diese Zeilen unten hervorgehoben:

#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. Wie eröffne ich zwei oder mehr Aufträge gleichzeitig?
2. Wie erkenne ich, dass die Order am TP oder SL geschlossen wurde und rufe bei diesem Ereignis etwas auf?
3. Welche Probleme können beim realen Handel mit dem Expert Advisor auftreten? Können meine TP, SL, Pending, etc. nicht auf einem Server ausgeführt werden? Was würden Sie in einem solchen Fall tun? Wo kann ich meine Handelsprotokolle zuverlässig speichern (in globalen Variablen, im Terminal, in Dateien usw.)?
 
smart_man:
1. Wie eröffne ich zwei oder mehr Aufträge gleichzeitig?
2. Wie erkenne ich, ob eine Order durch TP oder SL geschlossen ist, und wie kann ich dieses Ereignis auslösen?
3. Welche Probleme können beim realen Handel mit dem Expert Advisor auftreten? Können meine TP, SL, Pending, etc. nicht auf einem Server ausgeführt werden? Was würden Sie in einem solchen Fall tun? Wo kann ich Handelsprotokolle zuverlässig speichern (in globalen Variablen, im Terminal, in Dateien usw.)?

Hier können Sie einen Teil der Antworten finden: https://www.mql5.com/ru/forum/131859