[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 10

 
Und eine weitere Frage betraf den Betrieb der Bibliothek.
Ich habe die Bibliotheksdatei erstellt und kompiliert, alles lief ohne Fehler.
Ich habe die Funktion in den Indikatorcode importiert und kompiliert, es ist auch alles in Ordnung.
Wenn ich den Indikator starte, wird die zu importierende Funktion nicht ausgeführt, wenn ich

Indikatorcode, alles funktioniert. Hier ist der Bibliothekscode.

//+------------------------------------------------------------------+
//|                                                         lib1.mq4 |
//|                                         Copyright © 2012, Fox.RM |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, Fox.RM"
#property link      "http://www.metaquotes.net"
#property library
//+------------------------------------------------------------------+
//| My function                                                      |
//+------------------------------------------------------------------+
double Sredn(double ArrSr[])
{
double a=1,c,step=1/20;
for (int i=0;i<=20;i++)
{if (ArrSr[i]==0){a*=1;}else{a*=MathAbs(ArrSr[i]);}}
c=MathPow(a, step);
  return(c);
}
//+------------------------------------------------------------------+

Dies ist ein Aufruf im Indikatorcode:

#import "lib1.ex4"
    double Sredn(double& ArrSr[]);
    void SetText(string name, string name2, string text, string text2, color c, 
int size);
#import

 
Fox_RM:
Guten Tag an alle!
Ich habe beschlossen, den Code meines Indikators für einen Expert Advisor umzuschreiben, um die
Ich habe beschlossen, den Code meines Indikators zu ändern, um die Verarbeitung seiner Signale zu verfolgen.
Beim Kompilieren treten keine Fehler auf, und im Strategy Tester funktioniert es ohne Fehler.

Ich weiß nicht, wie man es benutzt.

Z.I. Ich bin sicher, es gibt eine Menge Fehler und dumm, bitte schießen Sie Platzpatronen.

int counted_bars=IndicatorCounted(); 

Sie schreiben selbst, dass Sie einen Expert Advisor haben und die Funktion für einen Indikator ist.

Zählen Sie die Anzahl der Takte, die Sie zwangsweise haben wollen, und nicht mehr.


Zweitens: Fügen Sie eine Prüfung hinzu, ob bereits eine Eröffnung durch dieses Signal stattgefunden hat, sonst erhalten Sie jeden Tick einen neuen Auftrag.

Drittens: Prüfen Sie die iCustom-Funktion

 
ilunga:

Sie schreiben selbst, dass Sie einen Expert Advisor haben, und die Funktion ist für einen Indikator.

Zählen Sie die Anzahl der Takte, die Sie zwangsweise haben wollen, und nicht mehr.

Und wie erzwingen Sie die Berechnung?
 
Fox_RM:
Guten Tag an alle!
Ich habe beschlossen, den Code meines Indikators für einen Expert Advisor umzuschreiben, um die
Ich habe beschlossen, den Code meines Indikators zu ändern, um die Funktionsweise seiner Signale zu verfolgen.
Beim Kompilieren treten keine Fehler auf, und im Strategy Tester funktioniert es ohne Fehler.

Ich weiß nicht, wie man es benutzt.

Z.I. Ich bin sicher, dass es eine Menge Fehler und Dummheiten gibt, bitte schießen Sie mit Platzpatronen.


Eröffnungspreis
if (Sredn(TP_UP)>=2.5)OrderSend(Symbol(),OP_SELL,0.1,Close[i],2,50,20);
 if (Sredn(TP_DN)>=2.0)OrderSend(Symbol(),OP_BUY,0.1,Close[i],2,50,20);
 
Fox_RM:
Wie kann man eine Zählung erzwingen?
Nur das Signal auf dem 0. Balken ist für Expert Advisors und die Eröffnung von Trades wichtig, oder? Verkürzen Sie also den Berechnungszyklus von der Anzahl der Takte auf die Anzahl, die für diese Berechnung notwendig ist
 
r772ra:

Eröffnungspreis

D.h. diese Bedingung für die Neuberechnung der Balken verwenden?

Aber in meinem Indikator werden bei jedem Tick die Arrays TP_UP und TP_DN berechnet.Deshalb sollten wir sie zunächst einmal berechnen.

 
ilunga:
Für Ihren Expert Advisor und zum Eröffnen von Trades ist nur das Signal am 0. Balken wichtig, oder? Verkürzen Sie also den Berechnungszyklus von der Anzahl der Takte auf die Anzahl, die für diese Berechnung benötigt wird

Ich habe versucht, dort mit der Funktion NewBar() Aufträge auf einem neuen Balken zu eröffnen. Wenn es zu diesem Zweck verwendet wird?

Zum Beispiel if (NewBar())i++; So etwas wie dies.

 
ilunga:
Für Ihren Expert Advisor und die Handelseröffnung ist nur das Signal am 0. Balken von Bedeutung, nicht wahr? Kürzen Sie also den Berechnungszyklus von der Anzahl der Takte auf die für diese Berechnung erforderliche Anzahl
Und ich verstehe immer noch nicht ganz, was der grundlegende Unterschied zwischen diesen beiden Berechnungen für einen Expert Advisor ist;(
 
Fox_RM:
Und eine weitere Frage betraf den Betrieb der Bibliothek.
Ich habe die Bibliotheksdatei erstellt und kompiliert, alles lief ohne Fehler.
Ich habe die Funktion in den Indikatorcode importiert und kompiliert, es ist auch alles in Ordnung.
Wenn ich den Indikator starte, wird die zu importierende Funktion nicht ausgeführt, wenn ich

Indikatorcode, alles funktioniert. Hier ist der Bibliothekscode.

Dies ist ein Aufruf im Indikatorcode:

Vielleicht haben Sie das Array im Indikator init() nicht richtig vorbereitet? Habe ich Sie richtig verstanden - die Importfunktion hat dort nicht funktioniert?
 
TarasBY:
Vielleicht wurde das Array im Indikator init() nicht korrekt vorbereitet? Habe ich Sie richtig verstanden - die Importfunktion hat dort nicht funktioniert?
Nein, das hat es nicht. Ich habe es überprüft, alles scheint korrekt zu sein. Und warum funktioniert es außerdem korrekt, wenn es im Programm verwendet wird?
Grund der Beschwerde: