Debate sobre la implantación de los consejeros. - página 8

 
altec3:

¡Buenas tardes!

Estoy intentando escribir una función que determine el beneficio del día actual:

¿Puede decirme cómo en la función

Especifique el período a partir del día actual. Está claro que el final del periodo to_date=TimeCurrent(), ¿cómo especificar correctamente el inicio del periodo from_date, para que empiece desde 00h:00m:00c del día actual?

Elige al gusto:

datetime  iTime(
   const string        symbol,          // символ
   ENUM_TIMEFRAMES     timeframe,       // период PERIOD_D1
   int                 shift            // сдвиг
   );
int  CopyTime(
   string           symbol_name,     // имя символа
   ENUM_TIMEFRAMES  timeframe,       // период PERIOD_D1
   int              start_pos,       // откуда начнем 0
   int              count,           // сколько копируем 1
   datetime         time_array[]     // массив для копирования времени открытия. Объявить заранее

O el más, el más. Lo que ya se ha sugerido.

 
Vladimir Karputov:

Suponiendo que hoy haya habido al menos un tick, el algoritmo es el siguiente: la hora actual se envía a la estructuraMqlDateTime. A continuación, ponga a cero las horas, los minutos y los segundos en esta estructura. Queda por convertir la estructura editada en un tiempo:


Resultado:

Gracias. Otra pregunta, si añado una función

//+------------------------------------------------------------------+
//|Функция возвращает прибыль за текущие сутки                       |
//+------------------------------------------------------------------+
double Day_Profit()
  {
//--Запрашиваем историю сделок за последнии сутки
   HistorySelect(TimeCurrent()-PeriodSeconds(PERIOD_D1),TimeCurrent());
   uint     total       =HistoryDealsTotal();   // количество сделок в истории
   ulong    ticket      =0;                     // тикет сделки в истории
   long     type        =0;                     // тип сделки
   double   profit      =0.0;                   // финансовый результат сделки
   double   commission  =0.0;                   // коммиссия по сделке
   double   DayProfit   =0.0;                   // прибыль за текущие сутки
//--- for all deals
   for(uint i=0; i<total; i++)
     {
      if((ticket=HistoryDealGetTicket(i))>0)       //--- если имеются сделки, то...
        {
         profit      =HistoryDealGetDouble(ticket,DEAL_PROFIT);
         commission  =HistoryDealGetDouble(ticket,DEAL_COMMISSION);
         if(HistoryDealGetInteger(ticket,DEAL_TYPE)!=DEAL_TYPE_BALANCE)
           {
            DayProfit+=(profit+commission);
           }
        }
     }
   return (DayProfit);
  }
//+------------------------------------------------------------------+

al Asesor Experto, ¿cómo se actualizará el periodo de análisis de las operaciones? Por ejemplo, si mi Asesor Experto funciona durante un par de días, cuando llegue el día siguiente, ¿se actualizará el periodo?

Implementación de la función anterior en el Asesor Experto:

void OnTick()
  {
   if(Day_Profit()<ProfitMax)
     {
      ExtExpert.OnTick();
     }
   return;
  }
 
altec3:

Gracias. Otra pregunta, si añado la función:

al Asesor Experto, ¿cómo se actualizará el periodo de análisis de las operaciones? Por ejemplo, si el Asesor Experto funciona durante un par de días, ¿con el día siguiente se actualizará el período?

La implementación de la función anterior en el Asesor Experto:

La hora debe ajustarse desde el principio de un día hasta la hora actual + día o + tres días.

Ya sabes cómo determinar el comienzo del día.

 

¡Buenas tardes!

Es necesario determinar el spread de un símbolo antes de colocar una orden en él. La biblioteca estándar MQL5 incluye la clase CSymbolInfo. Fue entonces cuando empecé a preguntarme qué manera es mejor de implementar esta comprobación: ¿a través de CSymbolInfo o utilizando una función? Por favor, experto, ¡aconséjeme qué hacer! Si esta cuestión ya se ha planteado, le agradeceré mucho que me oriente en la dirección correcta.

 

¡Buenas tardes!

Necesito un consejo. ¿Cómo se calculan las barras cuando un EA contiene módulos de señal de diferentes marcos temporales?

Por ejemplo, tengo un Asesor Experto simple que tiene dos módulos de señal basados en el estocástico (cuando la línea principal está por encima de la línea de señal en 0 y 1 barras - COMPRA, por debajo de la línea de señal en 0 y 1 barras - VENTA) - uno en H1 y el otro en M15. Los pesos de ambos módulos son los mismos y en el Asesor Experto el umbral para la apertura de una operación se establece de tal manera que las señales de ambos módulos deben ser consideradas simultáneamente. El Asesor Experto trabaja en el gráfico en el marco temporal H1. Si miras la captura de pantalla del H1, todo está claro - la línea principal es más alta que la línea de señal en las últimas y penúltimas barras y por eso compramos. Pero en el gráfico de M15 no puedo entender qué barra debe ser considerada como 0 y cuál como 1? El acuerdo está abierto, lo que significa que el 15 de mayo también debe cumplirse la condición del acuerdo.

Archivos adjuntos:
H1.png  43 kb
M15.png  21 kb
 
altec3:

Por ejemplo, hay un simple Asesor Experto que incluye dos módulos de señal basados en el estocástico (cuando la línea principal está por encima de la línea de señal en 0 y 1 barras - COMPRA, por debajo de la línea de señal en 0 y 1 barras - VENTA) - uno para H1, el otro para M15.

¡La barra cero es malvada! El indicador en la historia que se ve calculado como en 1 barra - cerrado (bueno, simplificado, si no se tiene en cuenta la posibilidad de volver a cruzar). En consecuencia, la estrategia se construye sobre una barra cerrada y en el probador, el indicador del TF mayor en MT4 mostrará el resultado de incluso una barra cero, como una cerrada - es decir, del futuro.
El resultado es la decepción: una cosa es diferente en el probador, mientras que lo contrario es cierto en tiempo real.
Hazme caso: he perdido la mitad de mi vida intentando averiguar dónde está el error del sistema. Para el mapeo correcto de los indicadores de TFs más altos en uno más bajo se necesita un enfoque especial. Por lo general, con Pushka, por ejemplo, todo es simple - multiplicar el período por la relación de TF y el orden, pero si hay cálculos no lineales, entonces sólo hay imitación de cálculo en 0 bar.
Estuve rompiendo el RSI durante un año para conseguir que mostrara correctamente el TF mayor en el gráfico.
No insisto, recomiendo como mínimo utilizar las señales de las barras cerradas, especialmente de las más altas en relación con el marco de tiempo actual, y también comprobar especialmente los indicadores personalizados para la re-calificación.
 
altec3:

¡Buenas tardes!

Necesito un consejo. ¿Cómo se consideran las barras si un EA contiene módulos de señales de diferentes marcos temporales?

Por ejemplo, tengo un Asesor Experto simple que tiene dos módulos de señal basados en el estocástico (cuando la línea principal está por encima de la línea de señal en 0 y 1 barras - COMPRA, por debajo de la línea de señal en 0 y 1 barras - VENTA) - uno en H1 y el otro en M15. Los pesos de ambos módulos son los mismos y en el Asesor Experto el umbral para la apertura de una operación se establece de tal manera que las señales de ambos módulos deben ser consideradas simultáneamente. El Asesor Experto trabaja en el gráfico en el marco temporal H1. Si miras la captura de pantalla del H1, todo está claro - la línea principal es más alta que la línea de señal en las últimas y penúltimas barras y por eso compramos. Pero en el gráfico de M15 no puedo entender qué barra debe ser considerada como 0 y cuál como 1? El acuerdo está abierto, lo que significa que el 15 de mayo la condición para el acuerdo debe cumplirse también.

En el historial se ven barras ya cerradas y la barra cero no es un mal, pero es móvil y hay que tenerla en cuenta, porque se forma en función del precio actual y los cambios de dirección estocásticos son posibles cuando los precios saltan, por lo quees más sensible, puede cerrarse por ejemplo.

Intenta añadir una barra más para abrir 0 && 1 && 2. Quizás las ciruelas se reduzcan.

Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Приказы на проведение торговых операций оформляются ордерами. Каждый ордер имеет множество свойств для чтения, информацию по ним можно получать с помощью функций Идентификатор позиции, который ставится на ордере при его исполнении. Каждый исполненный ордер порождает сделку, которая открывает новую или изменяет уже существующую позицию...
Razón de la queja: