Hilfe bei der Codierung - Seite 61

 
mladen:
Dieser Indikator verwendet "Schlangenkraft" (zentrierte TMA) für die Glättung und es kann nicht geändert werden, um nicht neu zu berechnen und gleich zu bleiben. Die "non-repainting" (end-pointed) Version der zentrierten TMA ist eine einfache LWMA, aber erwarten Sie nicht, um die gleichen Ergebnisse mit ihm als mit der zentrierten TMA haben. Etwas mehr über zentrierte TMA können Sie hier lesen: https: //www.mql5.com/en/forum/181241 Was die Änderung oder Verbesserung dieses Codes angeht: Die Basis ist ein dekompilierter Code. Ich bezweifle, dass jemand einen dekompilierten Code ändern wird.

Vielen Dank Mladen für die Info es war sehr hilfreich

 

Hallo,

ich habe diesen Indikator aus dem Internet heruntergeladen, aber wenn ich ihn anhänge, erscheinen die separaten Fenster mit 2 Ebenen, aber die Balken erscheinen nicht.

Können Sie mir helfen, dies zu beheben?

Ich danke Ihnen

oszillator.mq4

Dateien:
 

dasio,

Das ist nur ein anderer Sonnenwindindikator (jemand hat versucht, etwas daran zu ändern).

dasio:
Hallo!

Ich habe diesen Indikator aus dem Internet heruntergeladen, aber wenn ich ihn anhänge, erscheinen die separaten Fenster mit 2 Ebenen, aber die Balken erscheinen nicht.

Können Sie mir helfen, das zu beheben?

Ich danke Ihnen

oszillator.mq4
 
mladen:
dasio, Das ist nur ein anderer Sonnenwindindikator (jemand hat versucht, etwas daran zu ändern).

Ich danke Ihnen. Aber wenn ich den Backtest starte, erscheinen die Balken. Wie kann das möglich sein?

Ich danke Ihnen

 

dasio

Überprüfen Sie die Registerkarte "Experten" und "Journal", ob dort ein Fehler angezeigt wird. Bei meinen Brokerdaten funktioniert es, daher kann ich nicht sagen, was bei Ihren Brokerdaten passiert (vielleicht eine Nullteilung oder etwas Ähnliches).

dasio:
Danke für den Hinweis. Aber wenn ich den Backtest starte, erscheinen die Balken. Wie kann das möglich sein? danke
 

Mladen ,

Wenn Sie einen Code schreiben oder einen Blick in den Code einer anderen Person werfen, wie beurteilen Sie die Qualität des Codes?Wenn Sie einen Code schreiben, wie testen Sie die Robustheit des Codes?Danke.

 

:)

Meine zwei Hauptkriterien sind:

- Einfachheit (wenn ein Code einfach ist, lässt er sich leichter entwickeln, verbessern und debuggen)

- Ordnungsmäßigkeit (wer glaubt, dass man einen Code einfach auf einen Haufen werfen kann und er funktioniert, hat sich seinen eigenen Code nach einer gewissen Zeit noch nie angesehen. Außerdem ist das Debuggen eines unaufgeräumten Codes eine Geschichte für sich)

Wenn diese 2 Punkte erfüllt sind, dann schaue ich mir den Code ein zweites Mal an und erst dann "lese" ich ihn, aber dann ist es eine sehr lange Geschichte, was man tun kann, um Qualität zu erreichen - ich denke, der Prozess ist viel subjektiver als objektiv ...

nevar:
Mladen, wenn Sie einen Code schreiben oder einen Blick in den Code eines anderen werfen, wie beurteilen Sie dann die Qualität des Codes?Wenn Sie einen Code schreiben, wie testen Sie die Robustheit des Codes?Danke.
 
drofwarc:
Hallo,

Ich versuche, einen Indikator anzupassen, der iFractals aufruft, und stattdessen einen benutzerdefinierten Fraktal-Indikator aufzurufen, der eine einstellbare Periodenfunktion hat. Der Indikator, den ich anzupassen versuche, ist beigefügt. Er heißt "closesrelativejtozpreviousofractal".

closesrelativejtozpreviousofractal.mq4

Der Code zeichnet einen Aufwärtspfeil, wenn der Preis das vorherige Fraktalhoch durchbricht, und einen Abwärtspfeil für den umgekehrten Fall.

Der Indikator, den ich mit iCustom aufzurufen versuche, ist ebenfalls beigefügt. Er heißt "Fraktale - anpassbar".

fraktal_-_anpassbar.mq4

Im Folgenden versuche ich, den ursprünglichen Indikator so zu ändern, dass er Fractals - adjustable aufruft. Der Code zeichnet erfolgreich Punkte auf den hohen und niedrigen Fraktalen und die Fraktalperiode ist einstellbar, wie ich es wollte. Das Problem liegt bei den Pfeilen, die die Durchbrüche der vorherigen Höchst- und Tiefststände der Fraktale darstellen sollen. Ich kann sie nicht korrekt darstellen lassen.

Für jede Hilfe wäre ich Ihnen sehr dankbar.

Mit freundlichen Grüßen,

drofwarc

int start()

{

int counted_bars = IndicatorCounted();

if (counted_bars > 0) counted_bars--;

int limit = Bars - counted_bars;

for(int i=limit; i>0; i--)

{

UpFractalsBuffer=iCustom(NULL,0,"Fractal - Adjustable", dist, arrowPosition, 0, i); //-Draw the high fractal

if (UpFractalsBuffer!=0) //-If it is available, put in the array of fractals for higher levels

HighLevel=iCustom(NULL,0,"Fractal - Adjustable", dist, arrowPosition, 2, i);

if(Close>HighLevel)

UpArrowBuffer=(Low-(PipBuffer)*Poin); //Arrows

DownFractalsBuffer=iCustom(NULL,0,"Fractal - Adjustable", dist, arrowPosition, 1, i); //-Draw the low fractal

if(DownFractalsBuffer!=0) //- If it is available put in the array of lower levels

LowLevel=iCustom(NULL,0,"Fractal - Adjustable", dist, arrowPosition, 3, i);

if(Close<LowLevel)

DownArrowBuffer=(High+(PipBuffer)*Poin);//Arrows

}

return(0);

}

Ich habe das Problem schließlich gelöst. Das Problem war eine Pufferverwechslung.

 

Code, um einen Indikator n Bars zwischen Signalen überspringen zu lassen

Hallo zusammen,

Ich weiß, dass es möglich ist, einen EA zwischen den Trades pausieren zu lassen, entweder durch die Verwendung von Sleep() oder durch die Aufzeichnung eines Zeitstempels und das Warten von n Sekunden nach dem Zeitstempel, bevor ein weiteres Signal zugelassen wird.

Aber ist es möglich, das Gleiche für einen Indikator zu tun.

Ich möchte zum Beispiel, dass ein Indikator, der Pfeile beim Kreuzen zweier gleitender Durchschnitte anzeigt, n Balken nach dem Kreuzen überspringt, bevor er einen weiteren Pfeil anzeigt. Mit anderen Worten: Wenn ein weiteres Kreuz auftritt, bevor n Balken vergangen sind, würde der Indikator das Kreuz ignorieren und keinen Pfeil zeichnen.

Ich habe ausgiebig nach einem Indikator gesucht, der dies tut, aber ich hatte kein Glück.

Könnte jemand entweder einen Indikator posten, der diese Funktion bereits hat, damit ich den Code studieren kann? Oder könnte mir jemand ein Beispiel für einen Code geben, der für diesen Vorschlag funktioniert, damit ich versuchen kann, ihn zu implementieren.

Vielen Dank!

drofwarc

 

es kann nicht normal angezeigt werden, kann mir jemand helfen, es zu beheben?

#property indicator_separate_window

#Eigenschaft indicator_buffers 1

#property indicator_color1 Rot

#property indikator_maximum 100

#property indikator_level1 70

#eigenschaft indicator_level2 50

#Eigenschaft indicator_level3 30

#Eigenschaft indicator_minimum 0

//---- Eingabeparameter

extern int rsiperiod = 14 ;

extern int Kurzfristige Periode = 5 ;

extern int Middleperiod = 8;

extern int Longperiod = 13;

extern int mamode = 2 ;

//---- Puffer

double RSI[];

double ShortRSI[];

double MiddleRSI[];

double LongRSI[];

double SMRSI[];

int period ;

//+------------------------------------------------------------------+

//| Benutzerdefinierte Indikator-Initialisierungsfunktion |

//+------------------------------------------------------------------+

int init()

{

//---- Indikatoren

IndicatorBuffers(5);

SetIndexPuffer(0,SMRSI);

SetIndexPuffer(1,RSI);

SetIndexPuffer(2,ShortRSI);

SetIndexBuffer(3,MiddleRSI);

SetIndexBuffer(4,LongRSI);

//---- Name für DataWindow und Bezeichnung des Indikator-Unterfensters

IndicatorShortName("SMRSI("+rsiperiod+", "+Shortperiod+", "+Middleperiod+", "+Longperiod +", "+mamode+")");

SetIndexDrawBegin(0,rsiperiod+Longperiod);

period=Shortperiod+Middleperiod+Longperiod;

return(0);

}

//+------------------------------------------------------------------+

//| Benutzerdefinierte Indikator-Iterationsfunktion |

//+------------------------------------------------------------------+

int start()

{

int gezählte_Balken=IndicatorCounted();

int i,limit;

if(gezählte_Balken<0) return(-1);

if(gezählte_Balken>0) gezählte_Balken--;

limit = Balken-gezählte_Balken;

for( i=limit; i>=0; i--) RSI=iRSI(NULL,0,rsiperiod,0,i);

for( i=limit; i>=0; i--) ShortRSI=iMAOnArray(RSI,0,Shortperiod,0,mamode,i);

for( i=limit; i>=0; i--) MiddleRSI=iMAOnArray(RSI,0,Middleperiod,0,mamode,i);

for( i=limit; i>=0; i--) LongRSI=iMAOnArray(RSI,0,Longperiod,0,mamode,i);

for( i=limit; i>=0; i--) { if(period!=0) SMRSI=(Shortperiod/period)*ShortRSI+(Middleperiod/period)*MiddleRSI+(Longperiod/period)*LongRSI;}

return(0);

}

//+------------------------------------------------------------------+

Grund der Beschwerde: