Caratteristiche utili da KimIV - pagina 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);
}
Questo farà....
 
kharko >> :

Questa variante si adatta....

Mettete OpenHour e CloseHour nei parametri e chi vuole avere diversi intervalli sarà soddisfatto:

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

e li combinano come vogliono.

 
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);
}
Nessun problema...
 

inviato una volta prima

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

anche

//-----------------------------------------------------------------------------+
// Определяет дату конца торговли                                              |
//-----------------------------------------------------------------------------+
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);
}
e la chiudiamo qui.
 
xrust >> :
...e questa è la fine.

"Non affrettatevi a seppellirci, abbiamo ancora delle cose da fare qui..." :))

 
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);
}
Se hai anche bisogno di minuti per un intervallo di tempo più preciso, ad esempio per un bagarino notturno.
 
khorosh >>:
Если нужны ещё и минуты для более точного определения временного интервала, например для ночного скальпера.

Naturalmente avete bisogno di almeno decine di minuti.

Avete anche bisogno di giorni della settimana e la possibilità di impostare orari individuali per ogni giorno della settimana e

Selezionando/foraggiando un certo giorno.

La pratica dimostra che gli schemi funzionano in modo diverso nei diversi giorni della settimana.

 
Buon pomeriggio, KimIV. Ho bisogno del vostro consiglio, o meglio del vostro aiuto. Trovato nel database e-Smart_Tralling.mq4, autore sconosciuto...ma come chiarito nel ramo l'autore ha preso in base - trailing advisor-assistente I.Kim aka KimIV. Ho cercato di cambiare il codice di questo EA: 1. per chiudere non tutte le operazioni redditizie, per esempio, quando eseguo un ordine, se metto un target e il mio take profit, l'advisor non chiude questa operazione; 2. per farlo funzionare con tutte le coppie di valute e con stoploss. Non ho ancora molta esperienza di programmazione, forse potete suggerirmi cosa cambiare. Vi sono molto grato in anticipo.
 

Mi è venuta in mente una semplice formula per la generazione automatica di un magik per gli EA che lavorano simultaneamente su diversi strumenti nello stesso conto.

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