Fragen von einem "Dummy" - Seite 147

 
alph:

Wenn der Kurs unter dem gleitenden Durchschnitt schließt und das Momentum unter dem Durchschnitt liegt, eröffnen Sie ein Verkaufsgeschäft. Bei einem Kaufgeschäft ist es genau umgekehrt.

Wenn die Bedingung nicht erfüllt ist, besteht kein Handlungsbedarf. Wenn ja, dann schreiben Sie in die letzte Zeile der Funktion return(false) und sehen Sie, ob Ihre Taktik Schritt für Schritt erfüllt wird.
 
Yedelkin:
Wenn die Bedingung nicht erfüllt ist, brauchen Sie also nichts zu tun? Wenn ja, dann schreiben Sie in die letzte Zeile der Funktion return(false) und sehen Sie, ob Ihre Taktik Schritt für Schritt erfüllt wird.
Ist es in void OnTick() ?
 
alph:
Ist es in void OnTick() ?

Es war anscheinend an der Zeit, Handel zu treiben.

Mich persönlich verwirrt jedoch das nicht rückführbare Ergebnis, das früher oder später in die gewünschte Form umgewandelt werden kann.

Was mich verwirrt, ist Folgendes

bool timeOntrade(int TradeHour)
   {
   MqlDateTime timeOntrade;
 
alph:
Ist dies in void OnTick() ?

Genau hier:

bool timeOntrade(int TradeHour)
   {
   MqlDateTime timeOntrade;
   TimeTradeServer(timeOntrade);
   if(timeOntrade.hour!=TradeHour) return(false);
   timeOntrade.hour= 0;
   timeOntrade.min = 0;
   timeOntrade.sec = 1;
   if(timeOntrade.hour==4 || timeOntrade.hour==15 || timeOntrade.hour==16) return(true);
   return(false);
   }

Versuchen Sie, in die letzte Zeile "false" zu setzen, und prüfen Sie, ob dieser Ansatz mit der von Ihnen gewählten Taktik vereinbar ist. D.h., die Arbeit des Expert Advisors im Hinblick auf diese Änderung "scrollen".

 
Interesting:
Ich habe offensichtlich von timeOntrade gesprochen.
In timontrade nur falsch am Ende wird nicht das gewünschte Ergebnis geben, aber in meiner Variante öffnet es wirklich Geschäfte durch die Uhr, getestet. Meine Version des Codes mit der Uhr in dieser Form habe ich irgendwo hier im Forum bekommen, es funktioniert, nachdem ich es eingeschraubt habe. Nur die Minuten, die ich über timontrade two einschrauben konnte. Ich bin sicher, dass der vollständige Code mindestens ein Drittel kürzer sein sollte.
 
alph:
In timeOntrade nur falsch am Ende wird nicht das gewünschte Ergebnis geben, aber in meiner Variante öffnet Trades von der Stunde ist real, getestet.
Was passiert, wenn timeOntrade.hour = 5 ist?
 
Interesting:
Was passiert, wenn timeOntrade.hour = 5 ist?

Das Geschäft wird sicherlich nicht zustande kommen, denn in...

//Basis für den Wechsel zu Open

MqlRates rt[1];
if(CopyRates(Symbol(),MyTframe,0,1,rt)<0) return;
if(rt[0].tick_volume>1) return;

if(!PositionSelect(_Symbol)&& (timeOntrade(4) || ((timeOntrade(15) || timeOntrade(16))&& timeOntrade2(0)))) Open();//

...senden, um nur zu einer bestimmten Zeit zu öffnen

Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных - Документация по MQL5
 
alph:
Bei timontrade ist es genau das Falsche am Ende, das nicht das gewünschte Ergebnis bringt...
Schauen Sie sich Ihren Code selbst an. Die Bedingung if(timeOntrade.hour==4 || timeOntrade.hour==15 || timeOntrade.hour==16) ist in ihrer derzeitigen Form nutzlos. Denn egal, welches Ergebnis sie liefert, Ihre Funktion bool timeOntrade() wird immer true zurückgeben.
 

alph, das ist es, wovon Yedelkin spricht.

Diese Varianten der Funktion sind in unserer Vorstellung identisch

bool timeOntrade(int TradeHour)
   {
   MqlDateTime timeOntrade;
   TimeTradeServer(timeOntrade);
   if(timeOntrade.hour!=TradeHour) return(false);
   timeOntrade.hour= 0;
   timeOntrade.min = 0;
   timeOntrade.sec = 1;
   if(timeOntrade.hour==4 || timeOntrade.hour==15 || timeOntrade.hour==16) return(true);
   return(true);
   }

bool timeOntrade(int TradeHour)
   {
   MqlDateTime timeOntrade;
   TimeTradeServer(timeOntrade);
   if(timeOntrade.hour!=TradeHour) return(false);
   timeOntrade.hour= 0;
   timeOntrade.min = 0;
   timeOntrade.sec = 1;
   return(true);
   }
 
Interesting:

Übrigens ist bei dieser Variante das Ergebnis des Testers nach Gewinn gering, aber das Verhältnis scheint mir gut zu sein.

Jetzt teste ich auf größeren Zeitskalen ohne Zeitbezug, vielleicht wird das Ergebnis besser sein.