Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 779

 
Alexey Volchanskiy:

.ex5 ist für niemanden von Nutzen. Wenn Sie Hilfe benötigen, veröffentlichen Sie den Quellcode.


Scheiße, ich dachte, es wäre der Quellcode :-) Ich schaue mir auch die anderen Icons an.... Ich habe mich gefragt, welche die Quelle ist...... diese :-)

Wie sich herausstellt, ist es nicht....

Dateien:
ChekParam.mq5  11 kb
 

Der Punkt ist, dass der Impuls auf dem minus dritten Balken vom Ende Null ist und als Null gezeichnet wird. Aber es ist nicht Null im Puffer.

Ich weiß nicht, was es war, aber ich löste das Problem durch Einfügen aller Code PULSE in einem neuen Indikator, unter Umgehung icustom.

Ich hatte keinen Fehler beim Minus im zweiten Takt. Ich habe sonst nichts am Code geändert, also ist es wirklich ein Fehler in den Metaquotes.

 
LookingFor:

Der Punkt ist, dass der Impuls auf dem dritten Minusbalken vom Ende Null ist und als Null gezeichnet wird. Aber es ist nicht Null im Puffer.

Ich weiß nicht, was es war, aber ich löste das Problem durch Einfügen aller Code PULSE in einem neuen Indikator, unter Umgehung icustom.

Ich hatte keinen Fehler beim Minus im zweiten Takt. Ich habe sonst nichts am Code geändert, also ist es wirklich ein Metaquote-Fehler.


Ohne den Code kann der Fehler nur bei Ihnen liegen. Leider haben Sie das Material nicht zur Verfügung gestellt, als Sie um Hilfe baten...

 
Kann jemand helfen? Wo liegt der Fehler, warum wird der Indikator nicht korrekt angezeigt?
Dateien:
ChekParam.mq5  11 kb
 
Vladislav Andruschenko:

Leider haben Sie, als Sie um Hilfe baten, das Material nicht angegeben...

Vladislav, im Namen der Gerechtigkeit, des Wunsches zu verstehen, worum es geht, und aus Respekt vor Ihnen, gebe ich Ihnen den Code.


//+------------------------------------------------------------------+
//|                                                   PULS_SWING.mq5 |
//|                        Copyright 2017, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 4
#property indicator_plots   1
//--- plot Pulse_Swing
#property  indicator_label1  "Pulse_Swing"
#property  indicator_type1   DRAW_LINE
#property  indicator_color1  clrRed
#property  indicator_style1  STYLE_SOLID
#property  indicator_width1  1
//--- input parameters
input double   points=0.005;
input double   begin_price_level=1.0;
//--- indicator buffers
double         Pulse_Swing [], pulse [] , trend [] , delta [];
int PULSE_Handle ;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,Pulse_Swing,INDICATOR_DATA);
   SetIndexBuffer(1,pulse,INDICATOR_CALCULATIONS);
   SetIndexBuffer(2,trend,INDICATOR_CALCULATIONS);
   SetIndexBuffer(3,delta,INDICATOR_CALCULATIONS);
   IndicatorSetInteger(INDICATOR_DIGITS,0);
   ResetLastError(); 
   PULSE_Handle = iCustom(NULL,0,"PULSE",
                          points,          // Points
                          begin_price_level          // begin_price_level
                          );
   Print("PULSE_Handle",PULSE_Handle,"  error = ",GetLastError()); 
//---
   PlotIndexSetInteger(0,PLOT_LINE_STYLE,STYLE_SOLID);
   //ArrayFree (pulse);ArrayFree (delta);ArrayFree (Pulse_Swing);
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
   int  bar, start  ;
   if (prev_calculated==0)
   {pulse [0] = pulse [1] =0; start =begin+2 ;}
   else {start = prev_calculated ;}
   //Print(IntegerToString(bar));
   for (bar= start ;bar<rates_total;bar ++)
   {CopyBuffer(PULSE_Handle,0,bar,1,pulse);
   //Print(IntegerToString(pulse[bar]));
   if ((pulse [bar-1]- pulse [bar -2])>0) trend[bar-1] = 1 ; // 
   else
   if ((pulse [bar-1] - pulse [bar -2])<0) trend[bar-1] = -1 ; //
   else
   if (pulse [bar-1] == pulse [bar -2])  {trend[bar-1] = trend[bar-2] ;} // 
   else 
   continue ;
   delta[bar] = pulse[bar]- pulse[bar-1];
   if (trend [bar-1]== 1 && pulse [bar] != pulse [bar-1])
   Pulse_Swing [bar] = Pulse_Swing [bar-1] + delta[bar];
   else
   if (trend [bar-1]== -1 && pulse [bar] != pulse [bar-1])
   Pulse_Swing [bar] = Pulse_Swing [bar-1] - delta[bar];
   else
   if (delta [bar]==0 )Pulse_Swing [bar] = Pulse_Swing [bar-1] ;
   }
   //Print(IntegerToString(delta[rates_total-1]));
   Print(IntegerToString(delta[rates_total-2]));
   //Print(IntegerToString(pulse[rates_total-1]));
   Print(IntegerToString(pulse[rates_total-3]));
   Print(IntegerToString(pulse[rates_total-2]));
   Print(IntegerToString(pulse[rates_total-1]));
  
//--- return value of prev_calculated for next call
   return(rates_total);
  }
 

Ich habe Probleme, das Ergebnis der Handelsoperation zu lesen. Ich habe es so geschrieben:

MqlTradeRequest request={0};
MqlTradeResult result={0};
//--- установка параметров операции
....
//--- отправка запроса
if ( !OrderSend(request,result) )
  PrintFormat("OrderSend error %d",GetLastError()); // если отправить запрос не удалось
else // Я хочу получить парамеры резултата
{ Sleep(9999); // Жду получения резултата
  double ClosePrice=result.price;
}

Wenn Sie Sleep entfernen, erhalte ich immer ClosePrice=0.0. Selbst wenn ich 10 Sekunden warte (länger möchte ich nicht warten), erhalte ich fast immer das Ergebnis, aber manchmal auch nicht.

Wie erhalte ich Ergebnisse?

In der Beschreibung von OrderSend() steht:

Hinweis

Eine Handelsanfrage durchläuft auf dem Handelsserver mehrere Validierungsstufen. Zunächstwerden alle Pflichtfelder des Anfrageparametersauf Korrektheit geprüft , und wenn keine Fehler vorhanden sind, nimmt der Server den Auftrag zur weiteren Bearbeitung an. Wenn der Auftrag erfolgreich vom Handelsserver angenommen wurde, gibt die Funktion OrderSend() den Wert true zurück.

Das heißt, wenn ich von OrderSend() den Wert true erhalte, erhalte ich den Parameter MqlResult nicht, wenn ich das richtig verstehe.

Wann werden sie zu mir kommen?

 
Ivan Ivanov:

Ich kann das Ergebnis meines Handels nicht lesen.

Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests

Fehler 131 tritt beim Ändern eines Auftrags auf

fxsaber, 2017.09.12 19:47

Sie müssen nur den Namen des Handelsservers und das Symbol angeben, und das Problem ist im Handumdrehen gelöst, denn jeder kann es selbst ausprobieren.

In der Zwischenzeit hat man das Gefühl, dass die Aufgabe nicht darin besteht, eine Lösung zu finden, sondern mit Ja oder Nein zu antworten.

 

Meine Herren Programmierer,

Hier ist eine Frage: Wenn der Strategie-Tester in MT5 zeigt gute Ergebnisse nur auf offene Preise, wird das gleiche Ergebnis wahr sein, wenn der Roboter öffnet Trades nur auf offene Preise?

 
Dzyga:

Meine Herren Programmierer,

Frage: Wenn der Strategietester im MT5 nur bei offenen Kursen gute Ergebnisse anzeigt, wird der Roboter dann auch nur bei offenen Kursen Trades mit demselben Ergebnis eröffnen?


Es ist leicht zu überprüfen: im EA öffnen Sie Trades nur zum Eröffnungskurs (d.h. bei der Bar-Geburt) und im Strategy Tester überprüfen Sie es im Tick-Generierungsmodus "Alle Ticks".

 

Kolleginnen und Kollegen, bitte helfen Sie mir

Ich verstehe nicht, was mit der Schleife falsch ist, die Daten aus dem Handle gehen nicht in das psa1-Array

if (prev_calculated == 0 ){i=bars =start=1;}
  else {start = prev_calculated ;}
  for ( bars=start ; bars<rates_total ; bars ++)
  {CopyBuffer(pulse_Handle,0,start,1,pca1);
  
  if (pca1[bars]!=pca1[bars-1]) {pca2[i]=pca1[bars]; i++;
  string s="";s=IntegerToString(pca1[bars])+"  ";Print(s); continue;}
  else continue ;}