[ARCHIV!] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen - 4. - Seite 40

 
Als Programmierer, der hauptsächlich auf Anfrage schreibt, kann ich sagen: Ein paar Dutzend "zusätzliche" Codezeilen (wenn man versteht, was man da geschrieben hat, und sich darauf verlassen kann) sind niemals überflüssig, zumindest was die Zuverlässigkeit des Systems als Ganzes angeht, bzw. die geringere Anzahl von Rücksendungen und Problemen bei der Kommunikation mit dem Kunden.
 
FAQ:
Als Programmierer, der meist selbst programmiert, sage ich: Ein paar Dutzend "zusätzliche" Codezeilen (wenn man versteht, was man da geschrieben hat und sich darauf verlassen kann) sind niemals überflüssig, zumindest was die Zuverlässigkeit des Systems als Ganzes angeht, und folglich weniger Rückrufe und Probleme im Umgang mit dem Kunden.

Ich verstehe. Ich danke Ihnen. Ich habe die Änderungen bereits vorgenommen.

Trotzdem war es für mich interessant, dass sich herausstellte, dass die Eröffnung auch mit einem "schlampigen" Band erfolgen kann... nicht ganz so, wie es sein sollte, aber Tatsache ist, dass...

 
sergeev:

In den FAQ steht es richtig. Sie können sich nicht auf "Standardwerte" verlassen. Ich erinnere mich nämlich daran, dass 131 Fehler (falsches Los) häufig auftraten, wenn man vor dem Senden einer Bestellung keine Normalisierung durchführte.
Vielleicht haben die MMOs jetzt ihre eigene Standard-Losprüfung auf den Servern durchgeführt, wenn sie einen Auftrag zur Ausführung senden.

Sie sollten daher vor dem Versand immer eine eigene Preis- und Losnormalisierung vornehmen.

Dies ist eine gute Kodierungsregel für Sie und eine Garantie dafür, dass Sie in Zukunft weniger Ärger mit möglichen Problemen haben werden.

Verstanden, danke.

"Da ich mich erinnere, dass 131 Fehler (falsches Los) oft auftraten, wenn ich vor dem Senden der Bestellung keine Normalisierung vornahm" - das ist jetzt nicht mehr der Fall.

Ich habe es versehentlich selbst überprüft, als ich "vergessen" hatte, die Funktion zur Losnormalisierung zu aktivieren.

 
Roman.:

Ich verstehe. Ich danke Ihnen. Ich habe die Änderungen bereits vorgenommen.

Aber es war trotzdem interessant für mich, dass man mit einem "schlampigen" Band eröffnen kann... nicht ganz so, wie es sein sollte, aber Tatsache ist, dass...


Vor der Einführung der fünf Ziffern hat niemand nach der Normalisierung gefragt - alles funktionierte, wie es war.
 
Guten Tag zusammen!
Die Frage lautet wie folgt: Beim ersten Start des Indikators wird er angezeigt
durch Alphabra-Cadabra (Bild 1). Nach weiterem Blättern in der Historie ist alles normal (Abb.2).

Können Sie mir sagen, wo das Problem liegt? Unten, wenn Sie den Code benötigen.

#property indicator_separate_window
#property  indicator_buffers 3
#property  indicator_color1  Tomato
#property  indicator_color2  Red
#property  indicator_color3  Blue
#property indicator_level1 0
#property indicator_levelcolor Gray
#property indicator_levelstyle 2

extern int Period_MA = 5;
extern int MA_Line1 = 13;
extern int MA_Line2 = 34;
 
double Brs[],BrsMA1[],BrsMA2[],MathArr[],MathArr1;
int i=0,j=0;
double hvostUp,hvostDn,rast,S;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexBuffer(0,Brs);
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(1,BrsMA1);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(2,BrsMA2);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexLabel(0,"Bars_");
   SetIndexLabel(1,"Bars_MA1");
   SetIndexLabel(2,"Bars_MA2");
     
   ArrayResize(MathArr,Period_MA);
   
 //---- name for DataWindow and indicator subwindow label
   IndicatorShortName("Bars_MA");

   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit(){return(0);}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+

int start() {  

int ncount=IndicatorCounted();
int limit=Bars-ncount-1;

for (int i=0; i<limit; i++)
{

if (High[i+2]>High[i+1] && Low[i+2]>Low[i+1])
{
hvostUp=(High[i+2]-High[i+1])/Point;
hvostDn=(Low[i+2]-Low[i+1])/Point;
rast=(High[i+2]-Low[i+1])/Point;
S=rast-hvostUp-hvostDn;
}

if (High[i+2]<High[i+1] && Low[i+2]<Low[i+1])
{
hvostUp=(MathAbs(High[i+2]-High[i+1]))/Point;
hvostDn=(MathAbs(Low[i+2]-Low[i+1]))/Point;
rast=(High[i+1]-Low[i+2])/Point;
S=rast-hvostUp-hvostDn;
}

if (High[i+2]>=High[i+1] && Low[i+2]<=Low[i+1])
{
S=(High[i+1]-Low[i+1])/Point;
rast=(High[i+2]-Low[i+2])/Point;
}

if (High[i+2]<=High[i+1] && Low[i+2]>=Low[i+1])
{
S=(High[i+2]-Low[i+2])/Point;
rast=(High[i+1]-Low[i+1])/Point;
}

if (High[i+2]<=Low[i+1] || Low[i+2]>=High[i+1])
{
S=0;
rast=1;
}

if(j>=Period_MA-1)j=0;
j++;
 MathArr[j]=(S/rast*100);
 
Brs[i]=iMAOnArray(MathArr,0,Period_MA,0,0,0);
BrsMA1[i]=iMAOnArray(Brs,0,MA_Line1,0,0,0);
BrsMA2[i]=iMAOnArray(Brs,0,MA_Line2,0,0,0);
}   
  return(0);
}

Abb. 1

Abb. 2

Dateien:
bars_ma_1.mq4  4 kb
 
Es wäre schön, diesen Prozess zu automatisieren, d.h. diese Aufgabe im Voraus zu erledigen, anstatt darauf zu warten, dass der Gewinn ausgelöst wird. Ich habe alle geposteten Skripte durchgesehen und ein ähnliches gefunden, aber sie sagen, dass es nicht funktioniert. Oder lassen Sie uns eine Funktion erstellen, die, wenn ein TP oder SL auslöst, das Skript alle gerade geschlossenen Aufträge öffnet, nur in einer ausstehenden Form. Viele Händler wissen, was sie in einer bestimmten Situation tun werden, und es ist sehr praktisch, dies zu tun, bevor die Situation eintritt.
 
sting-igor:
Es wäre schön, diesen Prozess zu automatisieren, d.h. diese Aufgabe im Voraus zu erledigen, anstatt darauf zu warten, dass der Gewinn ausgelöst wird. Ich habe alle geposteten Skripte durchgesehen und ein ähnliches gefunden, aber sie sagen, dass es nicht funktioniert. Oder lassen Sie uns eine Funktion erstellen, die, wenn ein TP oder SL auslöst, das Skript alle gerade geschlossenen Aufträge öffnet, nur in einer ausstehenden Form. Viele Händler wissen, was sie in einer bestimmten Situation tun werden, und es ist sehr praktisch, dies zu tun, bevor die Situation eintritt.

Hier sind Sie richtig:Arbeit
 
Fox_RM:
Guten Tag zusammen!
Die Frage lautet wie folgt: Beim ersten Start des Indikators wird Folgendes angezeigt
durch Alphabra-Cadabra (Bild 1). Nach weiterem Blättern in der Historie ist alles normal (Abb.2).

Können Sie mir sagen, wo das Problem liegt? Unten, wenn Sie den Code benötigen.

Abb. 1

Abb. 2


Es tut mir leid, dass die Frage ein zweites Mal gestellt wurde.

Vergleichen Sie Ihre Variante mit dieser

Es funktioniert immer noch nicht richtig, aber es ist besser

Den Indikator erneut bearbeitet

Dateien:
 
FAQ:

Sie gehen hier entlang:Arbeit
Hat denn niemand eine?
 
sting-igor:
Hat denn niemand einen?


DigCode Basis

Wenn Sie keine finden können, bestellen Sie eine.