Preguntas de un "tonto" - página 132

 
Yedelkin:

Si está interesado en calcular los datos de otro indicador, puede hacerlo de la siguiente manera. Primero, creamos otro indicador con su propio método de cálculo de datos, y luego tomamos el handle de este indicador(MQL5 Reference Guide / Technical Indicators / iCustom ) y este handle se utiliza en el nuevo indicador. Fíjate bien en el ejemplo. Si tiene alguna duda sobre el ejemplo

Tengo preguntas. Todavía no lo entiendo.
Ok, tomemos Custom Moving Average.mq5 como base.

añadir el nuevo procedimiento de suavizado MODE_MYMA - no hay problema.

la pregunta es como alimentar los datos. a través del i-cast de otro indicador? ok. tomemos cualquier indicador hecho por la segunda forma como ejemplo (si el indicador es hecho por la primera forma... no se como tomar el high-low... entonces significa solo la segunda forma?)

Bien, declaremos

int nuevoManejo;

definirlo en el onInit (parabólico, es decir, lo que sea, lo principal es el 2º tipo, ¿no? Entiendo cómo implementar el mío)

newHandl=iCustom(_Symbol,0, "ParabolicSAR.mq5",0.02,0.2);

y luego? en onCalculate lo alimentamos en lugar del precio estándar?

CalculateEMA(rates_total,prev_calculated,begin,newHandl);???

¿jura o qué? Por favor, explique, no entiendo... (((((

sí, sigo utilizando las plantillas de mcl4. allí, es simple - bucle, datos (¡cualquiera!) tomar, suavizar, salida.
Pero aquí.... No sé a qué agarrarme...

 
GameOver:

(si el indicador se hace por la primera forma... no entendí de donde tomar el alto-bajo... entonces significa solo por la segunda forma?)

Sí, acerca de la alta-baja era sólo un ejemplo, cómo tratar los artículos por sí mismo. Para la primera forma se puede tomar la tarea de dibujar la línea de close[i]/2 [o sqrt(close[i]/2 )]. En general, también se pueden hacer un montón de variaciones con una sola matriz.

GameOver:

Bien, declaremos

int nuevoManejo;

en onInit definirlo (como un ejemplo - parabólica. lo que sea, lo principal es el segundo tipo, ¿no? cómo implementar su propio es más o menos claro)

newHandl=iCustom(_Symbol,0, "ParabolicSAR.mq5",0.02,0.2);

Eso está bien. Lo terminaré ahora.

Si el asa del indicador es correcta, significa que podemos dirigirnos a los búferes de este indicador. Mira de nuevo el ejemplo de MQL5 Reference / Technical Indicators / iCustom Hay una línea:

//--- скопируем значения индикатора Custom Moving Average в наш индикаторный буфер
   int copy=CopyBuffer(MA_handle,0,0,rates_total,Label1Buffer);

Ahora lee MQL5 Reference / Access to Timeseries and Indicators / CopyBuffer (...De nuevo: muchas cosas se aclaran al analizar los ejemplos línea por línea).

Intenta recibir los datos de cualquier búfer indicador que haya seleccionado. Yo no tengo un terminal, pero en la parabólica se puede ver qué buffers se calculan y su numeración.

Документация по MQL5: Технические индикаторы
Документация по MQL5: Технические индикаторы
  • www.mql5.com
Технические индикаторы - Документация по MQL5
 

Pregunta sobre la descripción de las funciones ArrayIsSeries() y ArrayGetAsSeries().

Existe una frase de este tipo en el Manual de Referencia:"Las matrices que se pasan a la función reflejan los datos de los precios, es decir, estas matrices tienen el signo de la serie temporal y la función ArrayIsSeries() devolverá true al comprobar estas matrices . Pero aún así, en cualquier caso, la dirección de indexación debe comprobarse sólo con la funciónArrayGetAsSeries()".

De la lectura literal se desprende que, aunque la función ArrayIsSeries( ) devuelva true (es decir, confirme que el array que se está comprobando es un array de series temporales), de todas formas la dirección de indexación sólo debería ser comprobada por la función ArrayGetAsSeries(). Entonces no entiendo la razón de introducir la función ArrayIsSeries() si sus resultados deben ser comprobados adicionalmente de todos modos. ¿Qué sentido tiene? ¿Es posible que la matriz sea una serie temporal, pero su dirección de indexación no será la misma que la de una serie temporal (el indicador AS_SERIES no estará activado)?

 


Al pasar de Mql4 a Mql5 ha aparecido un error de Lot:

Lote" - la constante no puede ser modificada

input double Lot = 0.1; // Lot

if (MartingaleType ==7)
 {
 if (Counter1==1)
 Lot=Lots() ;
}

¿Cómo se corrige?


 
Dark.Angel:


Al pasar de Mql4 a Mql5, se ha producido un error en el lote:

Lote" - la constante no puede ser modificada

¿Cómo se arregla?

No se puede. No es un error, es una característica. :)

En mql5 las variables de entrada no son modificables (const).

Hacer un desacoplamiento simple:

input int x=5;
input double StartLot = 0.01;

int X;
double Lot;
...
...
void OnInit()
  {
   ....
    X=x;
    Lot=StartLot;
   .......
  }
.....
void OnStart()
  {
   ....
   Lot=Lots();
  }
 

En la secciónMQL5 Manual / Array Operations / ArraySetAsSeries, hay un ejemplo cuando la función ArraySetAsSeries() se aplica al array const datetime&time[] en cada tick:

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---  будем хранить время открытия текущего нулевого бара
   static datetime currentBarTimeOpen=0;
//--- перевернем доступ к массиву time[] - сделаем как в таймсерии
   ArraySetAsSeries(time,true);
//--- return value of prev_calculated for next call
   return(rates_total);
  }

¿Es esto lo que todo el mundo hace (voltear el array en cada tick) para trabajar con el array como una serie temporal?

Otra pregunta: ¿pueden las matrices utilizadas por OnCalculate() cambiar arbitrariamente su dirección de indexación? ¿O es suficiente con comprobar esta dirección una vez?

 


Al portar de Mql4 a Mql5 un error SymbolInfoDouble:
'SymbolInfoDouble' - no se puede aplicar ninguna de las sobrecargas a la llamada a la función

на Mql4:
double a = balance / MarketInfo (Symbol (), MODE_MARGINREQUIRED) - 0.2 ; 

на Mql5:
double a = balance / SymbolInfoDouble(Symbol(), 0) - 0.2 ;

¿Cómo lo corrijo?
 
Dark.Angel:


Al pasar de Mql4 a Mql5, ha aparecido el error SymbolInfoDouble:
'SymbolInfoDouble' - no se puede aplicar ninguna de las sobrecargas a la llamada a la función


¿Cómo lo corrijo?

¿Por qué hay un 0 en la parte inferior?

https://www.mql5.com/ru/docs/constants/environment_state/marketinfoconstants#enum_symbol_info_double

Y además de esto, comprueba la división por 0.

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 

Los resultados del comprobador de estrategias se muestran en gráficos:


¿Pueden decirme dónde encontrar el significado de los diferentes colores de los gráficos?

 
pusheax:

Los resultados del comprobador de estrategias se muestran en gráficos:

¿Puede decirme dónde encontrar lo que significan los diferentes colores de los gráficos?

Los azules son beneficios, los rojos son pérdidas. Pero el de arriba a la izquierda es sólo cuestionable...
Razón de la queja: