[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 651

 
xtonic:

Abendrätsel von metha:

Ich habe Angebote aus dem Angebotsarchiv importiert, in 1 Minute heißt es: Datenbank: 0 / 3665972, Fenster ist leer - was kann das bedeuten?

Wenn ich ein eigenständiges EURUSD, M1-Diagramm öffne, werden große Buchstaben angezeigt: "Pending Update" - was kann das bedeuten?

Ich führe einen Test durch - TestGenerator: keine Verlaufsdaten 'EURUSD1'.

Laden Sie das Terminal neu. Wenn alles richtig gemacht wurde, sollte es erscheinen.

 

wo man nachlesen kann, wie ein Indikator mit den folgenden Parametern gezeichnet wird

SetIndexStyle(0,DRAW_HISTOGRAM, 0, 1, color1)

SetIndexStyle(1,DRAW_HISTOGRAM, 0, 1, color2)

Ich verstehe nicht, warum es manchmal zeichnet manchmal nicht - ich verstehe, wenn Sie eine normale Linie DRAW_LINE zeichnen - der Indikator Pufferwert wird die y-Achse gesetzt, aber die Zahl des Elements entspricht der Anzahl der Balken auf dem Diagramm

warum das horizontale Segment auf dem Balken erscheint, wenn zwei Indikatorpuffer auf demselben Balken liegen, aber wenn einer der Indikatorpuffer EMPTY_VALUE ist - nichts, und ich verstehe die Färbelogik nicht

 
ToLik_SRGV:

Laden Sie das Terminal neu. Wenn Sie alles richtig gemacht haben, sollte es erscheinen.


Ich habe das alles schon gemacht, sogar das System neu gestartet, das ist der Punkt.

 
xtonic:


Ich habe das alles schon gemacht, sogar das System neu gestartet, das ist der Punkt.


Haben Sie Zitate von woherimportiert?

Wenn Sie genau erklären könnten, was Sie tun, Schritt für Schritt, dann wäre es wahrscheinlicher, dass Sie hier Hilfe bekommen.

 

Gute Leute, habt Erbarmen - ich kann nicht: kaufen/verkaufen nach einer weiteren Spitze des geglätteten CCI.

Ich habe versucht, den zweiten Puffer zu deklarieren (es macht mehr Sinn für mich), keine Fehler, log - still, drucken, offenbar, wie eine Ziege - ich verstehe nichts.

 // Торговые критерии
   double c1b[];
   ArrayResize(c1b,PeriodB);
   double c1b_1[];
   ArrayResize(c1b_1,AvgB);
   for(i=1;i<=PeriodB;i++)
   {
   c1b[i]=iCCI(NULL,0,PeriodB,PRICE_TYPICAL,i);
   {
   c1b_1[i]=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,i);
   }
   }
   
   double c1s[];
   ArrayResize(c1s,PeriodS);
   double c1s_1[];
   ArrayResize(c1s_1,AvgS);
   for(i=1;i<=PeriodS;i++)
   {
   c1s[i]=iCCI(NULL,0,PeriodS,PRICE_TYPICAL,i);
   {
   c1s_1[i]=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,i);
   }
   }

if (NormalizeDouble(c1b_1[i],4)<NormalizeDouble(c1b_1[i+2],4)&&NormalizeDouble(c1b_1[i+2],4)>NormalizeDouble(c1b_1[i+3],4))
     {                                          // 
      Opn_B=true;                               // Критерий откр. Buy
      Cls_S=true;                               // Критерий закр. Sell
     }
if (NormalizeDouble(c1s_1[i],4)>NormalizeDouble(c1s_1[i+2],4)&&NormalizeDouble(c1s_1[i+2],4)<NormalizeDouble(c1s_1[i+3],4))
     {                                          // 
      Opn_S=true;                               // Критерий откр. Sell
      Cls_B=true;                               // Критерий закр. Buy
     }

Der Anhang enthält den gesamten Expert Advisor. Nach dem Testen in der Visualisierung wird der CCI sowohl in dieser als auch in der alten Version gezeichnet (er ist in der angehängten Datei dargestellt), aber der geglättete wird nicht gezeichnet und deshalb werden die Trades nicht geöffnet.

Alte Variante:

// Торговые критерии
   double c1b[];
   for(i=1;i<=PeriodB;i++)
   {
   c1b[i]=iCCI(NULL,0,PeriodB,PRICE_TYPICAL,i);
   }
   double c1b_1=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,1);
   double c1b_2=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,2);
   double c1b_3=iMAOnArray(c1b,0,AvgB,0,MODE_SMA,3);
   
   double c1s[];
   for(i=1;i<=PeriodS;i++)
   {
   c1s[i]=iCCI(NULL,0,PeriodS,PRICE_TYPICAL,i);
   }
   double c1s_1=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,1);
   double c1s_2=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,2);
   double c1s_3=iMAOnArray(c1s,0,AvgS,0,MODE_SMA,3);

if (NormalizeDouble(c1b_1,4)<NormalizeDouble(c1b_2,4)&&NormalizeDouble(c1b_2,4)>NormalizeDouble(c1b_3,4))
     {                                          // 
      Opn_B=true;                               // Критерий откр. Buy
      Cls_S=true;                               // Критерий закр. Sell
     }
if (NormalizeDouble(c1s_1,4)>NormalizeDouble(c1s_2,4)&&NormalizeDouble(c1s_2,4)<NormalizeDouble(c1s_3,4))
     {                                          // 
      Opn_S=true;                               // Критерий откр. Sell
      Cls_B=true;                               // Критерий закр. Buy
     }

Ich verstehe, dass niemand Zeit hat, die anderen zu bereinigen, aber ich bitte Sie, mir wenigstens zu sagen, wo genau ich den Druck einfügen soll und wo ich nach Rückmeldungen im Journal oder in den Protokollen suchen soll und worauf Sie achten müssen.

Dateien:
21.mq4  15 kb
 

Guten Tag!

Ich habe eine Frage zur teilweisen Schließung, denn jede Maklerfirma hat ihre eigenen Regeln. Ich verstehe nicht, wie man die Auftragsabrechnung korrekt durchführt:

Das Problem: Wir müssen einen Tick einer neu aufgegebenen Bestellung in diesem bestimmten TS finden, ohne einen Magier einzusetzen.

1) Ich habe bemerkt, dass ein teilweise geschlossener Auftrag einen Kommentar hat, den Sie lesen können sollten // Ich bin nicht sicher, ob alle Maklerfirmen Kommentare schreiben

2) Suche nach Datum der Auftragseröffnung // nicht sicher, ob dies für alle Maklerunternehmen funktioniert

3) Suchen Sie nach einem neuen Tick direkt nach einer teilweisen Schließung und überprüfen Sie das Volumen usw., um zu sehen, ob es die richtige Reihenfolge ist.

4) etwas anderes

 
wenay:

wie man die Zählung der Aufträge besser durchführen kann:

Lesen Sie dort die Hilfe:
comment - Kommentartext bestellen. Der letzte Teil des Kommentars kann vom Handelsserver geändert werden.

magic - Die magische Zahl der Bestellung. Kann als benutzerdefinierter Bezeichner verwendet werden.

Magie ist ein guter Weg, um Ihnen zu helfen

Um nach einem Auftrag zu suchen, gehen Sie wie folgt vor

if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) {

.......

 
Craft:

Bitte geben Sie an, wo genau der Druck eingefügt werden soll und wo im Logbuch oder in den Logdateien nach Rückmeldungen zu suchen ist und was dabei zu beachten ist.

Drucken Sie aus, wo Sie die Situation überprüfen möchten (z. B. wenn Sie eine Bestellung aufgeben - drucken Sie die Tatsache der Auftragserteilung oder einen Fehler bei der Auftragserteilung in das Journal).

Wenn Sie nicht sicher sind, dass Ihre Funktion aufgerufen werden kann, d. h. die Bedingung für den Funktionsaufruf niemals erfüllt wird, fügen Sie den Ausdruck zur Eingabe der Funktion hinzu.

Im Terminal auf der Registerkarte "Experten" gelesener Druck

 
IgorM:

wo man nachlesen kann, wie ein Indikator mit den folgenden Parametern gezeichnet wird

SetIndexStyle(0,DRAW_HISTOGRAM, 0, 1, color1)

SetIndexStyle(1,DRAW_HISTOGRAM, 0, 1, color2)

Ich verstehe nicht, warum es manchmal zeichnet manchmal nicht - ich verstehe, wenn Sie eine normale Linie DRAW_LINE zeichnen - der Indikator Pufferwert wird die y-Achse gesetzt, aber die Zahl des Elements entspricht der Anzahl der Balken auf dem Diagramm

warum, wenn zwei Indikatorpuffer auf einem Balken landen, ein horizontales Segment auf dem Balken erscheint, aber wenn einer der Indikatorpuffer gleich EMPTY_VALUE ist - nichts, und ich verstehe die Färbelogik nicht

DerStil von DRAW_HISTOGRAM unterscheidet sich nicht grundlegend von anderen Stilen des Zeichnens von Linien, die X-Achse wird durch Taktnummern dargestellt, die Y-Achse - durch die Werte des Indikator-Arrays, aber wie man sagt, gibt es eine Nuance.
Nehmen wir als Beispiel einen einfachen Indikator:

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Red
#property indicator_width1 2
double SIMPLE[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init(){
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0, SIMPLE);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start(){
   for(int shift = Bars-IndicatorCounted()-1; shift >= 0; shift--){
      SIMPLE[shift] = 1;
   }
}
//+------------------------------------------------------------------+

Ein Indikator-Array, ein separates Fenster, allen Elementen wird der Wert 1 zugewiesen. Werfen Sie es auf den Chart, und was sehen wir (Abbildung 1 links):

Das "Datenfenster" zeigt die Messwerte des Indikators an, aber es ist nichts in seinem Fenster zu sehen. Dies ist die Nuance, MT4 nur nicht wissen, 1 ist wie hoch? Wie hoch sollte die Latte gelegt werden? Er hat nichts, woraus er schöpfen kann, d.h. es gibt einfach keinen Teilungspreis für die Barren. Wie Sie bemerkt haben, gibt es keinen separaten Parameter, der die Höhe der Balken festlegt, ihre Höhe wird automatisch im Verhältnis zu anderen Elementen festgelegt. Lassen Sie uns MT4 helfen und den Teilungspreis festlegen, wir können es programmatisch tun:

#property indicator_minimum 0
#property indicator_maximum 2

Sie können einfach Minima (z. B. 0) und Maxima (z. B. 2) in den Indikatoreinstellungen festlegen.
Und schon passt alles (Abb. 2, rechts), jetzt weiß das Terminal, wie hoch der Balken gezogen werden soll, 1 liegt in der Mitte zwischen 0 und 2 :))) In diesem Beispiel hat das Indikator-Array einen Wert (insbesondere für die Anzeige von "Nuancen") und wir sollten dem Terminal anzeigen, wie viel oder wenig es ist. Wenn wir die Array-Daten durch 1 ersetzen, z. B. Close[shift], setzt das Terminal keine harten Einschränkungen und zeichnet ein Bild "ala MAKD".

Ein etwas anderes Bild ergibt sich, wenn Sie das Histogramm nicht in einem separaten Fenster, sondern allgemein zeichnen. Belassen wir den Wert von Close[shift] für das erste Indikator-Array, ändern wir nur den Parameter:

#property indicator_chart_window

Es ergibt sich wieder das gleiche Bild (Abb. 3, links). Die Werte sind vorhanden, werden aber nicht angezeigt.

Das Terminal benötigt eine Grundlage für die automatische Berechnung der Balkenhöhe, und da die Mindest- und Höchstwerte nicht im allgemeinen Fenster festgelegt werden können, wird das zweite Indikatorfeld angezeigt. Wir fügen die zweite Zeile hinzu und setzen sie auf 0.

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Red
#property indicator_width1 2
#property indicator_color2 Red
#property indicator_width2 2
double SIMPLE[];
double SIMPLE2[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init(){
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0, SIMPLE);
   SetIndexStyle(1,DRAW_HISTOGRAM);
   SetIndexBuffer(1, SIMPLE2);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start(){
   for(int shift = Bars-IndicatorCounted()-1; shift >= 0; shift--){
      SIMPLE[shift] = Close[shift];
      SIMPLE2[shift] = 0;
   }
}
//+------------------------------------------------------------------+

Die Indikatorfelder werden nun relativ zueinander angezeigt. Und alles wird so sein, wie es sein soll (Abb. 4, rechts). Die Spalten werden von SIMPLE[shift] bis SIMPLE2[shift] gezeichnet.

Und schließlich gibt es den Code des Indikators, der die Kerzen ausfüllt, blau, wenn es aufwärts geht und rosa, wenn es abwärts geht. Wieder zwei Felder für jede Farbe (die Zeichnung ist von Anfang bis Ende (von Open bis Close)).

//+------------------------------------------------------------------+
//|                                                       SIMPLE.mq4 |
//|                        Copyright © 2010,Анатолий Сергеев  |
//|                                            mql.sergeev@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, Анатолий Сергеев"
#property link      "mql.sergeev@yandex.ru"

#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Blue
#property indicator_width1 2
#property indicator_color2 Blue
#property indicator_width2 2
#property indicator_color3 Pink
#property indicator_width3 2
#property indicator_color4 Pink
#property indicator_width4 2
double Blue_home[];
double Blue_end[];
double Pink_home[];
double Pink_end[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init(){
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0, Blue_home);
   SetIndexStyle(1,DRAW_HISTOGRAM);
   SetIndexBuffer(1, Blue_end);
   SetIndexStyle(2,DRAW_HISTOGRAM);
   SetIndexBuffer(2, Pink_home);
   SetIndexStyle(3,DRAW_HISTOGRAM);
   SetIndexBuffer(3, Pink_end);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start(){
   for(int shift = Bars-IndicatorCounted()-1; shift >= 0; shift--){
      if(Close[shift] > Open[shift]){
         Blue_home[shift] = Open[shift];
         Blue_end[shift] = Close[shift];
      }else{
         Pink_home[shift] = Open[shift];
         Pink_end[shift] = Close[shift];
      }
   }
}
//+------------------------------------------------------------------+

 
IgorM:
lesen Sie dort die Hilfe:
comment - Text des Bestellkommentars. Der letzte Teil des Kommentars kann vom Handelsserver geändert werden.

magic - Die magische Zahl der Bestellung. Kann als benutzerdefinierter Bezeichner verwendet werden.

Nutze Magie, um dir zu helfen

Gehen Sie wie folgt vor, um einen Auftrag zu prüfen:

if (OrderType() == OP_BUY && OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) {

.......



Aufgabe: Du musst den Tick eines neu erschienenen Auftrages für diesen bestimmten TS finden, ohne eine Magie zu benutzen .