Fragen von einem "Dummy" - Seite 187

 
G001:
Ich bin völlig erschöpft. Sie lässt sich nicht richtig öffnen.

Bitte helfen Sie mir. Wo liegt der Fehler?

Versuchen Sie dies:
MqlTradeRequest request={0};
MqlTradeResult result={0};
MqlTradeCheckResult check={0};
 
fyords:
Versuchen Sie es so:
Ich danke Ihnen.
Er öffnet sich, liest aber die Signale des Indikators nicht richtig.
Ist das hilfreich?
 
G001:
Ich danke Ihnen.
Er öffnet sich, liest aber die Signale des Indikators nicht richtig.
Wird das helfen?
ArraySetAsSeries(Bull,true);

Dies geschieht einmalig in OnInit.

CopyBuffer(Indicator,1,0,3,Bull);
Sie haben die Pufferzahlen nicht durcheinander gebracht?
 
fyords:

Dies wird einmalig bei OnInit durchgeführt.

Sind die Pufferzahlen korrekt?
Das glaube ich nicht. Der Indikator befindet sich auf der vorherigen Seite.
 
G001:
Er öffnet sich, nur liest er die Signale des Indikators nicht richtig.

Was meinen Sie mit falsch?

Sie können den Wert des Indikators ausdrucken, um zu überprüfen, ob er richtig ist.

 
fyords:

Was meinen Sie mit falsch?

Sie können den Wert des Indikators ausdrucken, um zu prüfen: "Was bekommen wir?"

Ich habe den EA mit anderen Indikatoren überprüft und er funktioniert.
Vielleicht gibt es ein Problem mit dem Indikator?
Er öffnet sich beim ersten Tick mit diesem Indikator.

Entschuldigung, ich weiß nicht, wo ich den Druck hinzufügen kann.

Beispiel für BUY_STOP, wechselt von rot zu grau.

//+------------------------------------------------------------------+ 
//|                                                      MACDATR.mq5 | 
//|                                      Copyright © 2011, Svinozavr | 
//+------------------------------------------------------------------+ 
//---- Indicator settings
#property indicator_separate_window 
#property indicator_buffers 4 
#property indicator_plots   4
#property indicator_level1 +0.0005
#property indicator_level2 -0.0005
#property indicator_levelcolor DimGray
#define RESET 0
//-----
#property indicator_type1 DRAW_HISTOGRAM
#property indicator_color1 Gray
#property indicator_style1 STYLE_SOLID
#property indicator_width1 1
#property indicator_label1 "MACD"
//-----
#property indicator_type2 DRAW_HISTOGRAM
#property indicator_color2 Green
#property indicator_style2 STYLE_SOLID
#property indicator_width2 1
#property indicator_label2 "Bull"
//-----
#property indicator_type3 DRAW_HISTOGRAM
#property indicator_color3 Red
#property indicator_style3 STYLE_SOLID
#property indicator_width3 1
#property indicator_label3 "Bear"
//-----
#property indicator_type4 DRAW_LINE
#property indicator_color4 Olive
#property indicator_style4 STYLE_SOLID
#property indicator_width4 1
#property indicator_label4 "ATR"
//-----
//----- Indicator parameters
//+------------------------------------------------------------------+
input uint FastEMA      = 12;
input uint SlowEMA      = 26;
input uint SignalEMA = 9;
input int  ATRG         = 0;
input ENUM_APPLIED_PRICE AppliedPrice=PRICE_CLOSE;
//+------------------------------------------------------------------+
//-----
double ATRmin=0;
double kATR=1;
int min_rates_total;
int ATRHandle,MACDHandle;
double MACDBuffer[],ATRBuffer[],Bull[],Bear[];
//+------------------------------------------------------------------+    
//| MACD indicator initialization function                           | 
//+------------------------------------------------------------------+  
void OnInit()
{
//-----
  if(ATRG) min_rates_total=int(MathMax(FastEMA,SlowEMA)+ATRG);
  else min_rates_total=2*int(MathMax(FastEMA,SlowEMA));
//-----
  int ATR;
  if(!ATRG) ATR=int(SlowEMA); 
  else ATR=ATRG;
  ATRmin*=_Point;
//-----
  ATRHandle=iATR(NULL,0,ATR);
  if(ATRHandle==INVALID_HANDLE)Print(" Íå óäàëîñü ïîëó÷èòü õåíäë èíäèêàòîðà ATR");
//-----
  MACDHandle=iMACD(NULL,0,FastEMA,SlowEMA,SignalEMA,AppliedPrice);
  if(MACDHandle==INVALID_HANDLE)Print(" Íå óäàëîñü ïîëó÷èòü õåíäë èíäèêàòîðà MACD");
//-----
  SetIndexBuffer(0,MACDBuffer,INDICATOR_DATA);
  PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,min_rates_total);
  ArraySetAsSeries(MACDBuffer,true);
//-----
  SetIndexBuffer(1,Bull,INDICATOR_DATA);
  PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,min_rates_total);
  ArraySetAsSeries(Bull,true);
//-----
  SetIndexBuffer(2,Bear,INDICATOR_DATA);
  PlotIndexSetInteger(2,PLOT_DRAW_BEGIN,min_rates_total);
  ArraySetAsSeries(Bear,true);
//-----
  SetIndexBuffer(3,ATRBuffer,INDICATOR_DATA);
  PlotIndexSetInteger(3,PLOT_DRAW_BEGIN,min_rates_total);
  ArraySetAsSeries(ATRBuffer,true);
//-----
  string shortname;
  StringConcatenate(shortname,"MACDATR (",FastEMA,", ",SlowEMA,", ",SignalEMA,", ",EnumToString(AppliedPrice),")");
//-----
  IndicatorSetString(INDICATOR_SHORTNAME,shortname);
//-----
  IndicatorSetInteger(INDICATOR_DIGITS,_Digits+1);
//-----
}
//+------------------------------------------------------------------+  
//| MACD iteration function                                          | 
//+------------------------------------------------------------------+  
int OnCalculate(
                const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[]
                )
  {
//----- Check for data
  if(rates_total<min_rates_total) return(0);
//-----
  int to_copy,limit,i;
  double atr,Atr[];
  datetime Time[1];
//-----
  if(prev_calculated>rates_total || prev_calculated<=0)
  {
    limit=rates_total-min_rates_total;
  }
  else limit=rates_total-prev_calculated;
//----- 
  ArraySetAsSeries(Atr,true);
//-----
  to_copy=limit+1;
//-----
  if(CopyBuffer(ATRHandle,0,0,to_copy,Atr)<=0) return(RESET);
  if(CopyBuffer(MACDHandle,MAIN_LINE,0,to_copy,MACDBuffer)<=0) return(RESET);
//-----
  for(i=limit; i>=0 && !IsStopped(); i--)
  {
    atr=kATR*Atr[i]; // ATR
    atr=MathMax(atr,ATRmin);
//-----
    if(MACDBuffer[i]>0) {ATRBuffer[i]=MACDBuffer[i]-atr;}
    if(MACDBuffer[i]<0) {ATRBuffer[i]=MACDBuffer[i]+atr;}
  }
//-----
  for(i=limit; i>=0 && !IsStopped(); i--)
  {
//-----
    Bear[i]=0;
    Bull[i]=0;
//-----
    if(MACDBuffer[i]>0 && MACDBuffer[i+1]<MACDBuffer[i] && ATRBuffer[i]>=0) {Bull[i]=MACDBuffer[i];}
    if(MACDBuffer[i]<0 && MACDBuffer[i+1]>MACDBuffer[i] && ATRBuffer[i]<=0) {Bear[i]=MACDBuffer[i];}
  }
//+------------------------------------------------------------------+
//----- Done
  return(rates_total);
}
//+------------------------------------------------------------------+

 
G001:
Ich habe den EA mit anderen Indikatoren getestet und er funktioniert.
Vielleicht ist der Indikator das Problem?
Bei diesem Indikator wird er beim ersten Tick geöffnet.

Entschuldigung, ich weiß nicht, wo ich den Druck hinzufügen kann.

Beispiel für BUY_STOP, wechselt von rot zu grau.

Ich habe kein Problem gefunden, alles funktioniert. Ich habe die Codes von Seite 189 übernommen.

 

Frage zur Programmeigenschaft#property tester_file "" .

Ich muss zu Testzwecken eine Menge Dateien mit meinem EA verbinden, 3800 um genau zu sein.

Tägliche Optionswerte für verschiedene Instrumente nur für dieses Jahr.

Was ist die Lösung?

Документация по MQL5: Основы языка / Препроцессор / Свойства программ (#property)
Документация по MQL5: Основы языка / Препроцессор / Свойства программ (#property)
  • www.mql5.com
Основы языка / Препроцессор / Свойства программ (#property) - Документация по MQL5
 
Karlson: Frage zur Programmeigenschaft#property tester_file "" .

Zu Testzwecken müssen viele Dateien mit dem EA verbunden werden, 3800 um genau zu sein. Tägliche Optionswerte für mehrere Instrumente nur für dieses Jahr. Was ist die Lösung?

Beim Testen stellt sich heraus, dass alle Informationen in diesen Dateien unveränderbar sein müssen (archiviert). Ich würde versuchen, zwei Funktionen zu schreiben: eine setzt alle Daten aus Hunderten von Dateien in eine Datei zurück, die andere liest diese Datei nach genau definierten Regeln. Haben Sie es auf diese Weise versucht?
 
Yedelkin:
Beim Testen stellt sich heraus, dass alle Informationen in diesen Dateien unveränderbar sein müssen (archiviert). Ich würde versuchen, zwei Funktionen zu schreiben: eine setzt alle Daten aus Hunderten von Dateien in eine Datei zurück, die andere liest diese Datei nach genau definierten Regeln. Haben Sie es auf diese Weise versucht?
Ich habe es noch nicht ausprobiert, aber die Idee, die Daten in einer Datei zu sammeln, ist verständlich. Vielleicht werden die Entwickler eine Option angeben - eine Möglichkeit, unveränderliche Daten aus einem Ordner zu verbinden.