Wie man sich auf eine bestimmte Zeit bezieht - Seite 4

 
Agent86:
Hallo
Danke für die Antwort

Ich habe Ihren Beitrag gelesen, der sich auf einen Zeitbereich oder Bereich/Filter bezog, und ich habe die Schlussfolgerung verstanden, aber nicht die Gleichungen vollständig

Nach Ihrer Antwort muss ich davon ausgehen, dass ich nicht verstehe, wie man einen Ausdruck erstellt, der etwas wie if(Time[1] == 7:15) in der richtigen Form vergleicht, weil ich die von Ihnen geposteten Gleichungen nicht verstehe.

Du musst lesen, was geschrieben steht und es herausfinden ... wenn du eine Funktion nicht verstehst, schau nach und lies darüber, bis du sie verstehst. Der Code, den WHR gepostet hat, ist sehr einfache Mathematik ... das Einzige, mit dem Sie vielleicht nicht vertraut sind, ist das % ... es bedeutet nicht Prozent ... schlagen Sie es nach, Sie können es hier finden: https://docs.mql4.com/basis/operations/math
 
RaptorUK:

Sie müssen sich wirklich mit der Dokumentation vertraut machen...

Wenn Sie eine Funktion aufrufen, die einen TimeFrame verwendet, sehen Sie die Aufzählung "Timeframe", die mit hier verlinkt ist: Timeframe enumeration und das wird Ihnen sagen, dass Period_H1 ein Wert von 60 ist ... in anderen Worten 60 Minuten . . . 60 mins * 60 = Sekunden ... Datumsangaben sind in Sekunden.


Was Sie kodiert haben, wird nicht funktionieren ... Ihr time_select ist KEINE datetime ... Erinnern Sie sich, was eine datetime ist? aus der Dokumentation ... "datetime type (integer representing the amount of seconds elapsed from midnight, 1 January, 1970)." wenn Sie eine datetime wollen, die 7:15 Uhr bedeutet, muss es die Anzahl der Sekunden sein, die vom 1. Januar 1970 bis heute 7:15 Uhr verstrichen sind ...

Was Sie berechnet haben, ist die Anzahl der Sekunden von Mitternacht bis 7:15 Uhr heute Morgen, und das ist keine Datumszeit.


Ich weiß, dass es sich nicht um eine Datetime handelt, und ich denke, wenn ich genau verstanden hätte, was PERIOD_H1 ist, hätte ich das auch gewusst.

Ich verstehe jetzt, dass ich vom 1. Januar 1970 in Sekunden umrechnen muss.
ok danke
 
RaptorUK:
Sie müssen lesen, was geschrieben steht und es herausfinden ... wenn Sie eine Funktion nicht verstehen, schlagen Sie sie nach und lesen Sie darüber, bis Sie sie verstehen. Der Code, den WHR gepostet hat, ist ganz einfache Mathematik ... das Einzige, was du vielleicht nicht kennst, ist das % ... es bedeutet nicht Prozent ... schlag es nach, du findest es hier: https://docs.mql4.com/basis/operations/math
Ich verstehe, dass % nicht Prozent bedeutet.
Ich habe die 86400 nicht verstanden und auch nicht, warum sie verwendet wurde.

Ich habe es gerade herausgefunden == wie viele Sekunden am Tag sind es, danke
 
Danke Leute

Ich habe mich weiter damit beschäftigt und verstehe die verschiedenen Möglichkeiten, um auf Mitternacht eines bestimmten Tages zu schließen.

Dann, wie vorgeschlagen, einige andere Methoden, um 18 Stunden x 3600 zu berechnen, was, wie ich sehe, die Anzahl der Sekunden in einer Stunde multipliziert mit 18 ist und mir HR1800 ergibt.

Ich denke, ich sollte in der Lage sein, einige verschiedene Zeitcodes daraus zu erstellen, einschließlich einiger Zeitcodes für eine bestimmte Zeit, nicht nur für einen Bereich.

Nochmals vielen Dank
 
Hier sind einige meiner Fortschritte, für eine wählbare Zeit und/oder Zeitspanne

Unvollständig und grob, aber wenigstens verstehe ich jetzt alle Beiträge, vielen Dank

//+------------------------------------------------------------------+
//|                                         15min_straddle_timer.mq4 |
//|                                     Agent86  15 straddle timer   |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Agent86"


//---- input parameters
extern double    TakeProfit=20.0;
extern double    Lots=0.1;
extern double    StopLoss=10.0;
extern int MagicNumber=1586;

//Time Select and Range select IE: extHour=7; and extMinutes=15; means 7:15am
//Note using the 24hour clock means extHour=13; means 1:00pm fyi
extern int  extHour=7;
extern int  extMinutes=15;

//++++ These are adjusted for 5 digit brokers.

int     pips2points;    // slippage  3 pips    3=points    30=points
double  pips2dbl;       // Stoploss 15 pips    0.0015      0.00150
int     Digits.pips;    // DoubleToStr(dbl/pips2dbl, Digits.pips)

    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   if (Digits == 5 || Digits == 3)
   {    // Adjust for five (5) digit brokers.
      pips2dbl    = Point*10; pips2points = 10;   Digits.pips = 1;
   } 
   else 
    {    
      pips2dbl    = Point;    pips2points =  1;   Digits.pips = 0; 
    }
    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
     
   
    
//---- 

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }
   
    
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {

datetime now = Time[0],
         bod = now - now % 86400,
         Time_Select = bod + extHour*3600+extMinutes,
         HR1800 = bod + 18*3600,  //I'll make extern for this too
         HR2100 = bod + 21*3600;  //and this
         
if (Time[1] == Time_Select)
   {
   double Low_Mark = Low[1] - 20*pips2dbl,
          High_Mark = High[1] + 20*pips2dbl;
   Print (Low[1], " = Low ", Low_Mark," = Low_Mark"); 
   Print (TimeToStr(Time[1])," Low =", Low[1], " High =", High[1]);
   }
   {
   }
   
//if (Time[1] >= HR1800 && Time[1] < HR2100)
      
          
   return(0);
  }    

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

                
 
Agent86:
Hier sind einige meiner Fortschritte, für eine wählbare Zeit und/oder Zeitspanne

Unvollständig und grob, aber wenigstens verstehe ich jetzt alle Beiträge, vielen Dank


Und dennoch istTime_Select falsch.
 
Ja, danke, ich sehe es
Ich dachte darüber nach, gleich nachdem ich es gepostet hatte, aber ging zum Abendessen lol

Time_Select = bod + extHour*3600 + extMinutes*60,
Ich weiß, dass ich irgendwann herausfinden kann, wie ich einfach eine tatsächliche Benutzereingabe für 7:15 oder so verwenden kann, aber es ist trotzdem schön, die Ergebnisse zu sehen, nach denen ich gesucht habe.

Ich denke, dass ich an einem Funktionsverständnis nach dem anderen arbeiten muss. Ich habe wahrscheinlich zu viele Informationen in das Lernen der Syntax gepackt und bin nicht gut genug jede einzelne Wörterbuchfunktion und jedes Thema durchgegangen, um mir die Dinge wirklich zu erleichtern.

Wie auch immer, nach all dieser Zeit habe ich endlich meine Zeit im Griff, einschließlich der Verwaltung meiner eigenen, um mql besser lernen zu können.

Nochmals vielen Dank an alle
 
Warum kann ich das nicht einfach für die Zeitauswahl verwenden? Habe ich das komplizierter gemacht als es war?

datetime var1=StrToTime("7:15");

if(Time[1] == var1)
{
}
Ist irgendetwas falsch daran?
 
Agent86:
Ja, danke, ich sehe es.
Ich habe sofort daran gedacht, nachdem ich es gepostet hatte, bin aber zum Essen gegangen lol

:-)
 
Jeder sehen irgendwelche Probleme mit der Verwendung von StrToTime auf diese Weise für Zeit und Straddle-Auswahlen?

Bitte um Ratschläge, danke

//+------------------------------------------------------------------+
//|                                      straddle_with_timerange.mq4 |
//|                           Agent86's Candle Straddle with timer   |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Agent86"


//---- input parameters
extern double    TakeProfit=20.0;
extern double    Lots=0.1;
extern double    StopLoss=10.0;
extern int       MagicNumber=1586;

extern string    Straddle_Candle="7:15"; //select your straddle candle
extern string    StartTime="7:15"; //select your start time range
extern string    EndTime="17:00"; //select your end time range


//++++ These are adjusted for 5 digit brokers.

int     pips2points;    // slippage  3 pips    3=points    30=points
double  pips2dbl;       // Stoploss 15 pips    0.0015      0.00150
int     Digits.pips;    // DoubleToStr(dbl/pips2dbl, Digits.pips)

    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   if (Digits == 5 || Digits == 3)
   {    // Adjust for five (5) digit brokers.
      pips2dbl    = Point*10; pips2points = 10;   Digits.pips = 1;
   } 
   else 
    {    
      pips2dbl    = Point;    pips2points =  1;   Digits.pips = 0; 
    }
    // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl
     
   
    
//---- 

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//---- 
   
//----
   return(0);
  }
   
    
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {

datetime Candle_Select = StrToTime(Straddle_Candle),
         Start_Time = StrToTime(StartTime),
         End_Time = StrToTime(EndTime);
         
if (Time[1] == Candle_Select)
   {
   double Low_Mark = Low[1] - 20*pips2dbl,
          High_Mark = High[1] + 20*pips2dbl;
   Print (Low[1], " = Low ", Low_Mark," = Low_Mark"); 
   Print (TimeToStr(Time[1])," Low =", Low[1], " High =", High[1]);
   }
      
          
   return(0);
  }    

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

                
Grund der Beschwerde: