Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 197

 
Aleksandr Verkhozin:


Ich habe mir das Video über die Arbeit mit externen Indikatoren angesehen und einen kleinen Code geschrieben, um die Werte der Puffer im Tester zu sehen:

void OnTick()

{

double Buf1=iCustom(NULL,0, "Shved-Supply-and-Demand-e600",0,1);

double Buf2=iCustom(NULL,0, "Shved-Supply-and-Demand-e600",1,1);

double Buf3=iCustom(NULL,0, "Shved-Supply-and-Demand-e600",2,1);

double Buf4=iCustom(NULL,0, "Shved-Supply-and-Demand-e600",3,1);

Comment("Buf1=",Buf1,"\n", "Buf2=",Buf2,"\n","Buf3=",Buf3,"\n","Buf4=",Buf4);

}

Die Zonen erscheinen und verschwinden im Visualisierungsmodus. Aber der Wert der Puffer ist ohnehin immer Null. Gibt es keine Möglichkeit, diese Zonen im Kodex zu formalisieren?

Vielleicht gibt es eine andere Funktion als iCustom, die für solche Indikatoren geeignet wäre? Vielleicht hat jemand Eulen mit solchen Indikatoren geschrieben?


Es gibt keine Möglichkeit, Indikatorpuffer zu verwenden, da sie fraktale Werte speichern.

In den Indikatoreigenschaften fractals_show = true; Sie werden sie auf dem Diagramm sehen

Zonen, grafisches Objekt OBJ_RECTANGLE

Sie können den Wert dieser Zonen mit


ObjectGet

Gibt den Wert einer angegebenen Objekteigenschaft zurück.

doubleObjectGet(
stringobject_name,// Objektname
intindex// Kennung der Eigenschaft
);


Du gehst alle Objekte durch, findest das richtige und findest den Weg.

 int obj_total=ObjectsTotal(); 
  string name; 
  for(int i=0;i<obj_total;i++) 
    { 
     name = ObjectName(i);
     Print(i," - объект ",name); 
    }

Ungefähr sieht es so aus

 
Artyom Trishkin:
In diesem Thread habe ich eine Vorlage für ein Schleppnetz gepostet, das den an es gesendeten Indikatorwert für seine Berechnungen verwendet. Schlagen Sie es nach, seien Sie nicht faul.

Ich benötige einen korrekten Trailing-Stop für offene Positionen, von denen es letztendlich 1 oder 3 gibt und die durch einen Step-Wert verbunden sind. Vielleicht ist es aber auch einfacher, alle Aufträge mit der Funktion CalculateProfit() zu verfolgen. Nun kann ich nicht herausfinden, wie der Indikatorwert in diesem Auftragsabwicklungsschema mit der Nachverfolgung des Gesamtgewinns der offenen Positionen in Verbindung gebracht werden kann.
 
geratdc:

Ich benötige genau den richtigen Trailing-Stop für den Gewinn offener Positionen, von denen es letztlich 1 oder 3 gibt und die durch den Step-Wert gebunden sind, d.h. es handelt sich um ein Stop-and-Reverse-System. Vielleicht ist es aber auch einfacher, alle Aufträge mit der Funktion CalculateProfit() zu verfolgen. Nun kann ich nicht herausfinden, wie der Indikatorwert in diesem Auftragsabwicklungsschema mit der Nachverfolgung des Gesamtgewinns der offenen Positionen in Verbindung gebracht werden kann.

Der Indikator, d.h. sein Wert, kann ein anderer Wert sein als z.B. der MAK des gewünschten Balkens. Der Wert des für die Verschiebung des Gesamtstopps der Positionen berechneten Preises kann an das Schleppnetz gesendet werden.

Es ist jedoch nicht klar, welche Art von Schleppnetz Sie auf offenen Positionen haben - was und wann genau es schleppt.

 
geratdc: Ich suche die richtige Schleppnetzfischerei für Profit

Alle Wanderwege sind hier. Aus der Datei TrailingFuncLib.mq4 nehme ich die Funktion TrailingStairs - STANDARD-STANDARD Trailing. Jeder Auftrag wird unabhängig verfolgt.

 
Artyom Trishkin:

Der Indikator, d.h. sein Wert, kann ein anderer Wert sein als z.B. der MAK des gewünschten Balkens. Der Wert des für die Verschiebung des Gesamtstopps der Positionen berechneten Preises kann an das Schleppnetz gesendet werden.

Es ist jedoch nicht klar, welche Art von Schleppnetz Sie auf offenen Positionen haben - was und wann genau es schleppt.


Im Prinzip ja, mir wurde einmal ein Schleppnetz nach Durchschnittspreis angeboten. Alles scheint logisch, aber was bedeutet das - Durchschnittspreis? Ist es (Preis für 1 Auftrag + Step*Point + (Preis für 2 Aufträge + Step*Point) + Preis für 3 Aufträge) / 3? Es handelt sich also um eine Menge von Parametern - Sie müssen die offenen Positionen und den aktuellen Preis jeder Position abrufen. Wie auch immer, dieser Trailing-Stop stört mich weniger als die Tatsache, dass der EA während der Tests an Wert verliert. Was wird beim realen Handel passieren? Es kann eingestellt werden, aber wir wissen nicht, welche Wendung das Währungsdiagramm in einer Woche oder in einem Monat nehmen wird, daher gibt es eine Schwachstelle - wenn 3 Aufträge eröffnet werden und es eine Gegenbewegung auf dem Markt gibt, wird der Expert Advisor aufgrund eines Drawdowns scheitern. Wir sollten also darüber nachdenken, den Drawdown zu begrenzen und die Positionen zu schließen, bevor die Einlage auf Null gesetzt wird. Um es kurz zu machen, es ist Fox, der mich am meisten interessiert)))
 

Ich kann es selbst nicht herausfinden, und ich habe auch keine spezifischen Informationen gefunden(( Die Idee ist, die Preisgrenzen im Code zu markieren, die nächstgelegenen Zonen, die vom Indikator gebildet werden. Ich habe angefangen, Code zu schreiben, aber ich bin verwirrt und weiß nicht, ob ich es richtig mache oder nicht. Ich weiß nicht, ob ich es richtig oder falsch mache.

 int obj_total=ObjectsTotal();       

  string name; 

  for(int i=0;i<obj_total;i++)

  {

  name = ObjectName(i); 

  if(ObjectType(name)==OBJ_RECTANGLE)

  {

    pr1=ObjectGet(name,OBJPROP_PRICE1);// верхняя цена зоны

    pr2=ObjectGet(name,OBJPROP_PRICE2);// нижняя цена зоны

  }  

  }  

Und warum ist mein Code hier nicht, wie im Original, mehrfarbig und Linien nebeneinander eingefügt?
 
-Aleks-:

Ich habe es herausgefunden - anscheinend hatte das Terminal nicht genug Speicherplatz - ich habe ein paar Diagramme geschlossen und es hat funktioniert.

Vielen Dank - die Berechnungen finden tatsächlich statt.

Und wenn die Variablen nicht vom Typ int, sondern bool sind, was ist dann zu tun?


//+------------------------------------------------------------------+
//|                                                       Decode.mq4 |
//|                                            Copyright 2017, Vinin |
//|                                             http://vinin.ucoz.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, Vinin"
#property link      "http://vinin.ucoz.ru"
#property version   "1.00"
#property strict
#property script_show_inputs
//--- input parameters
input int N=162;  //0..162
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   for (int n=0;n<N;n++)
   {
      int tmp=n;
      int a=(int) MathMod(tmp,3);
      tmp=(tmp-a)/3;
      int b=(int) MathMod(tmp,3);
      tmp=(tmp-b)/3;
      bool c= (bool) MathMod(tmp,2);
      tmp=(tmp-c)/2;
      int d=tmp;
   
      Print("N=",n,"; A=", 2+2*a, "; B=", b+1,"; C=",c,"; D=", 16+4*d);
   }
  }
//+------------------------------------------------------------------+
 
Victor Nikolaev:

Es tut mir leid, aber unterscheidet sich dieser Code vom letzten?
 
-Aleks-:

Es tut mir leid, aber unterscheidet sich dieser Code vom letzten?


Die Unterschiede sind minimal. Eine der Variablen ist logisch.

Die Ausgabe lautet true oder false

 
Victor Nikolaev:


Die Unterschiede sind minimal. Eine der Variablen ist logisch.

Die Ausgabe lautet true oder false

Sind Sie sicher, dass Sie sich den letzten von Ihnen geposteten Code angesehen haben? Wenn ja, brauche ich eine Pause... Ich danke Ihnen.
Grund der Beschwerde: