Hilfe bei der Codierung - Seite 19

 

ich habe meinen EA mit ur Hilfe fertiggestellt ThanX again

Hallo, mLaden,

Nochmals vielen Dank für deine großartige Hilfe

Ich habe meinen EA mit deiner Hilfe fertiggestellt. Nochmals vielen Dank.

DankeXXXXXXXXXX

 

Indikatoren neu malen

Ich habe diese Frage vor ein paar Wochen in diesem Thread 'Coding Help' gestellt, aber keine Antwort erhalten.

Die meisten MTF-Indikatoren werden neu gezeichnet, einige mehr als andere. Ich habe einen, der sich leicht verändert, aber einen Faktor hat, der sehr gut ist und in eine Methode aufgenommen werden könnte. Das Problem ist, dass ich ihn ständig manuell aktualisieren muss, damit er Sinn macht. Gibt es eine Möglichkeit, eine automatische Aktualisierung jeden Tick oder alle 'x' Sekunden/Ticks zu codieren?

Derzeit muss ich zur Aktualisierung entweder die Diagrammzeiten ändern und dann zurückgehen, oder ich gehe auf die Registerkarte Diagramme/Aktualisierung, oder ich füge dem Diagramm einen anderen Indikator hinzu und lösche den vorhergehenden.......wieder und wieder! Sehr zeitaufwändig!

Wenn es eine Möglichkeit gibt, diese automatische Aktualisierung durchzuführen, werde ich Ihnen mitteilen, was ich gefunden habe............

Vielen Dank!

el bee

 

...

el bee

Metatrader sendet ein Autorefresh-Signal an jeden einzelnen Indikator im Fenster, wenn ein neuer Tick eintrifft, es handelt sich also nicht um ein Problem der Aktualisierung. Normalerweise tritt dieses Problem auf, wenn ein Indikator die Anzahl der geänderten Balken (in der Regel in Indikatoren als "Limit" bezeichnet) nicht richtig findet... es handelt sich also um ein Problem des Indikators. Wenn Sie den Zeitrahmen wechseln, werden alle Balken neu berechnet und deshalb wird der Indikator in diesem Fall richtig angezeigt und nicht, wenn sich nur der Wert eines Balkens ändert.

Abschließend: Überprüfen Sie den Code des Indikators - er hat einen Fehler in sich

el bee:
Ich habe diese Frage vor ein paar Wochen in diesem Thread 'Coding Help' gestellt, aber keine Antwort erhalten.

Die meisten MTF-Indikatoren färben sich neu, manche mehr als andere. Ich habe einen, der sich leicht wiederholt, aber einen Faktor hat, der sehr gut ist und in eine Methode aufgenommen werden könnte. Das Problem ist, dass ich ihn ständig manuell aktualisieren muss, damit er Sinn macht. Gibt es eine Möglichkeit, eine automatische Aktualisierung jeden Tick oder alle 'x' Sekunden/Ticks zu codieren?

Derzeit muss ich zur Aktualisierung entweder die Diagrammzeiten ändern und dann zurückgehen, oder ich gehe auf die Registerkarte Diagramme/Aktualisierung, oder ich füge dem Diagramm einen anderen Indikator hinzu und lösche den vorherigen Indikator.......immer wieder! Sehr zeitaufwändig!

Wenn es eine Möglichkeit gibt, diese automatische Aktualisierung durchzuführen, werde ich Ihnen mitteilen, was ich gefunden habe............

Vielen Dank,

el bee
 

Indikator Hilfe

Ich könnte einen Indikator verwenden, der eine vertikale Linie auf die jüngste Kerze setzt, einstellbar, wenn jemand einen hat und teilen kann oder wenn einer gemacht werden könnte, wäre es sehr geschätzt werden

 

Gibt es einen falschen Code?

Ich versuche, einen EA zu schreiben, der auf dem Öffnen und Schließen des Balkens basiert.

aber ich habe ein Problem mit der Bedingung, einen Handel zu eröffnen.

meine Methode ist etwas wie das:

+ VERKAUFEN, wenn die Eröffnung des aktuellen Balkens höher ist als der Abschluss des vorherigen Balkens. TP ist der Schluss des vorhergehenden Balkens

+ KAUFEN, wenn die Eröffnung des aktuellen Balkens niedriger ist als die Eröffnung des vorherigen Balkens. TP ist die Eröffnung des vorherigen Balkens

+ CLOSE, wenn der aktuelle Balken schließt.

und hier ist der Code (ich versuche immer noch, mql4 zu lernen, also weiß ich, dass es nicht der beste Code ist)

#property link "sando"

#define MAGICMA 20050610

//====================parameter===================//

extern double solantang =3;

extern double solangiam =3;

extern double LotsSize =1;

//==============================================//

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

//| Prüfung auf offenen Handel |

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

int CalculateCurrentOrders(string symbol)

{

int buys=0,sells=0;

//----

for(int i=0;i<OrdersTotal();i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;

if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)

{

if(OrderType()==OP_BUY) kauft++;

if(OrderType()==OP_SELL) sells++;

}

}

//---- Auftragsvolumen zurückgeben

if(Käufe>0) return(Käufe);

sonst return(-sells);

}

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

//| Moneymanagement (Typ 3) |

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

double geldmanagement3()

{

double LotsSize = 0.1;

if(OrdersHistoryTotal()>0)

{

OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY);

if(OrderProfit() > 0)

{

if(OrderLots() > LotsSize)

{

LotsSize = OrderLots()/solangiam;

}

sonst

{

LotsSize = LotsSize;

}

}

sonst

{

LotsSize = OrderLots() * solantang;

}

}

return (NormalizeDouble(LotsSize,2));

}

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

//| CONDITION zum Eröffnen eines Trades |

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

void opentrade()

{

int res;

if(Close[0]<Open[1])

{

res=OrderSend(Symbol(),OP_SELL,moneymanagement3(),Bid,3,Close[0],Close[1],"",MAGICMA,0,Red);

zurück;

}

if(Open[0]>Open[1])

{

res=OrderSend(Symbol(),OP_BUY,moneymanagement3(),Ask,3,Open[0],Close[1],"",MAGICMA,0,Blau);

zurückgeben;

}

}

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

//| Experten-Startfunktion |

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

void start()

{

//---- prüft auf Historie und Handel

if(Bars<100 || IsTradeAllowed()==false) return;

//---- Berechnung der offenen Aufträge nach aktuellem Symbol

if(CalculateCurrentOrders(Symbol())==0) opentrade();

// else donggiaodich();

//----

}

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

und sehen Sie sich bitte das Bild im Anhang an

Ich denke, dass etwas im Code falsch ist

Manchmal macht der EA den Handel nicht, wenn die Bedingung erfüllt ist T_T Ich weiß nicht, warum

und manchmal macht der EA den Handel, wenn die Bedingung nicht erfüllt ist!

Bitte helfen Sie mir, den Fehler im Code zu beheben.

Dateien:
1_2.gif  12 kb
new_edge.mq4  4 kb
 
7thman:
Ich versuche, einen EA zu schreiben, der auf dem Öffnen und Schließen des Balkens basiert

aber ich habe ein Problem mit der Bedingung, einen Handel zu eröffnen.

meine Methode ist etwas wie das:

+ VERKAUFEN, wenn die Eröffnung des aktuellen Balkens höher ist als der Abschluss des vorherigen Balkens. TP ist der Schluss des vorhergehenden Balkens

+ KAUFEN, wenn die Eröffnung des aktuellen Balkens niedriger ist als die Eröffnung des vorherigen Balkens. TP ist die Eröffnung des vorherigen Balkens

+ CLOSE, wenn der aktuelle Balken schließt.

und hier ist der Code (ich versuche immer noch, mql4 zu lernen, also weiß ich, dass es nicht der beste Code ist)

und bitte überprüfen Sie das Bild im Anhang

Ich denke, etwas ist falsch in den Code

manchmal der EA nicht den Handel, wenn die Bedingung erfüllen T_T Ich weiß nicht, warum

und manchmal führt der EA den Handel aus, wenn die Bedingung nicht erfüllt ist!

Bitte helfen Sie mir, den Fehler im Code zu beheben.

[lang=pl]+ SELL wenn die Eröffnung des aktuellen Balkens höher ist als der Abschluss des vorherigen Balkens. TP ist der Schluss des vorhergehenden Balkens

+ BUY, wenn die Eröffnung des aktuellen Balkens niedriger ist als die Eröffnung des vorherigen Balkens. TP ist die Eröffnung des vorherigen Balkens

Hier ist der erste Fehler:

if(Close[0]Close[1])

if(Open[0]>Open[1]) (Sollte Open[0]<Open[1] sein)

Der zweite ist StopLoss. In Ihrem Code setzen Sie StopLose, aber in der Beschreibung oben

sagten Sie, dass Sie den Handel schließen wollen, wenn ein neuer Balken auftaucht.

Hier ist ein weiteres Problem. Nehmen wir an, dass Open[0]<Open[1]. Die Differenz kann so gering sein

dass, wenn Ihre Order ausgeführt wird, der Preis über Open[1] liegt und der TP

weniger als der offene Preis der Bestellung. Unten füge ich eine Bedingung hinzu, die diesen Fall abfangen kann.

Wenn ich gut verstehe, dass Sie alle Aufträge am Ende des Balkens schließen wollen, hier ist der Code.

#property link "sando"

#define MAGICMA 20050610

//====================parameter===================//

extern double solantang =3;

extern double solangiam =3;

extern double LotsSize =1;

//==============================================//

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

//| Prüfung auf offenen Handel |

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

int CalculateCurrentOrders(string symbol)

{

int buys=0,sells=0;

//----

for(int i=0;i<OrdersTotal();i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false ) break;

if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)

{

if(OrderType()==OP_BUY) kauft++;

if(OrderType()==OP_SELL) sells++;

}

}

//---- Auftragsvolumen zurückgeben

if(Käufe>0) return(Käufe);

sonst return(-sells);

}

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

//| Moneymanagement (Typ 3) |

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

double geldmanagement3()

{

double LotsSize = 0.1;

if(OrdersHistoryTotal()>0)

{

OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY);

if(OrderProfit() > 0)

{

if(OrderLots() > LotsSize)

{

LotsSize = OrderLots()/solangiam;

}

sonst

{

LotsSize = LotsSize;

}

}

sonst

{

LotsSize = OrderLots() * solantang;

}

}

return (NormalizeDouble(LotsSize,2));

}

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

//| CONDITION zum Eröffnen eines Trades |

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

void opentrade()

{

int res;

if(Close[1] Close[1] )

{

res=OrderSend(Symbol(),OP_SELL,moneymanagement3(), Bid,3,0,Close[1],"",MAGICMA,0,Red);

zurück;

}

if(Open[0]<Open[1] && Ask < Open[1])

{

res=OrderSend(Symbol(),OP_BUY,moneymanagement3(),Ask,3,0,Open[1],"",MAGICMA,0,Blau);

zurück;

}

}

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

//| Experten-Startfunktion |

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

void start()

{

if(isNewBar())

{

closeOrders(MAGICMA,OP_BUY);

closeOrders(MAGICMA,OP_SELL);

}

Print(Close[1]-Open[0]);

//---- Prüfung auf Historie und Handel

if(Bars<100 || IsTradeAllowed()==false) return;

//---- Berechnung der offenen Aufträge nach aktuellem Symbol

if(CalculateCurrentOrders(Symbol())==0) opentrade();

// else donggiaodich();

//----

}

void closeOrders(int oMagic,int oType) {

for(int i=0;i<OrdersTotal();i++) {

if(OrderSelect(i,SELECT_BY_POS)) {

if(OrderMagicNumber()==oMagic || oMagic<0) {

if(BestellSymbol()==Symbol()) {

if(OrderType()==oType || oType<0) {

if(OrderType()==OP_BUY) {

OrderClose(OrderTicket(),OrderLots(),Bid,0);

i--;

}

if (OrderType() == OP_BUYSTOP)

{

OrderDelete(OrderTicket());

i--;

}

if(OrderType()==OP_SELL) {

OrderClose(OrderTicket(),OrderLots(),Ask,0);

i--;

}

if (OrderType() == OP_SELLSTOP)

{

OrderDelete(OrderTicket());

i--;

}

}

}

}

}

}

}

bool isNewBar() {

static int prevTime;

bool newBar=false;

if(Time[0]!=prevTime) {

newBar=true;

prevTime=Time[0];

}

return(newBar);

}

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

Prost!

Grzesiek[/lang]

 

Coding-Hilfe: Stop Loss & Take Profit mit EA bei einem ECN-Broker platzieren

Stop Loss, Gewinnmitnahme mit ECN-Broker

Freunde,

ich bin ein Neuling in der MQL4-Programmierung und brauche Hilfe beim Anhängen eines SL & TP an einen ORDERSEND mit einem ECN-Broker.

Zunächst konnte ich nicht verstehen, warum die SL & TPs dazu führten, dass meine Order zu einem Fehler führte, bis mich jemand darauf hinwies, dass man das StopLoss & TakeProfit-Feld innerhalb des ORDERSEND auf "0" setzen muss, da sonst ein ECN/STP-Broker die Order nicht ausführen wird.

Meine Frage lautet also: Wie kann ich eine Order zum Marktpreis ausführen und dann sofort (oder innerhalb von ein oder zwei Sekunden) einen SL/TP an dieses Ticket anhängen?

Hier ist ein Teil des Codes, der für meine Frage relevant ist:

if(CurrentPriceBuy>UpperPriceTrigger)

{

OrderSend(Sym,OP_BUY,Lots,CurrentPriceBuy,0,0,0,Co mm,0,0,CLR_NONE);

}

Kann mir jemand dabei helfen, einen Code direkt nach dem OrderSend-Befehl einzufügen, so dass ich einen TP/SL von sagen wir willkürlich 25 Pips an dieses spezifische Ticket anhängen kann?

Für jede Hilfe wäre ich sehr dankbar. Vielen Dank im Voraus.

Mit freundlichen Grüßen,

Kasio

 
kasio:
Stop Loss, Take Profit mit ECN-Broker

Freunde,

ich bin ein Neuling in der MQL4-Programmierung und brauche Hilfe beim Anhängen eines SL & TP an einen ORDERSEND mit einem ECN-Broker.

Zunächst konnte ich nicht verstehen, warum die SL & TPs dazu führten, dass meine Order zu einem Fehler führte, bis mich jemand darauf hinwies, dass man das Feld StopLoss & TakeProfit im ORDERSEND auf "0" setzen muss, da sonst ein ECN/STP-Broker die Order nicht ausführt.

Meine Frage lautet also: Wie kann ich eine Order zum Marktpreis ausführen und dann sofort (oder innerhalb von ein oder zwei Sekunden) einen SL/TP an dieses Ticket anhängen?

Hier ist ein Teil des Codes, der für meine Frage relevant ist:

if(CurrentPriceBuy>UpperPriceTrigger)

{

OrderSend(Sym,OP_BUY,Lots,CurrentPriceBuy,0,0,0,Co mm,0,0,CLR_NONE);

}

Kann mir jemand dabei helfen, einen Code direkt nach dem OrderSend-Befehl einzufügen, so dass ich einen TP/SL von sagen wir willkürlich 25 Pips an dieses spezifische Ticket anhängen kann?

Für jede Hilfe wäre ich sehr dankbar. Vielen Dank im Voraus.

Herzliche Grüße,

Kasio

Hallo kasio,

Wenn Sie bei einem ECN-Broker handeln, sollten Sie die Order ohne SL/TP senden und sie modifizieren.

Hier ist ein Beispiel:

extern double StopLoss = 25;

extern double TakeProfit = 25;

if(isECN==true )

{

ticket=OrderSend(Symbol(),OP_BUY,lots,Ask, slippage,0,0,comment,magic);

OrderSelect(ticket,SELECT_BY_TICKET);

OrderModify(ticket,OrderOpenPrice(),sltpValue(Bid - StopLoss*Point, StopLoss),sltpValue(Ask+ TakeProfit*Point,TakeProfit),0);

}

double sltpValue(double w1, int w2)

{

if(w2 == 0)

return (0);

return (NormalizeDouble(w1, Digits));

}

Ich hoffe, das ist klar

PM mich, wenn mehr Frage haben.

Prost,

grzesiek

 

Informationen werden nicht jeden Tick aktualisiert

Hallo Leute,

Ich habe dieses Ea geschrieben, das mir Informationen zu verschiedenen Indikatoren auf meinem Bildschirm anzeigt.

Allerdings, wenn ich die ea zu meinem Diagramm anhängen, ist die Information nur alle 5 min (auf 5 min. Chart) aktualisiert,

anstatt jeden Tick. Gibt es etwas falsch i meine Kodierung? Ich würde gerne sehen, dass sich die Informationen alle Ticks ändern.

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

//| test.mq4 |

//| Copyright © 2011, Test Inc. |

//| test.net - Test Ressourcen und Informationen. |

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

#property copyright "Copyright © 2011, Test Inc."

#property link "http://www.test.net"

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

//| labels |

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

#define ccilabel "CCIValue"

#define rsilabel "RSIValue"

#define stochlabel "StochWert"

#define upperbandlabel "OberbandWert"

#define lowerbandlabel "LowerBandValue"

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

//| Experten-Initialisierungsfunktion |

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

int init()

{

//----

//----

return(0);

}

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

//| Experten-Deinitialisierungsfunktion |

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

int deinit()

{

//----

//----

return(0);

}

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

//| expert start function |

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

int start()

{

//----

//===================================================================

// Dynamic Relative Strength Index berekenen

//===================================================================

double RSI;

double UpperBand;

double LowerBand;

RSI=iCustom(NULL,0, "Dynamische Zone RSI",14,0,1);

UpperBand=iCustom(NULL,0, "Dynamische Zone RSI",14,1,1);

Unteres Band=iCustom(NULL,0, "Dynamischer Bereich RSI",14,2,1);

//===================================================================

// CCI berekenen

//===================================================================

double CCI;

CCI=iCCI(NULL,0,14,PRICE_TYPICAL,1);

//===================================================================

// Stochastic berekenen

//===================================================================

double Stoch;

Stoch=iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,1);

//===================================================================

// Informationen anzeigen

//===================================================================

// CCIValue

ObjectDelete(ccilabel);

ObjectCreate(ccilabel, OBJ_LABEL, 0, 0, 0);

ObjectSet(ccilabel, OBJPROP_XDISTANCE, 20);

ObjectSet(ccilabel, OBJPROP_YDISTANCE, 20);

ObjectSetText(ccilabel, "CCIValue ist " + DoubleToStr(CCI,2), 10, "Arial", DeepSkyBlue);

// StochWert

ObjectDelete(stochlabel);

ObjectCreate(stochlabel, OBJ_LABEL, 0, 0, 0);

ObjectSet(stochlabel, OBJPROP_XDISTANCE, 20);

ObjectSet(stochlabel, OBJPROP_YDISTANCE, 40);

ObjectSetText(stochlabel, "StochValue ist " + DoubleToStr(Stoch,2), 10, "Arial", DeepSkyBlue);

// RSIValue

ObjectDelete(rsilabel);

ObjectCreate(rsilabel, OBJ_LABEL, 0, 0, 0);

ObjectSet(rsilabel, OBJPROP_XDISTANCE, 20);

ObjectSet(rsilabel, OBJPROP_YDISTANCE, 60);

ObjectSetText(rsilabel, "RSIValue ist " + DoubleToStr(RSI,2), 10, "Arial", DeepSkyBlue);

// UpperBandValue

ObjectDelete(upperbandlabel);

ObjectCreate(upperbandlabel, OBJ_LABEL, 0, 0, 0);

ObjectSet(upperbandlabel, OBJPROP_XDISTANCE, 20);

ObjectSet(upperbandlabel, OBJPROP_YDISTANCE, 80);

ObjectSetText(upperbandlabel, "UpperbandValue ist " + DoubleToStr(UpperBand,2), 10, "Arial", DeepSkyBlue);

// LowerBandValue

ObjectDelete(lowerbandlabel);

ObjectCreate(lowerbandlabel, OBJ_LABEL, 0, 0, 0);

ObjectSet(lowerbandlabel, OBJPROP_XDISTANCE, 20);

ObjectSet(lowerbandlabel, OBJPROP_YDISTANCE, 100);

ObjectSetText(lowerbandlabel, "LowerBandValue ist " + DoubleToStr(LowerBand,2), 10, "Arial", DeepSkyBlue);

//----

return(0);

}

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

 

KG Unterstützung und Widerstand mod

Hallo,

ich brauche jemanden, der einen der beigefügten Unterstützungs- und Widerstandsindikatoren modifiziert. Der erste hat einen Alarm, wenn ein Ausbruch gemacht wird. Dieser Indikator ist einer der besten Unterstützungs-/Widerstandsindikatoren und auch sehr leistungsfähig, besonders auf höheren Zeitrahmen.

Vielen Dank

kg_Unterstützung_und_Widerstand.mq4 oder

kg_unterstuetzung_und_widerstand_alarm_revision_2.ex4