Wie kann ich Daten aus einem Indikator abrufen? - Seite 6

 
Retabs:


Ich werde mich korrigieren.Der Code wurde bereitsüber die Schaltfläche SRC eingefügt.

Warum sollten Sie dann meinen Code löschen, wenn er, wie Sie geschrieben haben, vorschriftsmäßig eingefügt ist ?


Denn Sie müssen Ihren Code nach den Regeln eingefügt anbieten, nicht ich Ihren! Gerade eben habe ich sie gelöscht, als ich nach Hause kam!
 
borilunad:

Denn Sie müssen Ihren Code nach den Regeln eingefügt anbieten, nicht ich Ihren! Gerade eben habe ich sie gelöscht, als ich nach Hause kam!


Können Sie uns bitte beraten. Wie lässt man zu, dass ein neuer Handel nur dann eröffnet wird, wenn sich die Indikatorlinien erneut kreuzen, d.h. wenn val1 nicht gleich val2 ist? (Code oben). Per Schleife?

 
Retabs:


Bitte beraten Sie mich. Wie lässt sich die Eröffnung eines Geschäfts begrenzen, bis ein anderes geschlossen wird? (Code oben).


Legen Sie vor der Eröffnung eine Bedingung fest, die besagt, dass Sie öffnen können, wenn es keine Position gibt!

Es gibt viele verschiedene Funktionen, aber während Sie sie erforschen, schlage ich einen Standby vor, der für alle Gelegenheiten geeignet ist!

if(OrderTotal() == 0)
{
  // потом остальные условия, чтобы зря не производить расчёты,
  // если пока ещё есть открытая позиция. 
  // Если понадобится открывать больше позиций, тогда проставите
  // допустимый максимум, например, 3 позиции:
if(OrderTotal() < 3)
{
  // Всё это не ленитесь находить в Документации! Замечено, что 
  // если находите сами и сами делаете, тогда ваши знания и навыки
  // будут крепкими!
  
 
<br / translate="no">
Borilunad:

Denn Sie müssen Ihren Code nach den Regeln eingefügt anbieten, nicht ich Ihren! Gerade eben habe ich es gelöscht, als ich nach Hause kam!

Ich danke Ihnen. Ich habe meine Bedingungen überdacht und festgestellt, dass ich nicht ganz richtig verstanden habe, was ich wollte. Es tut mir leid.

Können Sie mir das bitte sagen? Wie ermögliche ich die Eröffnung einesneuen Handels nur dann, wenn die Indikatorlinien erneut gekreuzt werden, d.h. wenn val1 nicht gleich val2 ist? (Code oben). Um nur einen Handel zwischen 2 Überkreuzungen zuzulassen, unabhängig von der Anzahl der zu diesem Zeitpunkt geöffneten vergangenen Trades, und natürlich ohne sie zu berühren.

Ich habe versucht, eine neue Variable als Markierung hinzuzufügen, die ihren Wert während der Überquerung ändert, aber nichts hat funktioniert.

Ich denke, der einzige Ausweg besteht darin, den Moment zu erwischen, in dem das Geschäft abgeschlossen ist, und den Marker wieder auf seinen ursprünglichen Wert zurückzusetzen.

 
Retabs:


Bitte beraten Sie mich. Wie kann man die Eröffnung eines neuen Handels nur dann zulassen, wenn die Indikatorlinien erneut gekreuzt werden, d.h. wenn val1 nicht gleich val2 ist? (Code oben). Ist es eine Schleife?


Während ich Ihnen geschrieben habe, haben Sie Bedingungen hinzugefügt, die Sie von mir geschrieben sehen wollen! Hier müssen Sie das, was Sie brauchen, selbst finden und schreiben, indem Sie in der Dokumentation nachsehen und sich Ihr Zeitreihendiagramm, die Balken-Kerzen und das Tutorial von Sergei Kovalev ansehen, in dem alles auf verständliche Weise erklärt wird!

Verschwenden Sie also nicht Ihre Zeit, nehmen Sie das Studium auf, und das Ergebnis wird sein! Und wenn Sie Tipps verwenden, erweisen Sie sich selbst einen Bärendienst, denn auch ein professionell geschriebener EA braucht immer einen Babysitter, ohne den er jederzeit ausflippt und wegen der häufigen Änderungen der Marktgewohnheiten nicht mehr rentabel ist! Deshalb sollte man immer nach neuen Lösungen suchen, experimentieren und die Strategie ein wenig oder viel ändern, und zu wissen, was man selbst gemacht hat, ist viel einfacher als die von jemand anderem zu verstehen! Viel Glück für Sie!

 
borilunad:


Während ich Ihnen geschrieben habe, haben Sie Bedingungen hinzugefügt, die Sie von mir geschrieben sehen wollen! Hier müssen Sie finden und schreiben, was Sie brauchen, indem Sie in der Dokumentation nachsehen und sich Ihre Chart-Zeitreihen, Balken-Kerzen ansehen und sich in das Studium des Tutorials von Sergey Kovalev vertiefen, das alles auf zugängliche Weise erklärt!

Verschwenden Sie also nicht Ihre Zeit, sondern beginnen Sie zu unterrichten, und Sie werden Ergebnisse erzielen! Und mit Tipps erweisen Sie sich selbst einen Bärendienst, denn auch ein professionell geschriebener EA braucht immer einen Babysitter, ohne den er jederzeit durch häufige Änderungen der Marktgewohnheiten aus dem Tritt gerät und aufhört zu verdienen! Deshalb sollte man immer nach neuen Lösungen suchen, experimentieren und die Strategie ein wenig oder viel ändern, und zu wissen, was man selbst gemacht hat, ist viel einfacher als die von jemand anderem zu verstehen! Viel Glück für Sie!


GUT. Ich werde den Hinweis nicht aufgeben. Bitte sagen Sie mir, in welche Richtung ich gehen muss, um "den Moment zu erwischen, in dem die Transaktion stattgefunden hat, und die Markierung wieder auf ihren ursprünglichen Wert zu setzen".
 
Retabs:

Also gut. Ich werde das Zertifikat nicht aufgeben. Sagen Sie mir, in welcher Richtung ich graben muss, um "den Moment zu erwischen, in dem der Handel stattgefunden hat, und den Marker wieder auf seinen ursprünglichen Wert zu setzen".


Zeitreihen in der Dokumentation, Balken-Folien imDiagramm! Und ganz nebenbei werden Sie viel Nützliches und Wissenswertes lernen! Und das Tutorial!

Und es geht nicht um ein oder zwei Tage des Lernens, sondern um Monate und Jahre, um das ganze Leben, wenn man wirklich wissen und können will! Viel Glück!

 
_new-rena:

Endlich.

Der Fehler von 130 ist auf die Stopps und Übernahmen zurückzuführen. Es sollte ein Preisniveau geben, bei dem sie ausgelöst werden sollten. (Sicherlich nicht auf Preis -100 oder 60 warten, sollte wie Preis-100*Punkt oder Preis+60*Punkt sein, zum Beispiel)


Bitte beraten Sie mich. Wie kann man die Eröffnung einesneuen Handels nur dannzulassen , wenn die Indikatorlinien erneut gekreuzt werden, d.h. wenn val1 nicht gleich val2 ist? So dass zwischen 2 Kreuzungen nur ein Geschäft erlaubt ist, unabhängig von der Anzahl der zu diesem Zeitpunkt geöffneten vorherigen Geschäfte, und natürlich ohne diese zu berühren.

//+------------------------------------------------------------------+
//|                                Sovetnik_RegressionPolynomial.mq4 |
//|                                                      Retabs 2014 |
//|                                                        www.----- |
//+------------------------------------------------------------------+
#property copyright "Retabs 2014"
#property link      "www.-----"
#property version   "1.00"
#property strict
//--- input parameters
input int   StopLoss=60;
input int   TakeProfit=100;
input double   Lots=0.10;
input int   Shift=5;

double SL;
double TP;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double val1=iCustom(NULL,0,"RegressionPolynomial",10000,55,5,2,0,0,0);
   double val2=iCustom(NULL,0,"RegressionPolynomial",10000,55,5,2,0,1,0);
   
   if(val1>val2)
   OrderSend(Symbol(),OP_BUY, Lots,Ask,Shift,Ask-StopLoss*Point,Ask+TakeProfit*Point,"коммент",5371533,0,Red);
   
   if(val1<val2)
   OrderSend(Symbol(),OP_SELL,Lots,Bid,Shift,Bid+StopLoss*Point,Bid-TakeProfit*Point,"коммент",5371533,0,Blue);
  }
//+------------------------------------------------------------------+
 
Retabs:


Bitte beraten Sie mich. Wie kann man die Eröffnung einesneuen Geschäfts nurzulassen , wenn sich die Indikatorlinien erneut kreuzen, d.h. wenn val1 nicht gleich val2 ist? So dass zwischen 2 Kreuzungen nur ein Geschäft erlaubt ist, unabhängig von der Anzahl der zu diesem Zeitpunkt geöffneten vorherigen Geschäfte, und natürlich ohne diese zu berühren.

Wie diese
void OnTick()
  {
//---
   double val10=iCustom(NULL,0,"RegressionPolynomial",10000,55,5,2,0,0,0);
   double val20=iCustom(NULL,0,"RegressionPolynomial",10000,55,5,2,0,1,0);

   double val11=iCustom(NULL,0,"RegressionPolynomial",10000,55,5,2,0,0,1);
   double val21=iCustom(NULL,0,"RegressionPolynomial",10000,55,5,2,0,1,1);
   
   if(val11 < val21 && val10>=val20)
   OrderSend(Symbol(),OP_BUY, Lots,Ask,Shift,Ask-StopLoss*Point,Ask+TakeProfit*Point,"коммент",5371533,0,Red);
   
   if(val11 > val21 && val10<=val20)
   OrderSend(Symbol(),OP_SELL,Lots,Bid,Shift,Bid+StopLoss*Point,Bid-TakeProfit*Point,"коммент",5371533,0,Blue);
  }
 

Ich danke Ihnen für Ihre Antwort. Gerade jetzt habe ich selbst Lösungen gefunden, allerdings nach einem anderen Prinzip. Ich habe meins und deins ausprobiert, es scheint zu stimmen.

//+------------------------------------------------------------------+
//|                                Sovetnik_RegressionPolynomial.mq4 |
//|                                                      Retabs 2014 |
//|                                                        www.----- |
//+------------------------------------------------------------------+
#property copyright "Retabs 2014"
#property link      "www.-----"
#property version   "1.00"
#property strict
//--- input parameters
input int   StopLoss=100;
input int   TakeProfit=160;
input double   Lots=0.10;
input int   Shift=5;

double SL;
double TP;
int    X=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double val1=iCustom(NULL,0,"RegressionPolynomial",10000,55,5,2,0,0,0);
   double val2=iCustom(NULL,0,"RegressionPolynomial",10000,55,5,2,0,1,0);
   

   if (X>0 && val1==val2)
   Ctrl=0;
   
   
    if (X==0  )
      {
      if(val1>val2)
      OrderSend(Symbol(),OP_BUY, Lots,Ask,Shift,Ask-StopLoss*Point,Ask+TakeProfit*Point,"коммент",5371533,0,Red);
      Ctrl=Ctrl+1;
      }
      
    if (X==0 ) 
    
      {if(val1<val2)
      OrderSend(Symbol(),OP_SELL,Lots,Bid,Shift,Bid+StopLoss*Point,Bid-TakeProfit*Point,"коммент",5371533,0,Blue);
      X=X+1;
      }
   
  }
//+------------------------------------------------------------------+

Die Sache ist die: Am visuellen Kreuzungspunkt werden die Linien tatsächlich mehr als einmal gekreuzt, daher wird das Signal mehrmals empfangen und der Expert Advisor hat Zeit, 4-30 Aufträge zu platzieren.

Diesen Nachteil müssen wir beseitigen. Das Einzige, was ich erfunden habe, ist der Durchschnitt früherer Messwerte und der Vergleich mit den aktuellen Werten. Logisch gesehen, ja. Aber wie kann ich das programmatisch machen? Hilfe!

Grund der Beschwerde: