[ARCHIV!] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen - 4. - Seite 249

 
FAQ:


Das war's:

Fehler bei inkompatiblen Typen

 
Leo59:

Lieber granit77! Wenn es Ihnen nichts ausmacht, nehmen Sie bitte Korrekturen direkt im Code vor, falls etwas falsch ist. Sie wird klar und verständlich sein.

Beispiel. Von den acht verfügbaren Indikatorpuffern werden sieben für die Anzeige von Linien im Indikatorfenster verwendet, der achte wird für Berechnungen verwendet, ohne im Indikatorfenster angezeigt zu werden.
Wenn nicht genügend Indikatorpuffer vorhanden sind, können die Berechnungen in herkömmlichen Arrays durchgeführt werden.

#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[];//der achte Puffer wird für zusätzliche Berechnungen verwendet //double ind_buffer9[];   //Es gibt keinen neunten Puffer im Indikator; dieses Array hat keinen Platz int init() { IndicatorBuffers(8); SetIndexBuffer(0,ind_buffer1); SetIndexBuffer(1,ind_buffer2);
SetIndexPuffer(2,ind_puffer3); SetIndexPuffer(3,ind_puffer4); SetIndexPuffer(4,ind_puffer5); SetIndexPuffer(5,ind_puffer6); SetIndexPuffer(6,ind_puffer7); SetIndexPuffer(7,ind_puffer8); //ind_puffer1...ind_buffer7 zeichnet sieben Linien //sie werden im Indikatorfenster gemäß #property indicator_buffers 7 angezeigt //ind_buffer8 wird nicht im Fenster angezeigt, steht aber für die Teilnahme an Berechnungen zur Verfügung return(0); }
 
granit77:
Beispiel. Sieben von acht Indikatorpuffern werden für die Anzeige von Linien im Indikatorfenster verwendet, der achte Puffer wird für Berechnungen verwendet, wird aber nicht im Indikatorfenster angezeigt.
Wenn nicht genügend Indikatorpuffer vorhanden sind, können die Berechnungen in normalen Arrays durchgeführt werden.



Ich danke Ihnen! Das ist verständlich.

Eine andere kann ich nicht verstehen. Ich weiß nicht, warum das Array, das an den Berechnungen teilnimmt, aber nicht im Indikatorfenster angezeigt wird, als SetIndexBuffer identifiziert werden sollte. Und wenn wir 10 Arrays für Berechnungen und 8 für die Anzeige (18 Arrays insgesamt) benötigen, wie deklarieren und identifizieren diese 10 korrekt? Ich möchte, dass sie die gleichen Eigenschaften haben, wie die Arrays, die mit den Indikatorpuffern verbunden sind, außer dass sie nicht gezeichnet werden.

 
Zhunko:

Sie müssen es nicht umbenennen, wenn es nicht funktioniert. Das ist merkwürdig. Sie können es über das Kontextmenü öffnen, indem Sie WinRar auswählen. Oder öffnen Sie WinRar und suchen Sie dann im Menü "Datei" unter "Archiv öffnen" das Archiv und öffnen Sie es.

Ich sagte oben, dass die Erweiterung nur für die automatische Zuordnung der Datei benötigt wird.

Haben Sie die Sichtbarkeit von Erweiterungen aktiviert? Screenshot oder Video hier, falls es nicht funktioniert.


Vielen Dank für die ausführliche Anleitung. Ich habe dieses WinRar heruntergeladen, anscheinend war es nicht da und das Archiv wurde geöffnet!
 
Ich kann mir nicht vorstellen, dass die Funktion funktioniert. Zwar funktionieren die Ticks jetzt nicht mehr, aber zumindest der Start sollte beim Verbinden des Diagramms funktionieren, oder? Wenigstens kompiliert es!!! Ich probiere das aus.
//+------------------------------------------------------------------+
//|                                                  таймфрейммм.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 //Gewinn
UB //Verlust.
Pk //Variable, die Kaufwerte annimmt
Pr //Variable, die Werte des Verkaufs annimmt
ADR //Variable, die Werte des Skripts übernimmt

//Gewinnbedingung
if(PR==Pk) //Wenn Gewinn beim Kauf
ADR=1; //Skript 1 einstellen
else //Wenn Gewinn beim Verkauf
ADR=2; //Skript 2 einstellen

//Verkaufsbedingungen
if(UB==Pk) //Wenn ein Verlust beim Kauf
ADR=2; //Skript 2 einstellen
else //Wenn ein Verlust beim Verkauf

ADR=1; //Skript 1 einstellen

Wie kann ich dies für den Handel verbessern? Ich brauche einen EA, der überwacht, welcher Auftrag geschlossen wurde (Kauf oder Verkauf) und wie er mit Gewinn oder Verlust geschlossen wurde. Nach einer solchen Analyse führt der EA 1 oder 2 Skripte aus.

 
Wie lauten die Namen der Take-Profit- und Stop-Loss-Variablen? Und wie kann ich die Adresse des auszuführenden Skripts angeben?
 
Dimka-novitsek:
Ich kann mir nicht vorstellen, dass diese Funktion funktioniert, wissen Sie. Zwar treten die Ticks jetzt nicht mehr auf, aber zumindest der Start sollte beim Verbinden mit dem Chart funktionieren, oder? Wenigstens kompiliert es!!! Versuchen Sie dies

Es gibt keine Zecken. Der Start wird nicht ausgelöst. Kann als Skript kompiliert werden. Sie müssen jedoch den Deskriptor des angrenzenden Diagramms angeben, das aktualisiert wird.

Oder so:

#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);
     }
   }
 }

Aber für Sie wird es wahrscheinlich nicht funktionieren. Es scheint, dass die Funktion ServiceRefreshChart () nicht für jeden verfügbar ist.

Sie können es mit dem Indikator versuchen. Es wird 2 Mal aktualisiert, wenn es dem Diagramm beitritt und die TF ändert.

 
Dankeschön!!!!!!
 
Kompiliert, wird aber nicht ausgeführt.