Hilfe bei der Codierung - Seite 395

 

EA öffnet keine Gegenposition

Hallo MQL Coders,

Ich habe eine Frage bezüglich eines Fehlers in meinem EA. Es scheint nicht eine Gegen-Trend-Position zu öffnen (siehe beigefügten Screenshot).

Es ist das Schließen des Handels, aber es ist nicht öffnen einen neuen Handel zu folgen, die neue Richtung gegeben Trend.

// Indicator HMA NMC

double trendc = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1);

double trendp = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2);

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

//| BUY |

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

if(trendc!=trendp)

{

if(trendc==1) // code for buy

OpenBuy();

return(0);

}

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

//| SELL |

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

if(trendc==-1) // code for sell

{

OpenSell();

return(0);

}

}

[/CODE]

[CODE]

void CheckForClose()

{

RefreshRates();

double trendc_c = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1);

double trendp_c = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2);

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

{

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

if(OrderMagicNumber()!= MAGIC) continue;

if(OrderSymbol() != s_symbol) continue;

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

//| Close BUY |

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

if(trendc_c!=trendp_c) // Check trend

{

if(OrderType()==OP_BUY)

{

if(trendc_c==-1) //is buy?

{

bool buyClose=OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_BID),Slippage*pipMultiplier,clCloseBuy);

if(buyClose==false)

{

int ErrorCode = GetLastError();

string ErrDesc = ErrorDescription(ErrorCode);

string ErrAlert= StringConcatenate("Close Buy Order - Error ",ErrorCode,": ",ErrDesc);

if(ShowAlerts == true) Alert(ErrAlert);

string ErrLog=StringConcatenate("Bid: ",MarketInfo(s_symbol,MODE_BID)," Lots: ",OrderLots()," Ticket: ",OrderTicket());

Print(ErrLog);

}

}

break;

}

}

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

//| Close SELL |

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

if(trendc_c!=trendp_c)

{

if(OrderType()==OP_SELL)

{

if(trendc_c==1) // SELL

{

bool sellClose= OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_ASK),Slippage*pipMultiplier,clCloseSell);

if(sellClose == false)

{

ErrorCode = GetLastError();

ErrDesc = ErrorDescription(ErrorCode);

ErrAlert=StringConcatenate("Close Sell Order - Error ",ErrorCode,": ",ErrDesc);

if(ShowAlerts==true) Alert(ErrAlert);

ErrLog=StringConcatenate("Ask: ",MarketInfo(s_symbol,MODE_ASK)," Lots: ",OrderLots()," Ticket: ",OrderTicket());

Print(ErrLog);

}

}

break;

}

}

}

}

Ich danke Ihnen im Voraus!

 
secretcode:
Lieber Mladen

Ist es möglich, in dem beigefügten Indikator eine Bandbreite hinzuzufügen, wie in diesem Beitrag: https: //www.mql5.com/en/forum/172894/page45

Dieser Indikator ist aus der Elite-Sektion, aber ich mag die Art und Weise, wie Sie das Band hinzufügen

Danke für jede Hilfe

geheimcode

Geheimcode

Hier ist eine Version mit hinzugefügten Bändern: ema_variation__filter_amp_bands_amp_mtf.ex4

 
mladen:
secretcode Hier ist eine Version mit hinzugefügten Bändern: ema_variation__filter_amp_bands_amp_mtf.ex4

Vielen Dank Mladen Ich schätze Ihr Fachwissen sehr

Mit freundlichen Grüßen

geheimcode

 
tfi_markets:
Hallo MQL Coders,

Ich habe eine Frage zu einem Fehler in meinem EA. Scheint nicht eine Gegen-Trend-Position zu öffnen (siehe beigefügten Screenshot).

Es wird der Handel geschlossen, aber es ist nicht ein neuer Handel zu öffnen, um die neue Richtung gegeben Trend zu folgen.

// Indicator HMA NMC

double trendc = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1);

double trendp = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2);

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

//| BUY |

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

if(trendc!=trendp)

{

if(trendc==1) // code for buy

OpenBuy();

return(0);

}

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

//| SELL |

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

if(trendc==-1) // code for sell

{

OpenSell();

return(0);

}

}

[/CODE]

[CODE]

void CheckForClose()

{

RefreshRates();

double trendc_c = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1);

double trendp_c = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2);

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

{

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

if(OrderMagicNumber()!= MAGIC) continue;

if(OrderSymbol() != s_symbol) continue;

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

//| Close BUY |

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

if(trendc_c!=trendp_c) // Check trend

{

if(OrderType()==OP_BUY)

{

if(trendc_c==-1) //is buy?

{

bool buyClose=OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_BID),Slippage*pipMultiplier,clCloseBuy);

if(buyClose==false)

{

int ErrorCode = GetLastError();

string ErrDesc = ErrorDescription(ErrorCode);

string ErrAlert= StringConcatenate("Close Buy Order - Error ",ErrorCode,": ",ErrDesc);

if(ShowAlerts == true) Alert(ErrAlert);

string ErrLog=StringConcatenate("Bid: ",MarketInfo(s_symbol,MODE_BID)," Lots: ",OrderLots()," Ticket: ",OrderTicket());

Print(ErrLog);

}

}

break;

}

}

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

//| Close SELL |

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

if(trendc_c!=trendp_c)

{

if(OrderType()==OP_SELL)

{

if(trendc_c==1) // SELL

{

bool sellClose= OrderClose(OrderTicket(),OrderLots(),MarketInfo(s_symbol,MODE_ASK),Slippage*pipMultiplier,clCloseSell);

if(sellClose == false)

{

ErrorCode = GetLastError();

ErrDesc = ErrorDescription(ErrorCode);

ErrAlert=StringConcatenate("Close Sell Order - Error ",ErrorCode,": ",ErrDesc);

if(ShowAlerts==true) Alert(ErrAlert);

ErrLog=StringConcatenate("Ask: ",MarketInfo(s_symbol,MODE_ASK)," Lots: ",OrderLots()," Ticket: ",OrderTicket());

Print(ErrLog);

}

}

break;

}

}

}

}

vielen Dank im Voraus!

tfi_markets

Versuchen Sie, beide Break-Anweisungen eine Zeile nach oben zu verschieben (innerhalb der "}" )

 

Hallo Mladen,

wärst du so freundlich, mir zu sagen, wo ich mit diesem Code etwas falsch gemacht habe.

Ich habe den Indikator "All Pivots" so überarbeitet, dass er auch die Eröffnungslinie des Vortages, die Schlusslinie des Vortages und die Eröffnungslinie des aktuellen Tages anzeigt.

aber der Indikator ist inkonsistent. Er zeigt die Pivots immer korrekt an, aber nur selten, wenn überhaupt, zeigt er den von mir hinzugefügten Code für die Tageseröffnungs-, Vortageseröffnungs- und -schlusslinie an.

Ich verstehe nicht warum, der Code sieht genauso aus wie der Pivot-Code, also sollte alles angezeigt werden und manchmal tut es das auch, aber nicht immer. Ich habe etwas falsch gemacht, bin mir aber nicht sicher, was.

Vielen Dank!

PG

allpivots_daily.mq4

Dateien:
 
pgtips:
Hallo Mladen,

Wären Sie so freundlich, mir zu sagen, wo ich mit diesem Code falsch gemacht habe.

Ich habe den Indikator "All Pivots" so überarbeitet, dass er auch die Eröffnungslinie des Vortages, die Schlusslinie des Vortages und die Eröffnungslinie des aktuellen Tages anzeigt.

aber der Indikator ist inkonsistent. Er zeigt die Pivots immer korrekt an, aber nur selten, wenn überhaupt, zeigt er den von mir hinzugefügten Code für die Tageseröffnungs-, Vortageseröffnungs- und -schlusslinien an.

Ich verstehe nicht warum, der Code sieht genauso aus wie der Pivot-Code, also sollte alles angezeigt werden und manchmal tut es das auch, aber nicht immer. Ich habe etwas falsch gemacht, bin mir aber nicht sicher, was.

Vielen Dank!

PG

allpivots_daily.mq4

PG

Es funktioniert gut (siehe die Liste der erstellten Objekte). Prüfen Sie, ob es überlappende Preise gibt (das könnte dazu führen, dass einige Zeilen unsichtbar sind)

Vergessen Sie auch nicht, die neu erstellten Zeilen in der Funktion ObjectDel() hinzuzufügen

Dateien:
objects.gif  49 kb
 

Danke Mladen, ich habe immer wieder nachgeschaut und es scheint wählerisch zu sein, was die Zeilennamen innerhalb des "" angeht, was nicht das ist, was ich erwarte.

Wie immer vielen Dank für Ihre Zeit und Hilfe,

PG

mladen:
PG

Es funktioniert gut (siehe die Liste der erstellten Objekte). Prüfen Sie, ob es überlappende Preise gibt (das könnte dazu führen, dass einige Zeilen unsichtbar sind)

 
pgtips:
Danke Mladen, ich habe es immer wieder überprüft und es scheint wählerisch zu sein, was die Namen der Zeilen innerhalb des "" angeht, was nicht das ist, was ich erwarte.

Wie immer danke ich Ihnen für Ihre Zeit und Hilfe,

PG

Die Namen der Objekte müssen immer eindeutig sein - aber soweit ich gesehen habe, hast du dich darum gekümmert

 

Bitte helfen Sie mir bei diesem https://www.mql5.com/en/forum/174385/page263

 

Vielen Dank, Mladen,

Ich habe ein Problem und das ist:

mein erstes Kaufsignal nach dem letzten Verkauf, ich brauche es, nachdem der Bar über dem Widerstand oder "srUp" des Codes geschlossen wurde

dasselbe gilt für den Verkauf, der Bar muss unterhalb der Unterstützung oder "srDown" geschlossen sein.

Wie kann ich dies im Code korrigieren?

Und zweitens, war Nummer eins vorher gefragt, ist, wie könnte ich in meinem Code zu beheben, um das erste Signal kaufen nach verkaufen in verschiedenen Farben zeigen?

#property strict

#Eigenschaft indicator_chart_window

#Eigenschaft indicator_buffers 4

#property indicator_color1 clrLime

#eigenschaft indicator_color2 clrRed

#Eigenschaft indicator_color3 clrMagenta

#Eigenschaft indicator_color4 clrCyan

#define BUY 1

#define SELL 2

double Buy[],

Sell[],

FirstBuy[],

FirstSell[];

int OnInit() {

SetIndexBuffer(0,FirstBuy);

SetIndexBuffer(1,FirstSell);

SetIndexBuffer(2,Buy);

SetIndexBuffer(3,Sell);

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

SetIndexStyle (i,DRAW_ARROW,STYLE_SOLID,2);}

SetIndexArrow (0,233);

SetIndexArrow (1,234);

SetIndexArrow (2,233);

SetIndexArrow (3,234);

return(INIT_SUCCEEDED);}

void OnDeinit(const int reason) {}

int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[],

const double &open[], const double &high[], const double &low[],

const double &close[], const long &tick_volume[], const long &volume[],

const int &spread[]) {

static int lastSignal=0;

for(int i=MathMin(rates_total-prev_calculated, rates_total-1); i>=0; i--) {

FirstBuy=FirstSell=Buy=Sell=EMPTY_VALUE;

datetime when=Time;

int w=iBarShift(NULL,PERIOD_H4, when),

x=iBarShift(NULL,PERIOD_H1, when),

y=iBarShift(NULL,PERIOD_M15,when),

z=iBarShift(NULL,PERIOD_M5, wenn);

double srUpH4 = iCustom(NULL,PERIOD_H4, "Support and Resistance (Barry)",0,w),

srDownH4 = iCustom(NULL,PERIOD_H4, "Unterstützungen und Widerstände (Barry)",1,w),

MidH4 = (srUpH4+srDownH4)/2,

srUpH1 = iCustom(NULL,PERIOD_H1, "Unterstützung und Widerstand (Barry)",0,x),

srDownH1 = iCustom(NULL,PERIOD_H1, "Unterstützung und Widerstand (Barry)",1,x),

MidH1 = (srUpH1+srDownH1)/2,

srUp15M = iCustom(NULL,PERIOD_M15, "Unterstützung und Widerstand (Barry)",0,y),

srDown15M = iCustom(NULL,PERIOD_M15, "Unterstützungen und Widerstände (Barry)",1,y),

Mid15M = (srUp15M+srDown15M)/2,

srUp5M = iCustom(NULL,PERIOD_M5, "Unterstützung und Widerstand (Barry)",0,z),

srDown5M = iCustom(NULL,PERIOD_M5, "Unterstützungen und Widerstände (Barry)",1,z),

Mid5M = (srUp5M+srDown5M)/2,

srUp = iCustom(NULL,0, "Unterstützung und Widerstand (Barry)",0,i),

srDown = iCustom(NULL,0, "Unterstützung und Widerstand (Barry)",1,i);

if(ClosesrUp) { // erstes Kaufsignal

Kaufen=Tiefststand_Punkt; }

sonst {

Buy=EMPTY_VALUE; }

if(Close>Mid5M && Close>srUp) { // zweites Signal Buy

Buy=Low-_Point; }

sonst {

Buy=EMPTY_VALUE; }

if(Close>MidH4 && Close>Mid15M && Close<srDown) { // erstes Signal Sell

Sell=High+_Point; }

sonst {

Verkaufen=EMPTY_VALUE; }

if(Close<Mid5M && Close<srDown) { // zweites Signal verkaufen

Sell=High+_Point; }

sonst {

Sell=EMPTY_VALUE; }}

return(rates_total);}

dies ist, was ich für die Alerts habe, soll ich es verwenden oder stattdessen den Alert( t("text for pop up"))? verwenden?

void SoundAlert(datetime i, string dir) {

static datetime lastAlert=0;

if(lastAlert!=i) {

Alert(StringFormat("%s Signal an %s um %s",dir,Symbol(),TimeToStr(i)));

lastAlert=i;}}

danke mladen

Dateien:
signals.png  31 kb
Grund der Beschwerde: