Fonctions utiles de KimIV - page 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);
}
Cela fera....
 
kharko >> :

Cette variante s'adaptera à....

Mettez OpenHour et CloseHour en paramètres et ceux qui veulent avoir plusieurs intervalles seront satisfaits :

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

et les combineront comme ils le souhaitent.

 
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);
}
Pas de problème...
 

posté une fois auparavant

//-----------------------------------------------------------------------------+
// Функция контроля времени торговли                                           |
//-----------------------------------------------------------------------------+
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);
}
 

également

//-----------------------------------------------------------------------------+
// Определяет дату конца торговли                                              |
//-----------------------------------------------------------------------------+
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);
}
et on s'arrête là.
 
xrust >> :
...et c'est la fin de tout ça.

"Ne vous précipitez pas pour nous enterrer, nous avons encore des choses à faire ici..." :))

 
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);
}
Si vous avez également besoin de minutes pour un intervalle de temps plus précis, par exemple pour un scalpeur de nuit.
 
khorosh >>:
Если нужны ещё и минуты для более точного определения временного интервала, например для ночного скальпера.

Bien sûr, vous avez besoin d'au moins quelques dizaines de minutes.

Vous avez également besoin des jours de la semaine et de la possibilité de définir des heures individuelles pour chaque jour de la semaine et de l'heure du jour.

Sélectionner/enchérir un certain jour.

La pratique montre que les modèles fonctionnent différemment selon les jours de la semaine.

 
Bonjour, KimIV. J'ai besoin de vos conseils, ou plutôt de votre aide. Trouvé dans la base de données e-Smart_Tralling.mq4, auteur inconnu...mais comme clarifié dans la branche l'auteur a pris dans base - trailing conseiller-assistant I.Kim aka KimIV. J'ai essayé de modifier le code de cet EA : 1.pour ne pas clôturer toutes les transactions rentables, par exemple, lors de l'exécution d'un ordre, si je mets une cible et mon take profit, le conseiller ne clôture pas cette transaction ; 2. pour le faire fonctionner avec toutes les paires de devises et avec stoploss. Je n'ai pas encore beaucoup d'expérience en programmation, peut-être pouvez-vous me suggérer ce qu'il faut changer. Je vous en remercie d'avance.
 

Une formule simple pour la génération automatique d'un magik pour les EAs travaillant simultanément sur différents instruments dans le même compte m'est venue à l'esprit.

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);
}