Wie programmiert man? - Seite 197

 

Kann jemand bei der Kodierung dieses EA helfen?

Hallo,

Ich handele derzeit mit einem Martingale EA, der maximal 4 Ebenen von Aufträgen öffnet. Ich denke gerade an eine Hedging-Strategie, die das Risiko der Verwendung dieser EA reduzieren kann. Unten ist eine Beschreibung meiner Strategie:

1. Der Hedging EA wird den Drawdown der Eröffnungsaufträge überwachen. Wenn die schwebenden Gesamtverluste größer als ein vorher festgelegter Betrag sind, wird der EA einen abgesicherten Auftrag gegenüber den Eröffnungsaufträgen eröffnen.

2. Die Losgröße des abgesicherten Auftrags wird auf der Grundlage eines Vielfachen (der Benutzer kann das Vielfache einstellen) der Losgröße des letzten Eröffnungsauftrags berechnet (z. B. wenn die Losgröße des letzten Level-Auftrags 1,6 beträgt und das Vielfache auf 2 eingestellt ist, dann wird der abgesicherte Auftrag mit einer Losgröße von 3,2 eröffnet.

3. Wenn der abgesicherte Auftrag zu seinem Eröffnungsniveau zurückkehrt, wird der abgesicherte Auftrag automatisch geschlossen.

4. Wenn der gesamte Korb (die Eröffnungsaufträge + der abgesicherte Auftrag) einen vorher festgelegten Nettogewinnbetrag erreicht, werden alle Aufträge geschlossen.

Ich frage mich, ob ein guter Programmierer diesen Hedging EA für mich programmieren kann. Ich denke, es wird auch für andere Martingale EA sehr nützlich sein. Herzlichen Dank!

Mit freundlichen Grüßen,

Wallace

 

Wow...

Danke Leute..

Wie wäre es mit einem Kauf- und Verkaufsstopp?

Einfach "BUY" dort ändern?

will nur 2 Positionen nur für 1 Paar, nicht mehr als das..

Sorry, bin noch ein Neuling.

 

Wie kodiere ich diese Indizes in EA?

Hallo, ich bin ein neuer Lerner und daran interessiert, mql zu lernen, kann mir jemand sagen, wie man dies in EA codiert?

extern int Fast.MA.Period = 5;

extern int Langsam.MA.Periode = 34;

extern int Signal.Periode = 5;

//---- Puffer

double Buffer1[],

Buffer2[],

b2[],

b3[];

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

//| Benutzerdefinierte Indikator-Initialisierungsfunktion |

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

int init()

{

//---- Indikatoren

// zwei zusätzliche Puffer für die Zählung

IndicatorBuffers(4);

IndicatorShortName("MA_5_34");

SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,3);

SetIndexPfeil(0,242); // nach unten 226 234 242

SetIndexPuffer(0,b2);

SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,3);

SetIndexPfeil(1,241); //AUF 225 233 241

SetIndexPuffer(1,b3);

// Diese Puffer werden nicht geplottet, sondern nur zur Bestimmung der Pfeile verwendet

SetIndexPuffer (2,Puffer1);

SetIndexPuffer (3,Puffer2);

//----

return(0);

}

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

//| Funktion zur Deinitialisierung des Custor-Indikators

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

int deinit()

{

//----

return(0);

}

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

//| Benutzerdefinierte Indikator-Iterationsfunktion |

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

int start()

{

int i, gezählte_Balken=IndicatorCounted();

double MA5,MA34;

int limit=Balken-gezählt_Balken;

Print(" print limit = ", limit);

if(gezählte_Balken>0) limit++; <----kann mir jemand erklären, was das bedeutet?

// Hauptzeile

for(i=0; i<limit; i++) <----kann mir jemand erklären, was das bedeutet?

{

MA5=iMA(NULL,0,Fast.MA.Period,0,MODE_SMA,PRICE_MEDIAN,i);

MA34=iMA(NULL,0,Langsam.MA.Periode,0,MODE_SMA,PREIS_MEDIAN,i);

Puffer1=MA5-MA34;

}

// Signalleitung

for(i=0; i<limit; i++) <----Kann mir jemand erklären, was das bedeutet?

{

Buffer2=iMAOnArray(Buffer1,Bars,Signal.period,0,MODE_LWMA,i);

} <----kann mir jemand erklären, was das bedeutet?

// Pfeile

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

{

if(Puffer1 > Puffer2 && Puffer1 < Puffer2)

b2 = Hoch+10*Punkt;

if(Puffer1 Puffer2)

b3 = Low-10*Point; <----kann mir jemand erklären, was das bedeutet?

}

//----

return(0);

}

Danke Leute =^_^=

 
liew_stanley:
if(counted_bars>0) limit++; <----Kann mir jemand erklären, was das bedeutet?

// Hauptzeile

for(i=0; i<limit; i++) <----kann mir jemand erklären, was das bedeutet?

// Signalzeile

for(i=0; i<limit; i++) <----kann mir jemand erklären, was das bedeutet?

{

Buffer2=iMAOnArray(Buffer1,Bars,Signal.period,0,MODE_LWMA,i);

} <----kann mir jemand erklären, was das bedeutet?

// Pfeile

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

{

if(Puffer1 > Puffer2 && Puffer1 < Puffer2)

b2 = Hoch+10*Punkt;

if(Puffer1 Puffer2)

b3 = Low-10*Point; <----kann mir jemand erklären, was das bedeutet?

Danke Jungs =^_^=

Das ist ganz einfach.

Wenn du dein indi startest, Bars=1000 (zum Beispiel) und counted_bars=0. Also limit=1000 und dein indi berechnet alle 1000 Bars. Danach ist counted_bars=1000, und bei jedem neuen Tick berechnet das Indi nur den letzten (Null-)Balken. Wenn der nächste Balken kommt, ist limit=1 und indi berechnet die beiden letzten Balken neu.

b3 = Low-10*Point; - es ist nur eine Linie 10 Punkte unter dem Minimum des Balkens.

 
liew_stanley:
Hallo, ich bin ein neuer Lerner und daran interessiert, mql zu lernen, kann mir jemand sagen, wie man dies in EA codiert?

extern int Fast.MA.Periode = 5;

extern int Langsam.MA.Periode = 34;

extern int Signal.Periode = 5;

//---- Puffer

double Puffer1[],

Buffer2[],

b2[],

b3[];

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

//| Benutzerdefinierte Indikator-Initialisierungsfunktion |

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

int init()

{

//---- Indikatoren

// zwei zusätzliche Puffer für die Zählung

IndicatorBuffers(4);

IndicatorShortName("MA_5_34");

SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,3);

SetIndexPfeil(0,242); // nach unten 226 234 242

SetIndexPuffer(0,b2);

SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,3);

SetIndexPfeil(1,241); //AUF 225 233 241

SetIndexPuffer(1,b3);

// Diese Puffer werden nicht geplottet, sondern nur zur Bestimmung der Pfeile verwendet

SetIndexPuffer (2,Puffer1);

SetIndexPuffer (3,Puffer2);

//----

return(0);

}

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

//| Funktion zur Deinitialisierung des Custor-Indikators

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

int deinit()

{

//----

return(0);

}

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

//| Benutzerdefinierte Indikator-Iterationsfunktion |

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

int start()

{

int i, gezählte_Balken=IndicatorCounted();

double MA5,MA34;

int limit=Balken-gezählt_Balken;

Print(" print limit = ", limit);

if(gezählte_Balken>0) limit++; <----kann mir jemand erklären, was das bedeutet?

// Hauptzeile

for(i=0; i<limit; i++) <----kann mir jemand erklären, was das bedeutet?

{

MA5=iMA(NULL,0,Fast.MA.Period,0,MODE_SMA,PRICE_MEDIAN,i);

MA34=iMA(NULL,0,Langsam.MA.Periode,0,MODE_SMA,PREIS_MEDIAN,i);

Puffer1=MA5-MA34;

}

// Signalleitung

for(i=0; i<limit; i++) <----kann mir jemand erklären, was das bedeutet?

{

Buffer2=iMAOnArray(Buffer1,Bars,Signal.period,0,MODE_LWMA,i);

} <----kann mir jemand erklären, was das bedeutet?

// Pfeile

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

{

if(Puffer1 > Puffer2 && Puffer1 < Puffer2)

b2 = Hoch+10*Punkt;

if(Puffer1 Puffer2)

b3 = Low-10*Point; <----kann mir jemand erklären, was das bedeutet?

}

//----

return(0);

}

Danke Jungs =^_^=

Wenn Sie diesen Indikator in einem Ea verwenden möchten, können Sie die Funktion icustom() verwenden, um darauf zuzugreifen. Sie müssen den Code des Indikators nicht wirklich verstehen, nur die Daten, die er ausspuckt. Zumindest ist das der einfache Weg, es zu tun.

 
fxcourt:
Wenn Sie diesen Indikator in einem EA verwenden möchten, können Sie die Funktion icustom() verwenden, um darauf zuzugreifen. Sie müssen den Code des Indikators nicht wirklich verstehen, nur die Daten, die er ausspuckt. Zumindest ist das der einfachste Weg, es zu tun.

Das heißt, verwenden Sie die Funktion icustom() in der EA, um die indis abzurufen? wie sollte die Codierung in der EA geschrieben werden? kann mir einige Anleitung geben?

Vielen Dank

 
toiii:
wow..

Danke Leute...

Wie sieht es mit dem Kaufstopp und dem Verkaufsstopp aus?

einfach "BUY" dort ändern?

will nur 2 Positionen nur für 1 Paar, nicht mehr als das..

Sorry, bin noch ein Neuling.

Lesen Sie dies

MQL4 Anleitung

 

Ist diese Kodierung korrekt?

extern double TakeProfit=100;

extern double Lots=1;

extern double TrailingStop=35;

extern int ShortEma = 5;

extern int LongEma = 34;

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

//| Experten-Initialisierungsfunktion

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

int init()

{

//----

//----

return(0);

}

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

//| Experten-Deinitialisierungsfunktion |

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

int deinit()

{

//----

//----

return(0);

}

int Gekreuzt (double line1 , double line2)

{

static int letzte_Richtung = 0;

static int aktuelle_Richtung = 0;

if(line1>line2)current_direction = 1; //oben

if(line1<line2)current_direction = 2; //abwärts

if(aktuelle_Richtung != letzte_Richtung) //geändert

{

letzte_Richtung = aktuelle_Richtung;

return (letzte_Richtung);

}

sonst

{

return (0);

}

}

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

//| Expertenstartfunktion |

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

int start()

{

//----

int gesamt;

double shortEma, longEma;

shortEma = iCustom(NULL,0, "Test_Demo",13,0,0);

longEma = iCustom(NULL,0, "Test_Demo",54,0,0);

Print("shortEma = " + shortEma + " : longEma = " + longEma);

int isCrossed = 0;

isCrossed = Gekreuzt (LongEma,ShortEma);

total = OrdersTotal();

if(total < 1)

{

if(isCrossed == 1)

{

1=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point, "My EA",12345,0,Green);

if(1>0)

{

if(OrderSelect(1,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());

}

else Print("Fehler beim Öffnen der BUY-Order : ",GetLastError());

return(0);

}

if(isCrossed == 2)

{

2=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point, "Mein EA",12345,0,Red);

if(2>0)

{

if(OrderSelect(2,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());

}

else Print("Fehler beim Öffnen der SELL-Order : ",GetLastError());

return(0);

}

return(0);

}

}

Ich habe eine Fehlermeldung, die besagt, dass 1 & 2 unerwartete Token, was ist das bedeuten? kann mich führen?

Danke

 

Ich schätze, Sie haben etwas gelöscht und es vergessen:

2=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"My EA",12345,0,Red); if(2>0)

Es ist Unsinn.

 
liew_stanley:
extern double TakeProfit=100;

extern double Lots=1;

extern double TrailingStop=35;

Ich habe eine Fehlermeldung, die besagt, dass 1 & 2 unerwartetes Token, was bedeutet das? kann mich führen?

Vielen Dank

Löschen Sie 1=, und 2= vor OrderSend(....