Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 249

 

Was für ein Fehler ist das, ich nehme an, von Seiten des DC, ein schlechtes Training?

2017.07.12 12:42:48.493 '1234885286': order #247632722 sell 0.02 EURAUD closing at 1.49721 failed [Trade timeout]
 
Vitaly Muzichenko:

Was für eine Art von Fehler ist das, nehme ich an, von der Seite des DCs der schlechten Nachbesprechung?

128

ERR_TRADE_TIMEOUT

Zeitüberschreitung abgelaufen


Teil des Handlers:

    case 128:
      str="Истек срок ожидания совершения сделки.";
      if(detailed) str=::StringConcatenate(str, "\n", "Прежде, чем производить повторную",
                 " попытку (не менее, чем через 1 минуту), необходимо убедиться,",
                 " что торговая операция действительно не прошла (новая позиция",
                 " не была открыта, либо существующий ордер не был изменён или",
                 " удалён, либо существующая позиция не была закрыта).");
      break;
 
Artyom Trishkin:

128

ERR_TRADE_TIMEOUT

Zeitüberschreitung für die Handelsausführung abgelaufen


Teil des Handlers:

Ich habe diese Fehlerhandler in meinem Code, aber sie haben nie existiert. Heute habe ich beschlossen, mein Programm in der Demo eines bekannten Maklerunternehmens zu testen und bin zum ersten Mal auf solche Fehler gestoßen.

Verstehe ich das richtig, dass dies ein Hardware-Problem bei der Maklerfirma ist und nicht auf meiner Seite?

 

Bitte sagen Sie mir, ob diese Funktion korrekt ist. Die Idee ist, zu berechnen, ob der Preis den Durchschnittspreis während einer bestimmten Anzahl von vorherigen Kerzen durchbrochen hat.

die Funktion wird überhaupt nicht ausgeführt, das Ergebnis sollte sein: wenn sie nicht gebrochen ist returnToMA ==1, wenn sie gebrochen ist returnToMA ==0

Gibt es vielleicht eine andere Lösung für dieses Problem?


returnToMA = MAtouch(TRADE_TF2,TRADE_TF2_MA,barscount)

int MAtouch(ENUM_TIMEFRAMES tfpricereturnafterbreak=PERIOD_H4, int tradema=10, int bars=100)

{

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

{

if(iLow(Symbol(),tfpricereturnafterbreak,i)<=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i)) {return(0);break;}

wenn (iHigh(Symbol(),tfpricereturnafterbreak,i)>=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i)) {return(0);break;}

sonst return(1);

}

 
forexpipsrunner:

Bitte sagen Sie mir, ob diese Funktion korrekt ist. Die Idee ist, zu berechnen, ob der Preis den Durchschnittspreis während einer bestimmten Anzahl von vorherigen Kerzen durchbrochen hat.

die Funktion wird überhaupt nicht ausgeführt, das Ergebnis sollte sein: wenn sie nicht gebrochen ist returnToMA ==1, wenn sie gebrochen ist returnToMA ==0

Vielleicht gibt es andere Lösungen für dieses Problem?

Ihre Funktion wird immer Null ergeben, da das Maximum oder Minimum immer größer/kleiner oder gleich dem MA ist.

Der Candlestick muss in Ihrem Fall durch mindestens zwei Parameter beschrieben werden:

1) Bestimmen Sie, wo die Kerze eröffnet wurde - über oder unter dem MA

2. Prüfen Sie je nach 1, ob der MA berührt wurde.

 
-Aleks-:

Sie werden immer Null in der Funktion haben, da das Maximum oder Minimum immer größer/kleiner als oder gleich dem MA ist.

Der Candlestick muss in Ihrem Fall durch mindestens zwei Parameter beschrieben werden:

1. Bestimmen Sie, wo die Kerze eröffnet wurde - über oder unter dem MA

2. Abhängig von 1, prüfen Sie, ob der MA berührt wurde.

Ich danke Ihnen. Ich habe die Bedingung hinzugefügt, aber es wird immer 1 zurückgegeben. Kann ich die Klammern irgendwo ändern? Oder funktioniert break nicht und die Funktion wird beendet, indem dem Rückgabewert 1 zugewiesen wird


int MAtouch(ENUM_TIMEFRAMES tfpricereturnafterbreak=PERIOD_H4, int tradema=10, int bars=100)

{

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

{

if( iLow(Symbol(),tfpricereturnafterbreak,i)<=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i)

&&iOpen(Symbol(),tfpricereturnafterbreak,i)>=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i))

{return(0);break;}

wenn ( iHigh(Symbol(),tfpricereturnafterbreak,i)>=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i)

&&iOpen(Symbol(),tfpricereturnafterbreak,i)<=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i))

{return(0);break;}

sonst return(1);

}

 
forexpipsrunner:

Danke. Ich habe die Bedingung hinzugefügt, aber es wird immer 1 zurückgegeben. Kann ich die Klammern irgendwo ändern? Oder funktioniert break nicht und die Funktion wird beendet, indem dem Rückgabewert 1 zugewiesen wird


int MAtouch(ENUM_TIMEFRAMES tfpricereturnafterbreak=PERIOD_H4, int tradema=10, int bars=100)

{

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

{

if( iLow(Symbol(),tfpricereturnafterbreak,i)<=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i)

&&iOpen(Symbol(),tfpricereturnafterbreak,i)>=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i))

{return(0);break;}

wenn ( iHigh(Symbol(),tfpricereturnafterbreak,i)>=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i)

&&iOpen(Symbol(),tfpricereturnafterbreak,i)<=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i))

{return(0);break;}

sonst return(1);

}


Probieren Sie es so

int MAtouch(ENUM_TIMEFRAMES tfpricereturnafterbreak=PERIOD_H4,int tradema=10,int bars=100)
  {
   int x=0;
   for(int i=0;i<=bars;i++)
     {
      if(iLow(Symbol(),tfpricereturnafterbreak,i)<=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i)
         && iOpen(Symbol(),tfpricereturnafterbreak,i)>=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i))
        {x=1;break;}

      if(iHigh(Symbol(),tfpricereturnafterbreak,i)>=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i)
         && iOpen(Symbol(),tfpricereturnafterbreak,i)<=iMA(Symbol(),tfpricereturnafterbreak,tradema,0,MODE_EMA,PRICE_WEIGHTED,i))
        {x=1;break;}
     }
   return(x);
  }

Es wird 1 zurückgegeben, wenn die Bedingung erfüllt ist - es gab einen Schnittpunkt - ist das nicht das, was wir wollen?

 
-Aleks-:

Versuchen Sie dies

Es wird 1 zurückgegeben, wenn die Bedingung erfüllt ist - es gab einen Schnittpunkt - ist das nicht das, was wir wollen?

Danke, mit Ihrer Version des Codes funktioniert es wie am Schnürchen
 
forexpipsrunner:
Danke, mit Ihrer Version des Codes funktioniert es wie am Schnürchen

Ich freue mich, dass ich Ihnen helfen konnte.
 

Guten Tag!

Leute, könnt ihr mir sagen, ob man den Indikator programmgesteuert auf dem Chart anzeigen kann? Oder nur manuell?

Wenn ja, welcher Befehl wird erteilt?