Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 66

 
mario065:

Hola,

Por supuesto que no.

Si hay más de un pavo, hay que hacer tantas parejas para cada uno como come.

Un manejador para utilizar todos los pares.

Utilizar un asa de uno en uno, es decir, copiar los buffers de los indicadores y luego asignar el valor del siguiente indicador al asa.

Pero no entiendo por qué hay que ahorrar en asas cuando son enteros elementales y no tienen casi ningún efecto sobre los recursos?

 
Reshetov:

Utiliza los manejadores uno a uno, es decir, copia los buffers de los indicadores y luego asigna el valor del siguiente indicador al manejador.

Pero no entiendo por qué hay que ahorrar en asas cuando son enteros elementales y no tienen prácticamente ningún efecto sobre los recursos?

Hola a todos.

El año pasado escribí una función externa como ésta:

void CalculatePairs(string dSymbol) {

   atrHandle1=iATR(dSymbol, TimeFrame1, ATRPeriod);
   atrHandle2=iATR(dSymbol, TimeFrame5, ATRPeriod);
   atrHandle3=iATR(dSymbol, TimeFrame15, ATRPeriod);
   atrHandle4=iATR(dSymbol, TimeFrame30, ATRPeriod);
   atrHandle5=iATR(dSymbol, TimeFrame60, ATRPeriod);
   muvHandle1=iMA(dSymbol,TimeFrame1,MAPeriod,0,MAMethod,InpPr);
   muvHandle2=iMA(dSymbol,TimeFrame5,MAPeriod,0,MAMethod,InpPr);
   muvHandle3=iMA(dSymbol,TimeFrame15,MAPeriod,0,MAMethod,InpPr);
   muvHandle4=iMA(dSymbol,TimeFrame30,MAPeriod,0,MAMethod,InpPr);
   muvHandle5=iMA(dSymbol,TimeFrame60,MAPeriod,0,MAMethod,InpPr);
   if(atrHandle1<0 || atrHandle2<0 || atrHandle3<0 || atrHandle4<0 || atrHandle5<0 ||
   muvHandle1<0 || muvHandle2<0 || muvHandle3<0 || muvHandle4<0 || muvHandle5<0 )
     {
      Alert("Error Creating Handles for indicators - error: ",GetLastError(),"!!");
     }

   double ma1[],ma2[],ma3[],ma4[],ma5[];
   double atr1[],atr2[],atr3[],atr4[],atr5[];

   ArraySetAsSeries(ma1, true);ArraySetAsSeries(ma2, true);ArraySetAsSeries(ma3, true);
   ArraySetAsSeries(ma4, true);ArraySetAsSeries(ma5, true);
   ArraySetAsSeries(atr1, true);ArraySetAsSeries(atr2, true);ArraySetAsSeries(atr3, true);
   ArraySetAsSeries(atr4, true);ArraySetAsSeries(atr5, true);

   if (NormalizeDouble(CopyBuffer(muvHandle1,0,0,1,ma1),4) < 0){Print("CopyBuffermuvHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(muvHandle2,0,0,1,ma2),4) < 0){Print("CopyBuffermuvHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(muvHandle3,0,0,1,ma3),4) < 0){Print("CopyBuffermuvHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(muvHandle4,0,0,1,ma4),4) < 0){Print("CopyBuffermuvHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(muvHandle5,0,0,1,ma5),4) < 0){Print("CopyBuffermuvHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(atrHandle1,0,0,1,atr1),4) < 0){Print("CopyBufferatrHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(atrHandle2,0,0,1,atr2),4) < 0){Print("CopyBufferatrHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(atrHandle3,0,0,1,atr3),4) < 0){Print("CopyBufferatrHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(atrHandle4,0,0,1,atr4),4) < 0){Print("CopyBufferatrHandle error =",GetLastError());}
   if (NormalizeDouble(CopyBuffer(atrHandle5,0,0,1,atr5),4) < 0){Print("CopyBufferatrHandle error =",GetLastError());}

   Result = 0;
}
double FGroup(){
      CalculatePairs(Currency1);{
         Pair1 = Result;}

Por supuesto, hasta que hizo los cálculos dio el error 4806, pero luego funciona bien.

Hoy he abierto este código y me he preguntado si hay otra manera.

Un error es un error.

¿Cuántos Handles debería tener para 8 pares y 5 plazos?

Esto no es una cuestión de recursos, tengo que hacer algo mejor.

Документация по MQL5: Основы языка / Функции / Описание внешних функций
Документация по MQL5: Основы языка / Функции / Описание внешних функций
  • www.mql5.com
Основы языка / Функции / Описание внешних функций - Документация по MQL5
 
mario065:

Hola a todos.

El año pasado escribí una función externa como ésta:

Por supuesto, hasta que hizo los cálculos, dio el error 4806, pero luego funciona bien.

Hoy he abierto este código y me he preguntado si hay otra manera.

  1. ¿Una forma de qué?
  2. ¿Para qué necesito la función CalculatePairs() si no muestra nada más que errores?

Elimina esta misma función de tu código y duerme tranquilo.

 
Reshetov:
  1. ¿El camino de qué?
  2. ¿Para qué necesitas la función CalculatePairs() si no produce más que errores?

Elimina esta misma función de tu código y duerme tranquilo.

Hay algunos cálculos "grandes" que no se muestran.

Luego, otras funciones toman el par seleccionado y hacen algo de nuevo.

El método es sencillo.

Por ejemplo:

Hacemos una manija del indicador, no tiene símbolo, timeframe.

Cuando creamos un CopyBuffer, indicamos el marco temporal y el par.

Por ejemplo:

int OnInit()

El aspecto es el siguiente: Mango = nombre del indicador

void OnTick()

Se vería así: CopyBuffer(símbolo especificado, marco temporal, copiar desde, cuánto copiar, dónde copiar)

Esto es sólo un diálogo :) con usted.

 
mario065:

Hay algunos cálculos "grandes" que no se han mostrado.

Ya veo. Tienes ArraySetSeries() aplicado a arrays sin datos, es decir, antes de que se cargue la información en ellos, mientras que lo necesitas después de copiar los buffers.
 
Reshetov:
Ya veo. Tienes ArraySetSeries() aplicado a arrays sin datos, es decir, antes de que se haya cargado información en ellos, mientras que nosotros lo necesitamos después de copiar los buffers.

Exactamente.

Pero creo que será más fácil para todos si se hace en CopyBuffer - es decir, se especifica qué par y marco.

El propio indicador hace el mismo cálculo, si sólo especifica qué par y marco.

Si la propia arquitectura de MT5 permite hacerlo más fácilmente.

Buena idea :) .

 
Reshetov:
Ya veo. Tienes ArraySetSeries() aplicado a arrays sin datos, es decir, antes de que se haya cargado información en ellos, mientras que lo quieres después de copiar los buffers.
No hay diferencia.
 
he configurado todo, firmado todo, hecho ajustes en el terminal, pero no quiero operar automáticamente. cuando trato de colocar una orden pendiente, se instala y me escribe sobre la sincronización y borrar todas las órdenes en el terminal, y luego veo las órdenes del proveedor. ¿qué tengo que hacer?
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
Yedelkin:

Si el Asesor Experto utiliza MFI, entonces su código debe contener una línea con la obtención del mango de este indicador:"MQL5 Reference / Technical Indicators / iMFI ". Por lo tanto, el manejo del indicador de media móvil se describe aquí:"MQL5 Reference Guide / Technical Indicators / iMA ".

Intente también leer el artículo"Indicador por indicador en MQL5".

He leído el artículo. Sin embargo, no respondió a mi pregunta "¿Cómo puedo eliminar las asas iMA situadas en la ventana del indicador MFI y registrar el precio de cierre de la barra?".

La manija iMA que mencionas no se aplica al iMA ubicado en la ventana del indicador. Descripción por el método estándar el asesor elimina el mango iMA del gráfico.
 
Leser: Lea el artículo. Sin embargo, no respondió a mi pregunta "¿Cómo puedo eliminar las asas del iMA situadas en la ventana del indicador IMF y registrar el precio de cierre de la barra?"

En un principio, usted expuso el problema de la siguiente manera: "El Asesor Experto utiliza MFI; Ma no está en el gráfico (ventana #1), sino en la ventana con el indicador MFI (ventana #2)". Le respondí:"Si su Asesor Experto utiliza MFI, entonces su código debe contener una línea con el manejo de este indicador: "MQL5 Reference Guide / Technical Indicators / iMFI" .

Por lo tanto, sugiero empezar por averiguar cómo exactamente su Asesor Experto obtiene el manejo de indicadores de la "ventana #2". Y allí pensaremos en algo.

Leser : He leído el artículo. Sin embargo, no responde a mi pregunta ". iMA situado en la ventana del indicador MFI y registrando el precio de cierre de la barra".
Una pregunta aclaratoria: ¿sobre qué datos se construye el indicador MA: sobre los valores del indicador MFI o sobre los precios de cierre de barra? No se ha dicho nada antes sobre "registrar los precios de cierre de los bares". Por eso he facilitado un enlace al artículo "Indicador de Indicador".