Fehler, Irrtümer, Fragen - Seite 355

 
Ist die Einstellung für Agenten immer dieselbe wie für den Hauptrechner?
 
dimonsky:
Haben die Agenten immer die gleiche Geschichte wie der Hauptrechner?
Die Idee ist gut, aber es gibt Probleme mit der Synchronisierung der Historie und einigen anderen Dingen.
 

Ich habe nicht den ganzen Thread gelesen, also entschuldigen Sie mich bitte, wenn dies bereits geschehen ist.

1. Wird es möglich sein, einen Zeitpunkt (nicht zu verwechseln mit einem Datum) für den Beginn und das Ende der Prüfung zu wählen.

2. Wie im Tester zu sehen, Geschäfte auf andere Paare außer in den Einstellungen (für Multi-Währung - für ein Instrument - "Open Chart" in Testergebnisse, und für andere).

 
Retsam:

Ich habe nicht den ganzen Thread gelesen, also entschuldigen Sie mich bitte, wenn dies bereits geschehen ist.

1. Wird es möglich sein, einen Zeitpunkt (nicht zu verwechseln mit einem Datum) für den Beginn und das Ende der Prüfung zu wählen.

2. Wie in der Tester zu sehen, Geschäfte auf andere Paare außer in den Einstellungen (für Multi-Währung - für ein Instrument - "Open Chart" in der Test-Ergebnisse, und für andere).

1 Eine solche Funktion gibt es nicht - es sei denn, Sie bitten darum, dies zu tun.

2 Auch so etwas gibt es nicht,

 

Guten Tag!

MT 5.425 Windows 7 x64

Ich starte den Indikator in einem Unterfenster (Unterfenster 1), lege dort einen Chart mit einem Puffer an und möchte mit ChartGetDouble(0,CHART_PRICE_MAX,1) und ChartGetDouble(0,CHART_PRICE_MIN,1) den minimalen bzw. maximalen Preis des Fensters abfragen.

Die Ausgabe ist 0, das Minimum und Maximum des Hauptfensters wird korrekt angezeigt (ChartGetDouble(0,CHART_PRICE_MAX) ChartGetDouble(0,CHART_PRICE_MIN)). ChartRedraw(0) funktioniert nicht. Wenn das Diagramm mit der Maus gescrollt wird, sterben die Werte - es wird korrekt angezeigt.

Dies geschieht, wenn ich den Indikator zum ersten Mal starte oder wenn ich Werte in den Eigenschaften des Indikators ändere.

Vielleicht ist es ein Fehler, oder ich mache etwas falsch.

Welche Bedeutung hat dieser Eintrag in der Hilfedatei?

CHART_PRICE_MIN Minimum des Diagrammsdouble r/o modifier - Nummer des Unterfensters

CHART_PRICE_MAX Maximum des Diagrammsdouble r/o modifier - Teilfensternummer

Ich danke Ihnen!

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы графиков / Свойства графиков - Документация по MQL5
 
Alle Kartenfenster sind von Null an nummeriert. 0 - Hauptdiagrammfenster, 1 - Fenster des ersten Indikators, der in einem separaten Fenster angezeigt wird. Und so weiter.
 

Ich kann nicht herausfinden, was los ist:

wenn die Parameter von zwei Indikatoren gleich sind, dann öffnet der EA nur einen Kauf, aber wenn die Parameter unterschiedlich sind, dann ist es nicht klar, wie es die Position schließt......

Theoretisch sollte der Handel mit dem zweiten Indikator abgeschlossen werden, aber das ist nicht der Fall. Der Code selbst:

#include <Trade\Trade.mqh>
#include <Trade\PositionInfo.mqh>
#include <Trade\SymbolInfo.mqh>
#include <Trade\OrderInfo.mqh>
MqlRates mrate[];

input int TriX_PARAM=14;
input int TriX_PARAM_Close=50;

double TriX[];
double TriX_Close[];
int TriXHandle;
int TriXHandle_Close;

int OnInit()
  {

   TriXHandle=iTriX(Symbol(),PERIOD_CURRENT,TriX_PARAM,PRICE_WEIGHTED);
   TriXHandle_Close=iTriX(Symbol(),PERIOD_CURRENT,TriX_PARAM_Close,PRICE_WEIGHTED);
   return(0);
  }

void OnTick()
  {
   CTrade mytrade;
   CPositionInfo myposition;
   CSymbolInfo mysymbol;
   COrderInfo myorder;

   bool Sell_opened,Buy_opened;
   if(myposition.Select(_Symbol)==true) { if(myposition.Type()==POSITION_TYPE_BUY) Buy_opened=true;  if(myposition.Type()==POSITION_TYPE_SELL) Sell_opened=true;}

//Закрываем позицию
   if(Buy_opened==true || Sell_opened==true)
     {
      ArraySetAsSeries(TriX_Close,true);
      CopyBuffer(TriXHandle_Close,0,0,4,TriX_Close);

      if(Sell_opened=true && TriX_Close[1]>TriX_Close[2] && TriX_Close[2]<TriX_Close[3]) mytrade.PositionClose(_Symbol);
      if(Buy_opened=true && TriX_Close[1]<TriX_Close[2] && TriX_Close[2]>TriX_Close[3]) mytrade.PositionClose(_Symbol);

     }

//Открываем позицию
   if(Buy_opened==false && Sell_opened==false)
     {
      ArraySetAsSeries(TriX,true);
      CopyBuffer(TriXHandle,0,0,4,TriX);
      
      if(TriX[1]>TriX[2] && TriX[2]<TriX[3]) mytrade.Buy(0.1,_Symbol,NormalizeDouble(mysymbol.Ask(),_Digits),0,0);
      if(TriX[1]<TriX[2] && TriX[2]>TriX[3]) mytrade.Sell(0.1,_Symbol,NormalizeDouble(mysymbol.Bid(),_Digits),0,0);

     }
  }
 
Kann ich es so einrichten, dass das Terminal während der Optimierung nicht aktualisiert wird?
 
Jager:
Ist es möglich, das Aktualisieren des Terminals während der Optimierung zu verhindern?

Wenn also das Terminal läuft und seit 5-10 Minuten nicht aktualisiert wurde,

Sie wird nicht aktualisiert, und selbst wenn sie aktualisiert wird, werden die neuen Einstellungen nicht gespeichert.

Bevor Sie das Terminal neu starten, können Sie natürlich das Internet ausschalten

 
Mr.FreeMan:

Ich kann nicht herausfinden, was los ist:

wenn zwei Indikatoren die gleichen Parameter haben, dann öffnet der EA nur Kaufen, und wenn die Parameter unterschiedlich sind, dann ist es nicht klar, wie es Positionen schließt......

Theoretisch sollte der Handel mit dem zweiten Indikator abgeschlossen werden, aber das ist nicht der Fall. Der Code selbst:

Der Code selbst: Am Anfang müssen Sie Arrays anders markieren.

das ist besser). ändern Sie es:

CopyBuffer(TriXHandle_Close,0,0,3,TriX_Close);
CopyBuffer(TriXHandle,0,0,4,TriX);

auf diesen Zeilen

CopyBuffer(TriXHandle_Close,0,0,3,TriX_Close);
CopyBuffer(TriXHandle,0,0,3,TriX);

Auch ändern

 if(Sell_opened=true && TriX_Close[1]>TriX_Close[2] && TriX_Close[2]<TriX_Close[3]) mytrade.PositionClose(_Symbol);
 if(Buy_opened=true && TriX_Close[1]<TriX_Close[2] && TriX_Close[2]>TriX_Close[3]) mytrade.PositionClose(_Symbol);
      if(TriX[1]>TriX[2] && TriX[2]<TriX[3]) mytrade.Buy(0.1,_Symbol,NormalizeDouble(mysymbol.Ask(),_Digits),0,0);
      if(TriX[1]<TriX[2] && TriX[2]>TriX[3]) mytrade.Sell(0.1,_Symbol,NormalizeDouble(mysymbol.Bid(),_Digits),0,0);

dazu.

 if(Sell_opened=true && TriX_Close[0]>TriX_Close[1] && TriX_Close[1]<TriX_Close[2]) mytrade.PositionClose(_Symbol);
 if(Buy_opened=true && TriX_Close[0]<TriX_Close[1] && TriX_Close[1]>TriX_Close[2]) mytrade.PositionClose(_Symbol);
      if(TriX[0]>TriX[1] && TriX[1]<TriX[2]) mytrade.Buy(0.1,_Symbol,NormalizeDouble(mysymbol.Ask(),_Digits),0,0);
      if(TriX[0]<TriX[1] && TriX[1]>TriX[2]) mytrade.Sell(0.1,_Symbol,NormalizeDouble(mysymbol.Bid(),_Digits),0,0);
Grund der Beschwerde: