[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 315

 
dekker:

¡Amigos!

Ha surgido una cuestión global

¿Es posible obtener el flujo de ticks en el terminal los fines de semana, para poder escribir y depurar EAs tranquilamente?

Ya tengo algunos consejos para utilizarlo en mi robot de trading.

No puedo usar un tick para activar el EA, necesito un flujo de ticks en un rango determinado

¿existe algo así en la naturaleza?

¿Servidores mt4 que emulan las cotizaciones en streaming los fines de semana?

hay corredores que trabajan los fines de semana, búsquelo en Google
 
dekker:

¡Amigos!

Ha surgido una cuestión global

¿Es posible obtener el flujo de ticks en el terminal los fines de semana, para poder escribir y depurar EAs tranquilamente?

Ya tengo algunos consejos para utilizarlo en mi robot de trading.

No puedo usar un tick para activar el EA, necesito un flujo de ticks en un rango determinado

¿existe algo así en la naturaleza?

¿Servidores mt4 que emulan las cotizaciones en streaming los fines de semana?

Cuelga un guión -
#import "user32.dll"
   int PostMessageA(int hWnd, int Msg, int wParam, string lParam);
   int RegisterWindowMessageA(string lpString);
#import

int start(){
   bool asd;
   while(!IsStopped()){
      PostMessageA (WindowHandle (Symbol(), Period()), WM_COMMAND, 33324, 0);
      PostMessageA (WindowHandle (Symbol(), 0), RegisterWindowMessageA ("MetaTrader4_Internal_Message"), 2, 1);
      Sleep(5000);
      if(asd){Comment("A");asd=false;}else{Comment("V");asd=true;}
   }
   return(0);
}
emulación de garrapatas. No sé si es lo que necesitas o no. También hay un temporizador, ya sea con kernel32 o user32, búscalo en el foro.
 

Hola a todos, por favor, ayuden a un recién llegado.

La pregunta es la siguiente ... por ejemplo tengo un indicador y se dibuja en la subventana #property indicator_separate_window, el indicador tiene dos "buffers" es decir dos líneas ... mi pregunta es como hacer que aparezca una flecha o línea en la ventana PRINCIPAL (no la del indicador, sino la del gráfico de precios) cuando las líneas se cruzan ...

Por ejemplo, tomar un RSI regular, cómo hacer que la línea de cruce de cero para mostrar las flechas en el gráfico de precios ...

 
clubsmi:

Hola a todos, por favor, ayuden a un recién llegado.

La pregunta es la siguiente... por ejemplo tengo un indicador y se dibuja en la ventana #propiedad indicador_separado, el indicador tiene dos "buffers", resultan dos líneas... mi pregunta es cómo hacer una flecha o línea en la ventana PRINCIPAL (no la del indicador, sino la del gráfico de precios) cuando las líneas se cruzan...

Por ejemplo, tomar un RSI regular, cómo hacer que la línea de cruce de cero para mostrar las flechas en el gráfico de precios ...


Otro indicador en#property indicator_chart_window vía iCustom, y allí en DRAW_ARROW.
 

No puedo entender la expresión:

if (counted_bars==0 && downloadhistory)

si el número de barras contadas =0 y downloadhistory?downloadhistory es una variable lógica global inicialmentefalsa. ¿Qué condición lleva? Entendería si la condición es esta

if (counted_bars==0 && downloadhistory == false)

Explícaselo a un principiante, por favor.

 
dekker:

¡Amigos!

Ha surgido una cuestión global

¿Es posible obtener el flujo de ticks en el terminal los fines de semana, para poder escribir y depurar EAs tranquilamente?

Ya tengo algunos consejos para utilizarlo en mi robot de trading.

No puedo usar un tick para activar el EA, necesito un flujo de ticks en un rango determinado

¿existe algo así en la naturaleza?

Servidor mt4 que emula un flujo de cotizaciones los fines de semana ?

Biblioteca.

Sección"4.7 Funciones para controlar las actualizaciones de los gráficos".

 

Una cosa más:)

Hay un ZigZag en la aplicación MT4 en los indicadores personalizados. Tiene parámetros:

//---- indicator parameters
extern int ExtDepth=12;
extern int ExtDeviation=5;
extern int ExtBackstep=3;

¿Qué representan?

 

Vadim, no funciona. Como es fin de semana, estoy estudiando lectura-escritura por mi cuenta. Estoy escribiendo dos scripts de comprobación: uno de ellos lo pongo en un tiempo de segundos y genera un array elemento a elemento. La segunda la envío a cualquier par y me imprime este array. Así que, guiones:

Segundos:

#import "SharedMemoryMT4.dll"
        bool MemoryWriteInt(int nArea, string sPrefixArea, int nIndex, string sName, int nStartByte, int nValue);
        int MemoryCreateProjection(int nArea, string sPrefixArea, int hFileUser, int nIndex, string sName, int nSize);
        bool MemoryResize(int nArea, string sPrefixArea, int nIndex, string sName, int nSize);
#import
int Σ, Δt, j;
int start(){
   GlobalVariableSet("nAddress", MemoryCreateProjection(1, "", NULL, -1, "ind", 4));
   for(int i=1; i>Bars; i++){
      Δt=Time[i-1]-Time[i];
      Σ=Σ+Δt;
      MemoryResize(1, "", -1, "ind", 4*Σ);//=ArrayResize(ind, Σ);
      for(; j<Σ; j++) MemoryWriteInt(1, "", -1, "ind", j*4, i);
   }
   /*
   Δt[0]=1 => addr(j*4)=0*4=0, var(i)=0x0001.//out: {0x0001}
   Δt[0]=2 => addr(j*4)=0*4=0, var(i)=0x0001,
              addr(j*4)=1*4=4, var(i)=0x0001.//out: {0x0001, 0x0001}
   Δt[0]=1, Δt[1]=2 => addr(j*4)=1*4=4, var(i)=0x0002,
                       addr(j*4)=2*4=8, var(i)=0x0002.//out: {0x0001, 0x0002, 0x0002}
   Δt[0]=2, Δt[1]=2 => addr(j*4)=2*4=8, var(i)=0x0002,
                       addr(j*4)=3*4=12, var(i)=0x0002.//out: {0x0001, 0x0001, 0x0002, 0x0002}
   */
   return(0);
  }

El segundo script, que imprime el array, se cuelga de cualquier par ya formado:

#import "SharedMemoryMT4.dll"
        int MemoryReadInt(int nArea, string sPrefixArea, int nIndex, string sName, int nStartByte);
        bool MemoryUnProjection(int nArea, string sPrefixArea, int nIndex, string sName, int pcAddress);
        int MemorySize(int nArea, string sPrefixArea, int nIndex, string sName);
#import

int start(){
   for(int i=0; i<MemorySize(1, "", -1, "ind"); i=i+4) Print(MemoryReadInt(1, "", -1, "ind", 4*i));
   MemoryUnProjection(1, "", -1, "ind", GlobalVariableGet("nAddress"));
   return(0);
  }

Para ser justos, puse

{MemoryWriteInt(1, "", -1, "ind", j*4, i); Print(j, " - ", i);}

el segundo para. Mirando el registro. Al menos algunos valores se escriben en direcciones, o más bien desplazamientos relativos a nDirección: 0-3FF, 7FF-83FF, BFFF-C3FF. Para todos los demás rangos - error crítico enMemoryWriteInt. Adjunto archivo histórico con velas de segundos.

Archivos adjuntos:
sec_eurusd1.zip  18 kb
 
gyfto:

Vadim, no funciona. Como es fin de semana, estoy estudiando lectura-escritura por mi cuenta. Estoy escribiendo dos scripts de comprobación: uno de ellos lo pongo en un tiempo de segundos y genera un array elemento a elemento. La segunda la envío a cualquier par y me imprime este array. Así que, guiones:

Segundos:

El segundo script, que imprime el array, se cuelga de cualquier par ya formado:

Para ser justos, puse

el segundo para. Mirando el registro. Al menos algunos valores se escriben en direcciones, o más bien desplazamientos relativos a nDirección: 0-3FF, 7FF-83FF, BFFF-C3FF. Para todos los demás rangos - error crítico enMemoryWriteInt. Adjunto archivo histórico con velas de segundos.

¿Funciona el script de prueba del kit?

No es necesario cambiar el tamaño de la memoria asignada tan a menudo. Esto es un freno. La memoria se asigna discretamente por 4Kb. Redondeado. Se trata de una función cartográfica.

Haz un proyecto de prueba sencillo para que puedas comprobarlo. Lo que publica es imposible de comprobar. Hay demasiados errores de sintaxis.

 
GaNDarM:

No puedo entender la expresión:

si el número de barras contadas =0 y downloadhistory?downloadhistory es una variable lógica global inicialmentefalsa. ¿Qué condición lleva? Entendería que la condición fuera esta

if (counted_bars==0 && downloadhistory == false)

Por favor, explíquelo a un principiante.


Déjame probarlo ahora. Cuando escribimos

bool bVar=true;
if(bVar) какие-то_действия
//------------------
bool bVar=false;
if(!bVar) какие-то_действия
//------------------
if(true) какие-то_действия

entonces en todos los casos se realizarán estas acciones, porque las dos primeras son similares a la tercera (comprobar, simplificar la expresión). Es decir, si son variables booleanas, no necesitamos poner ==true, ==false, porque ya son verdaderas o falsas por sí mismas.

Razón de la queja: