¿Cómo codificar? - página 270

 

IndicatorCounted y mantener el buffer del indicador sincronizado.

Hola,

Mi pregunta es sobre el deslizamiento del buffer en el indicador personalizado. He preguntado en otro foro pero no ha servido de nada.

Por ejemplo

Código:

#define MAX_LOOK_BACK 5

#property indicator_minimum 0

#property indicator_maximum 100

#property indicator_color1 DodgerBlue

#property indicator_separate_window

double rsiBuf[];

int start()

{

int limit;

int counted_bars = IndicatorCounted();

//---- check for possible errors

if(counted_bars < 0)

return(-1);

//---- the last counted bar will be recounted

if(counted_bars > 0)

counted_bars--;

limit=Bars-counted_bars;

//---- main loop

Print("indicator limit: ", limit);

if(MAX_LOOK_BACK < limit)

limit = MAX_LOOK_BACK;

//Calculate from right to left

for(int i = 0; i < limit; i++)

{

rsiBuf = iRSI(Symbol(), NULL, 14, PRICE_CLOSE, i);

}

}

Mientras se ejecuta el indicador calculará los últimos valores del RSI de las últimas 5 barras. (Pongo un valor máximo MAXLOOK_BACK para facilitar las pruebas) Si por ejemplo en una situación en la que limit==2 (y limit==2 ocurre mucho en mis pruebas cuando se llama a través de iCustom en un EA) entonces calculará los valores de la barra 0 y la barra 1 y escribirá en RSI[0] y RSI[1] respectivamente y no tocará el resto del buffer. Todos los indicadores personalizados que he visto están escritos de esta manera. ¿No deberíamos deslizar el buffer si limit < MAX_LOOK_BACK ? ya que sobrescribe el RSI[0] y RSI[1] pero los valores anteriores de estos elementos deberían estar en RSI[2] y RSI[3] ¿estoy en lo cierto?

Para visualizar :

Tick=0 Y límite = 5 ==> RSI[0] = 33,33 RSI[1] =44,44 RSI[2]=55,55 RSI[3]=66,66 RSI[4] = 77,77

Ahora supongamos que los últimos 2 valores del RSI son 88,88 y 99,99 y la matriz se verá como la siguiente:

Tick=1 AND limit = 2 ==> RSI[0] = 88,88 RSI[1] =99,99 RSI[2]=55,55 RSI[3]=66,66 RSI[4] = 77,77

PERO no debería ser esto

Tick=1 Y límite = 2 ==> RSI[0] = 88,88 RSI[1] =99,99 RSI[2]=33,33 RSI[3]=44,44 RSI[4] = 55,55

Cuando vienen 2 barras nuevas ¿no deberíamos deslizar los valores de la barra anterior por 2? anterior¿Por qué todos los indicadores escritos de esta manera y no hay deslizamiento de los valores. Y por qué dibujan las líneas de tendencia correctamente.

 

Estoy trabajando en un EA que utiliza la banda de Keltner para salir de una posición (tanto para pérdidas como para ganancias), sin embargo cada vez que promedie hacia abajo con 2 lotes el EA ignora la primera entrada. ¿Hay alguna solución para esto ADEMÁS de entrar con un nuevo gráfico? Gracias

Archivos adjuntos:
 
mezarashii:
Estoy trabajando en un EA que utiliza la banda de Keltner para salir de una posición (tanto para pérdidas como para ganancias), sin embargo cada vez que promedie hacia abajo con 2 lotes el EA ignora la primera entrada. ¿Hay alguna solución para esto ADEMÁS de entrar con un nuevo gráfico? Gracias

Publique el ea aquí.

 

El codificador no me ha dado el código fuente todavía, espero que esto sea útil por sí mismo. Cualquier comentario es muy apreciado.

Archivos adjuntos:
 

Borrado condicional pendiente

Estoy buscando un script o código de borrado condicional pendiente.

Básicamente quiero ser capaz de ejecutar:

IF Ask es 200MA H1

Manteniendo cualquier orden pendiente abierta/viva por debajo de la 200MA

¿Alguna idea?

 
 
 

Obtener los precios abiertos semanales de 10 pares simultáneamente

Hola, soy nuevo con MT4. Estoy tratando de automatizar mi técnica escribiendo un script para acceder a los precios abiertos semanales de 10 pares concurrentemente. No puedo usar un solo EA o script para acceder a un gráfico semanal uno por uno. ¿Puede alguien aconsejarme cuál es la mejor manera de hacerlo? Muchas gracias .....

 
novalight:
Hola, soy nuevo con MT4. Estoy intentando automatizar mi técnica escribiendo un script para acceder a los precios de apertura semanales de 10 pares simultáneamente. No puedo usar un solo EA o script para acceder a un gráfico semanal uno por uno. ¿Puede alguien aconsejarme cuál es la mejor manera de hacerlo? Muchas gracias .....

Hola,

necesitas combinar la función iOpen.

Por ejemplo, digamos que usted quiere mostrar en el comentario los precios de apertura de gbpusd, eurusd y usdjpy

entonces el fragmento de código se vería así:

double openPair1 = iOpen("EURUSD",PERIOD_W1,0);

double openPair2 = iOpen("GBPUSD",PERIOD_W1,0);

double openPair3 = iOpen("USDJPY",PERIOD_W1,0);

Comentario("EURUSD weekly open: "+openPair1+\nGBPUSD weekly open: "+openPair1+"+nUSDJPY apertura semanal: "+openPair1);

 

Prefiero tener los pares como entrada junto con 2 entradas adicionales.

Las entradas de prefijo y sufijo evitan la molestia cuando los corredores añaden algo al nombre básico del par.

extern string par_prefijo = "";

extern string pair_suffix = ""; // introducir m para las cuentas IBFX mini

extern string pair1 = "EURUSD;

extern string pair2 = "GBPUSD";

extern string pair3 = "USDJPY";

string miPar1, miPar2, miPar3;

int init()

{

miPareja1 = par_prefijo + par1 + par_sufijo;

miPareja2 = par_prefijo + par2 + par_sufijo;

miCara3 = prefijo_de_pareja + par3 + sufijo_de_pareja;

return(0);

}

int inicio()

{

double openPair1 = iOpen(myPair1, PERIOD_W1,0);

double openPair2 = iOpen(myPair2, PERIOD_W1,0);

double openPair3 = iOpen(myPair3, PERIOD_W1,0);

Comment(par1 + "weekly open: "+openPair1+"\n" + pair2 + " weekly open: "+openPair2+"\n" + pair3 " apertura semanal: "+openPair3);

}

Por supuesto que yo usaría arrays para esto cuando se usan 10 pares.

Robert Hill alias MrPip

Razón de la queja: