[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 130

 

aber es gibt einen weiteren Code im EA:

int CloseMarket()
   {
    for (int j=0; j<OrdersTotal(); j++)
      {
       OrderSelect(j,SELECT_BY_POS,MODE_TRADES);
       if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType()<2)
         {
          CloseOrder(OrderTicket(),OrderLots());
          j--;
         }
      }
   } 
 
alex12:

Aber es gibt einen weiteren Code im EA:

Fügen Sie z.B. Print("close by CloseMarket ", j); in diese Funktion ein und etwas ähnliches in die vorhergehende, die Sie gepostet haben. Führen Sie sie aus und schauen Sie sich die Protokolle an, um zu sehen, welche dieser Ausdrucke erscheint, um zu analysieren, welcher auslöst. protokollieren Sie dann in ähnlicher Weise die Werte der Variablen, die in den Close-Ausführungsbedingungen überprüft werden, und finden Sie die Gründe für ihre Auslösung...

 
alsu:
Und was hindert Sie daran, den EA genau auf das Fenster zu setzen, in dem Sie zeichnen wollen?


Mein EA arbeitet besser auf M1, weil es besser auf M1 ist und öffnet 1 Handel auf M5 bar Eröffnung, es auch füllt, wenn die Bedingungen erlauben. Ich verwende auch Indikatoren für M5 und andere TFs. Und es ist besser, auf M1 bei der Bar-Eröffnung zu testen, während er auf anderen TFs mit allen Ticks schlecht testet.

Ich zeichne nicht, ich sehe nur die Ergebnisse der vom EA durchgeführten Berechnungen, die in einigen Sekunden angezeigt werden, um sicherzustellen, dass alles in Ordnung ist. Vielen Dank für Ihre Aufmerksamkeit und Hilfe!

 
borilunad:


Mein EA funktioniert besser auf M1, da er besser auf M1 trawlt und 1 Handel auf M5 Bar Eröffnung öffnet, auch Nachfüllungen, wenn die Bedingungen erlauben. Und ich verwende Indikatoren bei M5 und anderen TFs. Und es ist besser, auf M1 bei der Bar-Eröffnung zu testen, während er auf anderen TFs mit allen Ticks schlecht testet.

Ich zeichne nicht, ich sehe nur die Ergebnisse der vom EA durchgeführten Berechnungen, die in einigen Sekunden angezeigt werden, um sicherzustellen, dass alles in Ordnung ist. Vielen Dank für Ihre Aufmerksamkeit und Hilfe!

Auf M1 und M5 werden die Ticks aus derselben Quelle entnommen, und Sie können einen beliebigen Zeitrahmen aus einem beliebigen Diagramm verwenden, ersetzen Sie einfach Close[] durch iClose usw. Um es besser zu testen, sollten Sie bessere fxt-Dateien aus Ticks machen, hier ist ein Beispiel, aber im Allgemeinen Google, gibt es eine Menge Informationen zu diesem Thema.
 
alsu:
Sowohl auf M1 als auch auf M5 stammen die Ticks aus derselben Quelle, und Sie können einen beliebigen Zeitrahmen aus einem beliebigen Diagramm verwenden, ersetzen Sie einfach Close[] durch iClose usw. Um es besser zu testen, müssen Sie bessere fxt-Dateien von Ticks machen, hier ist ein Beispiel, aber im Allgemeinen Google, gibt es eine Menge Informationen zu diesem Thema.

Die Praxis hat gezeigt, dass es besser ist, auf Op zu eröffnen und auch besser zu testen, als auf Ticks. Ich bin überhaupt nicht scharf auf Zecken. Wenn das Depo es zulässt, werde ich vielleicht auf eine höhere TF umsteigen, die an einem Tag bessere Ergebnisse zeigt. Ich lasse keine Angebote für die Nacht, um gut zu schlafen. Nochmals vielen Dank!
 
smshev:

Print("Close by CloseMarket ", j); in dieser Funktion und etwas Ähnliches in der vorhergehenden, die Sie gepostet haben. Führen Sie sie aus und schauen Sie im Log nach den Ergebnissen dieser Drucker, um zu analysieren, welcher auslöst. Dann protokollieren Sie ebenfalls die Werte der Variablen, die in den Close-Bedingungen geprüft werden, und finden Sie die Gründe für deren Auslösung...

Ich danke Ihnen.
 
borilunad:

Die Praxis hat gezeigt, dass es besser ist, auf Orep zu öffnen und auch besser zu testen als auf Zecken. Und mit Zecken habe ich überhaupt nichts am Hut. Wenn das Depo es zulässt, werde ich vielleicht auf eine höhere TF umsteigen, die innerhalb eines Tages bessere Ergebnisse zeigt. Ich lasse keine Angebote für die Nacht, um gut zu schlafen. Nochmals vielen Dank!
Das sage ich nicht, ich sage nur, welchen Unterschied es macht, wo der EA angebracht ist. Wenn er richtig geschrieben ist, spielt es keine Rolle, wo er sich befindet: selbst wenn er sich auf dem Chart der mongolischen Börse befindet, aber wenn er so eingestellt ist, dass er auf EURUSD 1 Minute funktioniert, wird er das tun. Und es ist nicht schwer zu programmieren, in der Regel müssen nur ein paar Zeilen geändert werden.
 

Lieber Herr Programmierer! Ich kann keine horizontale Linie durch den maximalen numerischen Wert des MACD-Indikatorfensters zeichnen.

Code


#property indicator_separate_window
#Eigenschaft indicator_buffers 3
#Eigenschaft indicator_color1 Lime
#Eigenschaft indicator_color2 Rot
//--- Puffer
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double topBuffer[];


bool initFinished=false; // Fügen Sie eine Variable hinzu, die den Status der Initialisierung speichert.
// false - die Initialisierung ist noch nicht erfolgt.
// wahr - wurde initialisiert
//+------------------------------------------------------------------+
//| Benutzerdefinierte Initialisierungsfunktion für Indikatoren |
//+------------------------------------------------------------------+
int init()
{
//---- Indikatoren
SetIndexStyle(0,DRAW_LINE);
SetIndexPuffer(0,ExtMapPuffer1);
SetIndexStyle(1,DRAW_LINE);
SetIndexPuffer(1,ExtMapPuffer2);
SetIndexStyle(2,DRAW_NONE);
SetIndexPuffer(2,topPuffer);
//----
zurück(0);
}
//+------------------------------------------------------------------+
//| Benutzerdefinierte Indikator-Deinitialisierungsfunktion |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
zurück(0);
}
//+------------------------------------------------------------------+
//| Benutzerdefinierte Indikator-Iterationsfunktion |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted(),
Grenze;

if(gezählte_Balken>0)
gezählte_Balken--;

limit=Balken-gezählt_Balken;
//----
for(int i=0;i<limit;i++)

{
ExtMapBuffer1[i]=iMACD(0,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i);
ExtMapBuffer2[i]=iMACD(0,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i);

if(initFinished==false)
{
IndikatorKurzname("MACD_max-min");

int win_idx=WindowFind("MACD_max-min");
// Ermitteln der Nummer des Teilfensters unseres Indikators

if(win_idx<0)
{
// Wenn die Nummer des Unterfensters -1 ist, liegt ein Fehler vor.
Print("Fenster nicht gefunden");
zurück(0);
}

double top=WindowPriceMax(win_idx);
//Ermittelt den maximalen Wert der vertikalen Skala des angegebenen Unterfensters des aktuellen Diagramms


ObjectCreate("max",OBJ_HLINE,win_idx,0,top);
// Zeichnen einer horizontalen Linie in einem Unterfenster unseres Indikators

ObjectSet("max",OBJPROP_COLOR,Yellow);
ObjectSet("max",OBJPROP_WIDTH,0);

WindowRedraw();
// Das Fenster neu zeichnen, um die Linie zu sehen

initFinished=true;
// Zeichnung ist beendet

}

topPuffer[i]=top;


}

//----
zurück(0);
}

//+------------------------------------------------------------------+


Es sieht aus wie in der Zeile

double top=WindowPriceMax(win_idx);

top-Variable erhält keinen Wert und in der

ObjectCreate("max",OBJ_HLINE,win_idx,0,top);

stattdessen (d.h. anstelle der Variablen top) erhalte ich automatisch 0 (Null). Ich erhalte also eine Nullzeile im gewünschten Fenster und in der gewünschten Farbe. topBuffer[] ist ebenfalls leer. Wenn in dieser Zeile anstelle der Variable top ein numerischer Wert steht, nimmt die Zeile diesen festen Wert an, irgendwo habe ich einen klinischen Fehler, helfen Sie mir zu verstehen!

Dateien:
 
IndicatorShortName sollte besser nach init() verschoben werden.
 
alsu:
IndicatorShortName sollte nach init() verschoben werden
Wenn Sie den Indikator öffnen, wird das Objekt nicht angezeigt. Öffnen Sie zusätzlich das Fenster mit den Indikatoreigenschaften, schließen Sie es und das Objekt wird sichtbar.
Grund der Beschwerde: