Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
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 =^_^=
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.
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.
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
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:
Es ist Unsinn.
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 DankLöschen Sie 1=, und 2= vor OrderSend(....