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

 
Frostr:
Ich habe ihn bereits entkernt... Es gibt ein Histogramm, wenn Sie also keine Möglichkeit finden, es mit Balken zu machen, müssen Sie es verwenden...
Ziehen Sie Balken den Kerzenständern vor? Interessante Frage, aber ich möchte meine Zeit nicht damit verschwenden. Tatsächlich ist ein Balken auch ein Histogramm mit Open- und Close-Beschriftungen
. Wenn Sie sich nicht um die Farben dieser Beschriftungen kümmern, können Sie diese Methode wie in H.A. verwenden. Berechnen Sie einfach die Breite des Balkens in Pixeln (es ist möglich, ich habe es überprüft, aber ich erinnere mich nicht, wo es in der Hilfe steht) und legen Sie die Balkenbreite fest, während Open und Close die in den Diagrammeigenschaften angegebene Farbe haben.
 

Warum wird die virtuelle Methode "Compare", die in der Klasse CListNode überschrieben wird, ignoriert?

#include <Arrays\List.mqh>
#define  SIZE 10

class CData : public CObject
  {
public:
   int m_data;
  };

class CListNode : public CList
  {
public:
   virtual int Compare(const CObject *node,const int mode=0) const {
      int _test=1;
      return(_test);
   }
  };

int OnInit() {
        CListNode *node=new CListNode;
        if(CheckPointer(node)==POINTER_INVALID) {
           Print("Не могу создать объект");
           return(INIT_FAILED);
        }
        else Print("Объект создан, работаем дальше");

        MathSrand(GetTickCount());
        for(int i=0;i<SIZE;i++) {
           CData *data=new CData;
           if(data==NULL) {
              Print("Нет возможности получить указатель");delete node;return(INIT_FAILED);
           }
           printf("Узел %i, данные узла %i",i,data.m_data=MathRand());
           node.Add(data);
        }
        
        node.Sort(0);
        int _total=node.Total();
        for(int i=0;i<_total;i++) {
           CData *data=node.GetNodeAtIndex(i);
           if(data==NULL) {
              Print("Нет возможности получить указатель");delete node;return(INIT_FAILED);
           }
           printf("Узел %i, данные узла %i",i,data.m_data);
        }

        if(CheckPointer(node)==POINTER_DYNAMIC) {Alert("Удаляем объект");delete node;}
        else Alert("Non-dynamic object");
   return(INIT_SUCCEEDED);
}
Überprüft im Debugger, verwendet immer Compare from CObject
 

Hallo, ich habe einen EA wie diesen geschrieben. Warum meldet er fast jede Sekunde ein Verkaufssignal?

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

//| Peresechenie TM.mq4 |

//| Popov Vladimir |

//| http://vk.com/id143715412 |

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

#eigentum copyright "Popov Vladimir"

#property link "http://vk.com/id143715412"


double SellPrice;

double TakeProfit;

double StopLoss;


externer String TimeFrame = "aktueller Zeitrahmen";

extern int HalfLength = 20;

extern int Preis = PRICE_CLOSE;

extern double ATRMultiplier = 2.0;

extern inttern ATRPeriod = 100;

extern bool Interpolate = true;



double PriceHigh, PriceLow, PriceMiddle;

double HighesBuffer[];

double LowesBuffer[];

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

//| Experten-Initialisierungsfunktion |

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

int init()

{

if (Ziffern == 3 || Ziffern == 5)

{

TakeProfit *= 10;

StopLoss *= 10;

}

zurück(0);

}

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

//| Experten-Deinitialisierungsfunktion |

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

int deinit()

{





zurück(0);

}

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

int start()

{

PriceHigh = iCustom (Symbol (), 0, "Time", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 2, 0);

PriceLow = iCustom (Symbol (), 0, "Time", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 1, 0);

PriceMiddle = iCustom (Symbol (), 0, "Time", TimeFrame, HalfLength, Price, ATRMultiplier, ATRPeriod, Interpolate, 0, 0);


if(Ask <= PriceLow)

{

Alert("Kaufsignal");

}

if(Gebot >= PreisHoch)

{

Alert("Signal zum Verkauf");

}

zurück(0);

}

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

 

Können Sie mir bitte sagen, ob es möglich ist, den Bericht nach der Prüfung automatisch zu speichern?

Ich muss nur eine Menge Testläufe im automatischen Modus durchführen (ich plane, es durch Optimierung ohne GA zu tun) und den vollständigen Bericht (einschließlich Bild) auf der Festplatte speichern.

 
tuner:

Können Sie mir bitte sagen, ob es möglich ist, den Bericht nach der Prüfung automatisch zu speichern?

Ich muss nur eine Menge Testläufe im automatischen Modus durchführen (ich plane, es durch Optimierung ohne GA zu tun) und den vollständigen Bericht (einschließlich Bild) auf der Festplatte speichern.


Es gibt die Funktionen TesterStatistics() undOnTester()

Schauen Sie sie sich an, vielleicht helfen sie Ihnen

 
Pr0t0tip:

Hallo, ich habe einen EA wie diesen geschrieben. Warum meldet er fast jede Sekunde ein Verkaufssignal?



Versuchen Sie zu ersetzen

if(Ask <= PriceLow)

 {

 Alert("Сигнал к покупке");

 }

 if(Bid >= PriceHigh)

 {

 Alert("Сигнал к продаже");

 }

 return(0);

unter

int static flag=0;
if(Ask <= PriceLow && flag<1)

 {

 Alert("Сигнал к покупке");
flag=1;
 }

 else if(Bid >= PriceHigh && flag>-1)

 {

 Alert("Сигнал к продаже");
flag=-1;
 }
else flag=0;

 return(0);
 
Vinin:


Es gibt die Funktionen TesterStatistics() und OnTester()

Schauen Sie sie sich an, vielleicht hilft das.


Danke für den Ratschlag, aber er scheint nicht zu helfen, da der Bericht selbst in seiner ursprünglichen Form (htm) mit einem Bild benötigt wird. Es scheint keine fertige Lösung zu geben. Ich werde versuchen, ein Skript in autoit, die in der Tester angegebene Anzahl von Zeiten drückt die Schaltfläche "Start" und nach jedem Lauf geht auf die Registerkarte "Report" und speichert die Ergebnisse in der Datei zu machen
 

Hallo! Bitte helfen Sie mir bei folgendem Problem: ab Build 625 werden die Werte der Funktionen Alert (...), Print(...), Comment(...) nicht auf dem Indikatorchart im MT4-Tester angezeigt; diese Werte werden beim Starten des Indikators für den realen Handel oder über den Debugger angezeigt. So wird es unmöglich, Parameteränderungen an historischen Daten mit der Funktion Print(...) zu überwachen. Ich hatte keine Probleme mit dem 610. Build, da alle Werte auf der Registerkarte "Experten" des Terminals angezeigt wurden.

Vielleicht sollte der Code auf eine andere Art und Weise ähnlich wie bei MQL5 überarbeitet werden? Ich weiß nicht, was ich tun soll, ich muss immer noch die alte Version verwenden...

 

Hallo. Ist schon jemand auf dieses Problem gestoßen?

Ich habe mehrere EAs in dem Ordner, aber das Terminal (MT 4, Build 625) hat sie nicht. Und die, die auf dem Terminal sind, befinden sich nicht im Ordner. Ist es ein Wunder?



 
Ale-xander:

Hallo. Ist schon jemand auf dieses Problem gestoßen?

Ich habe mehrere EAs in dem Ordner, aber das Terminal (MT 4, Build 625) hat sie nicht. Und die, die auf dem Terminal sind, befinden sich nicht im Ordner. Ist es ein Wunder?



Keine Wunder.

Datei --> Datenordner öffnen --> in dem sich öffnenden Fenster --> MQL4 --> und dort befinden sich die Ihnen bekannten Ordner. Der Link zu diesem Artikel auf der Hauptseite des Forums. Ich bin einfach zu faul, um das zu tun.