Fragen von einem "Dummy" - Seite 148

 
Yedelkin:
Schauen Sie sich Ihren Code selbst an. Die Bedingung if(timeOntrade.hour==4 || timeOntrade.hour==15 || timeOntrade.hour==16) ist in ihrer jetzigen Form nutzlos. Denn egal, welches Ergebnis sie liefert, Ihre boolsche Funktion timeOntrade() wird immer true zurückgeben.
Das klingt logisch, und das ist es, was mich interessiert. Ich glaube, ich habe unnötige Dinge geschrieben und vielleicht das Notwendige übersehen.
 
Interesting:

alph, das ist es, wovon Yedelkin spricht.

Diese Varianten der Funktion sind in unserer Vorstellung identisch

Jetzt verstehe ich.
 
alph:
Klingt logisch, deshalb bin ich daran interessiert. Ich habe den Eindruck, dass ich unnötige Dinge geschrieben habe und vielleicht das Notwendige übersehen habe.


Es gibt noch eine Sache, die mir nicht klar ist

   timeOntrade.hour= 0;
   timeOntrade.min = 0;
   timeOntrade.sec = 1;
   if(timeOntrade.hour==4 || timeOntrade.hour==15 || timeOntrade.hour==16) return(true);

Das heißt, wenn ich es richtig verstehe, setzen wir die Uhr zuerst auf 0 und vergleichen sie dann.

Wo ist die Logik?
 
Interesting:


Ein weiterer Punkt, der mir noch nicht ganz klar ist

Das heißt, wenn ich es richtig verstehe, setzen wir die Uhr zuerst auf 0 und vergleichen sie dann.

Wo ist die Logik?
Ich habe die Zeile mit true noch nicht entfernt, aber es scheint mir, wenn man sie entfernt, gibt es bereits in ontik keinen Vergleich mit clock als spezifischen Wert oder Parameter.
 
alph:
Ich habe die Zeile mit true noch nicht entfernt, aber es scheint mir, wenn wir sie entfernen, gibt es keinen Vergleich mit clock als spezifischen Wert oder Parameter in ontik.

Derzeit sind diese Optionen meiner Meinung nach 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);
   return(true);
   }

Im Allgemeinen verstehe ich nicht, warum Werte zugewiesen werden müssen.

Das heißt, soweit ich weiß, ist die beste Option

bool timeOntrade(int TradeHour)
   {
   MqlDateTime timetrade;
   TimeTradeServer(timetrade);
   if(timetrade.hour!=TradeHour) return(false);
   return(true);
   }
Wenn in diesem Fall die aktuelle Serverzeit (nur für die Uhr) nicht mit der eingestellten Zeit übereinstimmt, wird false zurückgegeben, andernfalls wird true zurückgegeben.
 
Interesting:

Zurzeit sind diese Optionen identisch

Ich verstehe eigentlich nicht, warum wir Werte zuweisen müssen?

Dies zu schreiben:

void OnTick()

{...

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

//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)))) Öffnen();//Zur Position öffnen

timeOntrade.min = 0;

Dies ist in diesem Zusammenhang eindeutig unnötig


   timeOntrade.min = 0;
   timeOntrade.sec = 1;
 

alph:

Um dies einzubauen:

void OnTick()

Versuchen Sie diese Option, sonst verstehe ich nicht, was Sie erreichen wollen...

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

Versuchen Sie diese Option, sonst verstehe ich nicht, was Sie erreichen wollen...

Ja, ja, und rein:

 bool timeOntrade2(int TradeMin)  
   {
   MqlDateTime timetrade2;
   TimeTradeServer(timetrade);
   if(timetrade.min!=TradeMin) return(false);
   return(true);
   }
 
alph:

Ja, ja, und rein:

Dann schon so (um sicher zu sein). Aber im Prinzip haben Sie mich richtig verstanden.

 bool timeOntrade2(int TradeMin)  
   {
   MqlDateTime timetrade;
   TimeTradeServer(timetrade);
   if(timetrade.min!=TradeMin) return(false);
   return(true);
   }
 
Interesting:

Dann ist es so (um sicher zu sein). Aber im Prinzip haben Sie mich richtig verstanden.

Ich danke Ihnen! Ist der Rest des Codes korrekt?