Hilfe bei der Codierung - Seite 73

 

Hallo,

ich hoffe, jemand kann mir helfen, einen Indikator so zu gestalten, dass er das tut, was ich möchte.

Ich habe einen Indikator, der die Länge des Körpers / oder Gesamtlänge der Kerze, plus die Zeit der Kerze bar zeigt.

Das einzige Problem ist, dass er nicht für 5-stellige Broker geeignet ist; Zeit und Länge werden übereinander projiziert, während er in Digit 4 perfekt ist.

Wäre sehr nett, wenn jemand in der Lage und bereit ist, den Code zu ändern.

Vielen Dank im Voraus,

Mit freundlichen Grüßen,

Ben

 

Vermisse etwas Einfaches

Ich habe auf einem TL-Filter für eine MA-Kreuz EA, jede MA-Kreuz EA aber Studieren es auf die beigefügte, wie es eine einfache ist gearbeitet.

Grundsätzlich der TL-Rechner gibt Signale 1, 2 oder 3 je TL Richtung und Preis Kreuz und eine böse "Null-Teilung", wenn die TL nicht geneigt genug ist.

Ich lerne Kodierung und lesen alle Coders' Guru PDF's und so viel wie von MQL4 Forum wie mein Gehirn nehmen kann, aber wie ich bin langsamer Lerner und neuere codiert etwas bis vor 3 Wochen....

Auf der Suche nach einigen Hinweisen....

Problem: Ich kann nicht herausfinden, wie man den Wert "TLfilter", der 3 ist , wenn der Preis nicht die TL berührt hat und sein OK, um einen Kauf zu tun, aufruft.

Ich habe versucht, es in der Buy / Sell Kriterien als &&TTLfilter = 3!, und alle anderen Methoden, die ich herausfinden kann, aber alles, was ich dann bekommen ist keine Geschäfte überhaupt stecken.

Auch versucht, es in der OrderSelect-Schleife zu bekommen, aber kein Glück.

Ich suche nur nach Hinweisen, was ich übersehe.

Wenn jemand daran interessiert ist, einen Blick zu werfen.

Zeichnen Sie eine TL auf dem Chart, bevor Sie den EA anhängen, und nennen Sie sie t6

Dekommentieren Sie die //--- Print ("TLfilter = ",TLfilter); return(TLfilter); am Ende des TL-Abschnitts, um zu sehen, was er tut.

Mods zu diesem EA sind durch die Doppelzeile ======= 1 2 und 3 gekennzeichnet.

Edit: Keiner meiner Codes in dieser Datei, da ich sicherstellen wollte, dass sie so sauber wie möglich ist x_trader_v2_tlmod.mq4

Dateien:
 

Multi-Indikator

Hallo!

Jemand verwenden / haben einen multiindicator wie diese?

Multi Gleitender Durchschnitt - MQL4 Code Base

Wenn Sie unten sehen, es sieht aus wie "Freiheit bar" Indikator... so... Ich möchte diese Eingabe-Indikatoren zu ändern, nicht wollen, verwenden 4ema.... Ich möchte 1ema (2 Kreuzung), CCI, STOCH und SAR

Ich habe einige Multi-Indikatoren gefunden, aber sie haben keine Geschichte wie diese

Kann jemand helfen und den Code ändern?

 

Hallo Pearl1,

Von dem, was ich sehen kann, kann es getan werden, müssen Sie nur den Aufruf ersetzen die anderen 3 gleitenden Durchschnitte mit den Indikatoren, die Sie verwenden möchten, zusammen mit den Bedingungen zu signalisieren eingeben.

 

Ich habe etwas versucht, aber keine Fortschritte

 

Warum postest du nicht, was du bisher kodiert hast und erklärst, was du zu tun versuchst. Auf diese Weise kann dir jemand helfen.

pearl1:
Ich habe etwas versucht, aber keine Fortschritte gemacht
 

int start()

{

//----

int Counted.Bars = IndicatorCounted(), i;

if(Counted.Bars<0) return(-1);

if(Gezählte.Balken>0) Gezählte.Balken--;

int Limit = Bars - Counted.Bars;

color Text.Farbe.1, Text.Farbe.2, Text.Farbe.3, Text.Farbe.4;

//----

for(i=Limit; i>=0; i--)

{

MA0.Buffer.0 = iMA(NULL, 0, 1, 0, MODE_SMA, PRICE_MEDIAN, i); Ich sauge hier.... er immer mit diesem MA0.Buffer.0 vergleichen....so, wenn ich RSI, Stoch,... verwenden muss dieser Puffer für alle Elemente erstellen? RSI0.Buffer.0 für RSI?

//----

MA1.Buffer.0 = iMA(NULL, 0, MA1.Period, 0, MA1.Mode, MA1.Price, i);

MA1.Puffer.1 = iMA(NULL, 0, MA1.Periode, 0, MA1.Modus, MA1.Preis, i+1);

MA2.Puffer.0 = iMA(NULL, 0, MA2.Periode, 0, MA2.Modus, MA2.Preis, i);

MA2.Puffer.1 = iMA(NULL, 0, MA2.Periode, 0, MA2.Modus, MA2.Preis, i+1);

MA3.Puffer.0 = iMA(NULL, 0, MA3.Periode, 0, MA3.Modus, MA3.Preis, i);

MA3.Puffer.1 = iMA(NULL, 0, MA3.Periode, 0, MA3.Modus, MA3.Preis, i+1);

MA4.Puffer.0 = iMA(NULL, 0, MA4.Periode, 0, MA4.Modus, MA4.Preis, i);

MA4.Puffer.1 = iMA(NULL, 0, MA4.Periode, 0, MA4.Modus, MA4.Preis, i+1);

MA1.UP.Buffer = EMPTY_VALUE;

MA1.DN.Puffer = EMPTY_VALUE;

if(MA1.Puffer.0 < MA1.Puffer.1) MA1.DN.Puffer = Lücke * P1.Position + 1.0;

sonst MA1.UP.Puffer = Lücke * P1.Position + 1.0;

if(MA1.Puffer.0 < MA0.Puffer.0) Text.Farbe.1 = Text.Farbe.Auf;

sonst Text.Farbe.1 = Text.Farbe.Ab;

//----

MA2.UP.Buffer = EMPTY_VALUE;

MA2.DN.Puffer = EMPTY_VALUE;

if(MA2.Puffer.0 < MA2.Puffer.1) MA2.DN.Puffer = Lücke * P2.Position + 1.0;

sonst MA2.UP.Puffer = Lücke * P2.Position + 1.0;

if(MA2.Puffer.0 < MA0.Puffer.0) Text.Farbe.2 = Text.Farbe.Auf;

sonst Text.Farbe.2 = Text.Farbe.Ab;

//----

MA3.UP.Buffer = EMPTY_VALUE;

MA3.DN.Puffer = EMPTY_VALUE;

if(MA3.Puffer.0 < MA3.Puffer.1) MA3.DN.Puffer = Lücke * P3.Position + 1.0;

sonst MA3.UP.Puffer = Lücke * P3.Position + 1.0;

if(MA3.Puffer.0 < MA0.Puffer.0) Text.Farbe.3 = Text.Farbe.Auf;

sonst Text.Farbe.3 = Text.Farbe.Ab;

//----

MA4.UP.Buffer = EMPTY_VALUE;

MA4.DN.Puffer = EMPTY_VALUE;

if(MA4.Puffer.0 < MA4.Puffer.1) MA4.DN.Puffer = Lücke * P4.Position + 1.0;

sonst MA4.UP.Puffer = Lücke * P4.Position + 1.0;

if(MA4.Puffer.0 < MA0.Puffer.0) Text.Farbe.4 = Text.Farbe.Auf;

sonst Text.Farbe.4 = Text.Farbe.Ab;

//----

//----

LabelSet(Text.Farbe.1, Text.Farbe.2, Text.Farbe.3, Text.Farbe.4);

//----

}

//----

return(0);

 

Sie müssen nicht für alle Elemente einen Puffer anlegen.

MA1.Puffer.0, MA1.Puffer.1, .... sind keine Puffer, sondern einfache Variablen. Sie können sie für alles verwenden, ohne ihre Namen zu ändern. Wenn Sie sie z.B. für rsi verwenden wollen, können Sie den Code in etwas wie dieses ändern:

MA1.Buffer.0 = iRSI(NULL, 0, RSI1.Period, RSI1.Price, i); MA1.Buffer.1 = iRSI(NULL, 0, RSI1.Period, RSI1.Price, i+1);

ohne dass Sie die Namen der Variablen ändern müssen, und es wird funktionieren (definieren Sie einfach RSI1.Period und RSI1.Price in diesem Fall als externe Parameter)

pearl1:
int start()

{

//----

int Counted.Bars = IndicatorCounted(), i;

if(Counted.Bars<0) return(-1);

if(Gezählte.Balken>0) Gezählte.Balken--;

int Limit = Bars - Counted.Bars;

color Text.Farbe.1, Text.Farbe.2, Text.Farbe.3, Text.Farbe.4;

//----

for(i=Limit; i>=0; i--)

{

MA0.Buffer.0 = iMA(NULL, 0, 1, 0, MODE_SMA, PRICE_MEDIAN, i); Ich sauge hier.... er immer mit diesem MA0.Buffer.0 vergleichen....so, wenn ich RSI, Stoch,... verwenden muss dieser Puffer für alle Elemente erstellen? RSI0.Buffer.0 für RSI?

//----

MA1.Buffer.0 = iMA(NULL, 0, MA1.Period, 0, MA1.Mode, MA1.Price, i);

MA1.Puffer.1 = iMA(NULL, 0, MA1.Periode, 0, MA1.Modus, MA1.Preis, i+1);

MA2.Puffer.0 = iMA(NULL, 0, MA2.Periode, 0, MA2.Modus, MA2.Preis, i);

MA2.Puffer.1 = iMA(NULL, 0, MA2.Periode, 0, MA2.Modus, MA2.Preis, i+1);

MA3.Puffer.0 = iMA(NULL, 0, MA3.Periode, 0, MA3.Modus, MA3.Preis, i);

MA3.Puffer.1 = iMA(NULL, 0, MA3.Periode, 0, MA3.Modus, MA3.Preis, i+1);

MA4.Puffer.0 = iMA(NULL, 0, MA4.Periode, 0, MA4.Modus, MA4.Preis, i);

MA4.Puffer.1 = iMA(NULL, 0, MA4.Periode, 0, MA4.Modus, MA4.Preis, i+1);

MA1.UP.Buffer = EMPTY_VALUE;

MA1.DN.Puffer = EMPTY_VALUE;

if(MA1.Puffer.0 < MA1.Puffer.1) MA1.DN.Puffer = Lücke * P1.Position + 1.0;

sonst MA1.UP.Puffer = Lücke * P1.Position + 1.0;

if(MA1.Puffer.0 < MA0.Puffer.0) Text.Farbe.1 = Text.Farbe.Auf;

sonst Text.Farbe.1 = Text.Farbe.Ab;

//----

MA2.UP.Buffer = EMPTY_VALUE;

MA2.DN.Puffer = EMPTY_VALUE;

if(MA2.Puffer.0 < MA2.Puffer.1) MA2.DN.Puffer = Lücke * P2.Position + 1.0;

sonst MA2.UP.Puffer = Lücke * P2.Position + 1.0;

if(MA2.Puffer.0 < MA0.Puffer.0) Text.Farbe.2 = Text.Farbe.Auf;

sonst Text.Farbe.2 = Text.Farbe.Ab;

//----

MA3.UP.Buffer = EMPTY_VALUE;

MA3.DN.Puffer = EMPTY_VALUE;

if(MA3.Puffer.0 < MA3.Puffer.1) MA3.DN.Puffer = Lücke * P3.Position + 1.0;

sonst MA3.UP.Puffer = Lücke * P3.Position + 1.0;

if(MA3.Puffer.0 < MA0.Puffer.0) Text.Farbe.3 = Text.Farbe.Auf;

sonst Text.Farbe.3 = Text.Farbe.Ab;

//----

MA4.UP.Buffer = EMPTY_VALUE;

MA4.DN.Puffer = EMPTY_VALUE;

if(MA4.Puffer.0 < MA4.Puffer.1) MA4.DN.Puffer = Lücke * P4.Position + 1.0;

sonst MA4.UP.Puffer = Lücke * P4.Position + 1.0;

if(MA4.Puffer.0 < MA0.Puffer.0) Text.Farbe.4 = Text.Farbe.Auf;

sonst Text.Farbe.4 = Text.Farbe.Ab;

//----

//----

LabelSet(Text.Farbe.1, Text.Farbe.2, Text.Farbe.3, Text.Farbe.4);

//----

}

//----

zurück(0);
 
pearl1:
int start()

{

//----

int Counted.Bars = IndicatorCounted(), i;

if(Counted.Bars<0) return(-1);

if(Counted.Bars>0) Counted.Bars--;

int Limit = Bars - Counted.Bars;

color Text.Farbe.1, Text.Farbe.2, Text.Farbe.3, Text.Farbe.4;

//----

for(i=Limit; i>=0; i--)

{

MA0.Puffer.0 = iMA(NULL, 0, 1, 0, MODE_SMA, PRICE_MEDIAN, i);

//----

MA1.Buffer.0 = iMA(NULL, 0, MA1.Period, 0, MA1.Mode, MA1.Price, i);

MA1.Puffer.1 = iMA(NULL, 0, MA1.Periode, 0, MA1.Modus, MA1.Preis, i+1);

MA2.Puffer.0 = iMA(NULL, 0, MA2.Periode, 0, MA2.Modus, MA2.Preis, i);

MA2.Puffer.1 = iMA(NULL, 0, MA2.Periode, 0, MA2.Modus, MA2.Preis, i+1);

MA3.Puffer.0 = iMA(NULL, 0, MA3.Periode, 0, MA3.Modus, MA3.Preis, i);

MA3.Puffer.1 = iMA(NULL, 0, MA3.Periode, 0, MA3.Modus, MA3.Preis, i+1);

MA4.Puffer.0 = iMA(NULL, 0, MA4.Periode, 0, MA4.Modus, MA4.Preis, i);

MA4.Puffer.1 = iMA(NULL, 0, MA4.Periode, 0, MA4.Modus, MA4.Preis, i+1);

MA1.UP.Buffer = EMPTY_VALUE;

MA1.DN.Puffer = EMPTY_VALUE;

if(MA1.Puffer.0 < MA1.Puffer.1) MA1.DN.Puffer = Lücke * P1.Position + 1.0;

sonst MA1.UP.Puffer = Lücke * P1.Position + 1.0;

if(MA1.Puffer.0 < MA0.Puffer.0) Text.Farbe.1 = Text.Farbe.Auf;

sonst Text.Farbe.1 = Text.Farbe.Ab;

//----

MA2.UP.Buffer = EMPTY_VALUE;

MA2.DN.Puffer = EMPTY_VALUE;

if(MA2.Puffer.0 < MA2.Puffer.1) MA2.DN.Puffer = Lücke * P2.Position + 1.0;

sonst MA2.UP.Puffer = Lücke * P2.Position + 1.0;

if(MA2.Puffer.0 < MA0.Puffer.0) Text.Farbe.2 = Text.Farbe.Auf;

sonst Text.Farbe.2 = Text.Farbe.Ab;

//----

MA3.UP.Buffer = EMPTY_VALUE;

MA3.DN.Puffer = EMPTY_VALUE;

if(MA3.Puffer.0 < MA3.Puffer.1) MA3.DN.Puffer = Lücke * P3.Position + 1.0;

sonst MA3.UP.Puffer = Lücke * P3.Position + 1.0;

if(MA3.Puffer.0 < MA0.Puffer.0) Text.Farbe.3 = Text.Farbe.Auf;

sonst Text.Farbe.3 = Text.Farbe.Ab;

//----

MA4.UP.Buffer = EMPTY_VALUE;

MA4.DN.Puffer = EMPTY_VALUE;

if(MA4.Puffer.0 < MA4.Puffer.1) MA4.DN.Puffer = Lücke * P4.Position + 1.0;

sonst MA4.UP.Puffer = Lücke * P4.Position + 1.0;

if(MA4.Puffer.0 < MA0.Puffer.0) Text.Farbe.4 = Text.Farbe.Auf;

sonst Text.Farbe.4 = Text.Farbe.Ab;

//----

//----

LabelSet(Text.Farbe.1, Text.Farbe.2, Text.Farbe.3, Text.Farbe.4);

//----

}

//----

zurück(0);

aha, danke, aber diese Buffers vergleicht .... alle mit MA0.Buffer.0 ?

 

Ersetzen Sie einfach die IMA()-Aufrufe durch die gewünschten Aufrufe (wie iRSI() aus dem Beispiel, das ich Ihnen gegeben habe) und sie sollten funktionieren.

pearl1:
aha, danke, aber diese Buffers vergleicht .... alle mit MA0.Buffer.0 ?