Nützliche Funktionen von KimIV - Seite 76

 
bool TimeTrade()
{
//----
   datetime current=TimeCurrent();
   if (((TimeHour( current) >= OpenHour || TimeHour( current) < CloseHour) && CloseHour< OpenHour) ||
      (TimeHour( current) >= OpenHour && TimeHour( current) < CloseHour && CloseHour> OpenHour)) 
      return(true);
   else
      return(false);
}
Dies wird....
 
kharko >> :

Diese Variante passt....

Geben Sie OpenHour und CloseHour in die Parameter ein, und diejenigen, die mehrere Intervalle haben möchten, werden zufrieden sein:

Make TimeTrade(OpenHour1, CloseHour1), TimeTrade(OpenHour2, CloseHour2), ......

und werden sie nach Belieben kombinieren.

 
bool TimeTrade(int OpenHour,int CloseHour)
{
//----
   datetime current=TimeCurrent();
   if (((TimeHour( current) >= OpenHour || TimeHour( current) < CloseHour) && CloseHour< OpenHour) ||
      (TimeHour( current) >= OpenHour && TimeHour( current) < CloseHour && CloseHour> OpenHour)) 
      return(true);
   else
      return(false);
}
Kein Problem...
 

schon einmal gebucht

//-----------------------------------------------------------------------------+
// Функция контроля времени торговли                                           |
//-----------------------------------------------------------------------------+
bool TradeTime(int StartTradeHour,int EndTradeHour){
if(! TradeOfTime){
if(DayOfWeek()==6||DayOfWeek()==0){
gTimeEngl="Start trade in  01:00 am";
gTimeRus="Начало торговли в понедельник в 01:00";
return(false);}
return(true);}
if(DayOfWeek()==6||DayOfWeek()==0){
gTimeEngl="Start trade in  01:00 am";
gTimeRus="Начало торговли в понедельник в 01:00";
return(false);}
if( StartTradeHour< EndTradeHour){
  if(TimeHour(TimeCurrent())>= StartTradeHour&&TimeHour(TimeCurrent())< EndTradeHour
    ||( CountOpOrd("0")>0)){
    gTimeEngl=StringConcatenate("By the end of trading session :",DoubleToStr(( EndTradeHour-TimeHour(TimeCurrent())),0)," hours");
    gTimeRus=StringConcatenate("До конца торговой сессии :",DoubleToStr(( EndTradeHour-TimeHour(TimeCurrent())),0)," часов");
    return(true);}}
if( StartTradeHour> EndTradeHour){
  if(TimeHour(TimeCurrent())>= StartTradeHour||TimeHour(TimeCurrent())< EndTradeHour
    ||( CountOpOrd("0")>0)){
    gTimeEngl=StringConcatenate("By the end of trading session :",DoubleToStr(( EndTradeHour-TimeHour(TimeCurrent())),0)," hours");
    gTimeRus=StringConcatenate("До конца торговой сессии :",DoubleToStr(( EndTradeHour-TimeHour(TimeCurrent())),0)," часов");
    return(true);}}    
gTimeEngl=StringConcatenate("resting to : ", StartTradeHour,": 00");   
gTimeRus=StringConcatenate("отдыхаем до : ", StartTradeHour,": 00");  
return(false);
}
 

auch

//-----------------------------------------------------------------------------+
// Определяет дату конца торговли                                              |
//-----------------------------------------------------------------------------+
bool EndTradeForDateTime(string EndTradeData){//"Enterting Date of End trading in eeee.mm.dd";
if( EndTradeData==""){
gInf1rus="Дата конца торговли не определена ";
gInf1engl="Date of the end of trading is not defined ";
gColor1=LimeGreen;
return(false);
}
int EndData=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE));
int DataEnd=StrToTime( EndTradeData);
if( EndData>= DataEnd){
gInf1rus="Торговля остановленна "+ EndTradeData;
gInf1engl="Trading stopped "+ EndTradeData;
gColor1=Red;
return(true);
}
gInf1rus="Торговля будет остановленна "+ EndTradeData;
gInf1engl="Trading will be stopped "+ EndTradeData;
gColor1=LimeGreen;
return(false);
}
und wir machen Schluss für heute.
 
xrust >> :
...und das war's dann auch schon.

"Beeilt euch nicht, uns zu begraben, wir haben hier noch einiges zu tun..." :))

 
bool IsTradeTime()
{
if(Hour()> Hour_Stop_Trade  && Hour()< Hour_Start_Trade)
	return(false);
 if(Hour()== Hour_Stop_Trade && Minute()>= Minute_Stop_Trade)
	return(false);  
 if(Hour()== Hour_Start_Trade && Minute()< Minute_Start_Trade)
	return(false);
return(true);
}
Wenn Sie auch Minuten für ein genaueres Zeitintervall benötigen, z. B. für einen Nachtscaler.
 
khorosh >>:
Если нужны ещё и минуты для более точного определения временного интервала, например для ночного скальпера.

Natürlich brauchen Sie mindestens ein paar Dutzend Minuten.

Sie benötigen außerdem Wochentage und die Möglichkeit, für jeden Wochentag individuelle Zeiten festzulegen und

Auswahl/Angebot für einen bestimmten Tag.

Die Praxis zeigt, dass die Muster an verschiedenen Wochentagen unterschiedlich funktionieren.

 
Guten Tag, KimIV. Ich brauche Ihren Rat, oder besser gesagt Ihre Hilfe. Gefunden in der Datenbank e-Smart_Tralling.mq4, Autor unbekannt...aber wie in der Verzweigung geklärt, nahm der Autor in Basis - nachlaufende Berater-Assistentin I.Kim aka KimIV. Ich habe versucht, im Code dieses EA zu ändern: 1.to schließen nicht alle profitable Trades, zum Beispiel, wenn die Ausführung einer Bestellung, wenn ich ein Ziel und meine Take-Profit, Berater nicht schließen dieses Geschäft; 2. um es mit allen Währungspaaren und mit Stoploss arbeiten. Ich habe noch nicht viel Programmiererfahrung, vielleicht können Sie mir vorschlagen, was ich ändern sollte. Ich bin Ihnen im Voraus sehr dankbar.
 

Eine einfache Formel für die automatische Generierung von Magie für EAs, die gleichzeitig auf verschiedenen Instrumenten im selben Konto arbeiten, kam mir in den Sinn.

int Magic= GetMagic( ExpertName+Symbol(),Period());
//-----------------------------------------+

//+----------------------------------------------------------------------------+
//|  Автор    :  KimIV style,  http://www.kimiv.ru                             |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.04.2009                                                     |
//|  Описание : Возвращает сумму символьных кодов всех символов входной строки |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    simbolstring - строка для расчета                                       |
//|    multiplier   - дополнительный множитель                                 |
//+----------------------------------------------------------------------------+

int GetMagic(string simbolstring, int multiplier){
   int res=0;
   int len=StringLen( simbolstring);
   for(int i=0; i< len; i++)
       res+=StringGetChar( simbolstring, i);      
   return( res* multiplier);
}