¿Cómo codificar? - página 81

 

Se necesita ayuda

Hola a todos los codificadores,

Por favor, díganme el código cómo puedo comprobar el precio según las velas. Me refiero a cómo puedo comprobar que la vela actual toca la línea MA o no, y cómo puedo codificar que la vela actual tiene la apertura, el máximo, el mínimo y el cierre por debajo de la línea MA. Su ayuda será muy apreciada.

¡Saludos .......!

 
arsenic786:
Hola a todos los codificadores,

Por favor, dígame el código cómo puedo comprobar el precio según las velas. Me refiero a cómo puedo comprobar que la vela actual toca la línea MA o no, y cómo puedo codificar que la vela actual tiene la apertura, el máximo, el mínimo y el cierre por debajo de la línea MA. Su ayuda será muy apreciada.

¡Saludos .......!

Bueno, para comprobar el cruce tienes que comparar el precio de cierre anterior, el cierre actual y el valor de la media móvil (así que iMa, Close[1] y Close[0]).

Pero para comprobar si la vela está por debajo de la media móvil hay que comparar el precio LOW y HIGH y el valor de iMa.

 

Indicador de tiempo entre ticks

Me gustaría construir un indicador, uno de cuyos elementos es el tiempo entre ticks. ¿Puede alguien aconsejarme si es posible incorporar esta función?

Gracias

 

Escaneo a través de pares/marcos de tiempo

Hola,

Me gustaría escanear a través de algunos de los pares, y algunos de los marcos de tiempo de los pares para detectar el entorno actual (tendencia, rango limitado, etc) utilizando indicadores como el ADX. Esto es para ayudarme a seleccionar el mejor par/marco de tiempo para operar en base a mi conjunto de criterios.

La peor manera es adjuntar un EA que detecte el entorno a TODOS los gráficos, hacer que escriba los resultados en un archivo y luego hacer mi propia comparación en el archivo. Sin embargo, esto será demasiado tedioso y manual.

¿Es posible adjuntar mi EA a sólo 1 gráfico, y hacer que ese EA obtenga los datos de todos los pares y el marco de tiempo utilizando funciones de series de tiempo como iClose, iOpen, etc., y luego alimentar el precio a mis indicadores?

¿Alguien prevé algún problema con el segundo método? ¿Demasiado procesamiento de la CPU? ¿El tiempo que se tarda en ejecutar la comprobación será demasiado largo, etc.? No necesito un marco de tiempo más fino que 5 minutos.

Soy nuevo en EA y por lo tanto no sé el rendimiento de la misma. Cualquier ayuda será muy apreciada. ¡¡¡Saludos!!!

 

Adjuntar un EA al gráfico de forma programada

Hola,

¿es posible adjuntar un EA a un gráfico de forma programada? Digamos que estoy ejecutando el EA1 y quiero que adjunte el EA2 a otro gráfico si se cumplen ciertos criterios. ¿Es posible?

 
meokoken:
Hola,

Me gustaría escanear algunos de los pares, y algunos de los marcos de tiempo de los pares para detectar el entorno actual (tendencia, rango limitado, etc.) utilizando indicadores como el ADX. Esto es para ayudarme a seleccionar el mejor par/marco de tiempo para operar en base a mi conjunto de criterios.

La peor manera es adjuntar un EA que detecte el entorno a TODOS los gráficos, hacer que escriba los resultados en un archivo y luego hacer mi propia comparación en el archivo. Sin embargo, esto será demasiado tedioso y manual.

¿Es posible adjuntar mi EA a sólo 1 gráfico, y hacer que ese EA obtenga los datos de todos los pares y el marco de tiempo utilizando funciones de series de tiempo como iClose, iOpen, etc., y luego alimentar el precio a mis indicadores?

¿Alguien prevé algún problema con el segundo método? ¿Demasiado procesamiento de la CPU? ¿El tiempo que se tarda en ejecutar la comprobación será demasiado largo, etc.? No necesito un marco de tiempo más fino que 5 minutos.

Soy nuevo en EA y por tanto no conozco su funcionamiento. Cualquier ayuda será muy apreciada. ¡¡¡Saludos!!!

Puede utilizar la función de símbolo para esto. Por ejemplo, si desea comprobar el valor de la media móvil y el precio de cierre en 10 gráficos, por ejemplo, 10 cruces de diferentes marcos de tiempo, pero en la barra actual, entonces se verá así:

double eurudMa = iMa("EURUSD", blablabla,PERIOD_X,0);

double eurusdClose = iClose("EURUSD",PERIOD_X);

y compare esos valores si lo desea.

Lo mismo con otros indicadores. Si desea obtener el precio de compra y venta de un cruce específico, utilice la función MarketInfo de la misma manera.

Saludos

Kale

 

OsMA con línea de señal

Codificadores, necesito su ayuda. ¿Puede alguien añadir una línea de señal al indicador OsMA adjunto? ¡Muchas gracias!

Archivos adjuntos:
osma.mq4  3 kb
 

¿Cómo crear una versión digital de esto?

Hola chicos,

Soy un principiante aquí.

Wolfe había tenido la amabilidad de crear una plantilla para un código de abajo, que he modificado. Se ejecuta perfectamente bien, y hacer lo que quiero que haga.

Pero ahora,

Estoy pensando en crear la versión digital de esto, similar al indicador DIGISTOCH.

Lo que quiero saber es

- ¿Cómo "borrar" o "limpiar" los búferes? No consigo "borrar" el enlace de los buffers y crear otros nuevos.

- ¿Cómo modificar esto para NO incluir los buffers? Creo que esto ahorrará algo de memoria, ¿no? He tratado de borrar el SetIndexBuffer pero cuando se carga en MT4 da error de"división cero" en la ventana del terminal experto.

- Las dos etiquetas de abajo sólo muestran un valor, el valor H1. Se supone que para mostrar el número de H1 y H4 número. Así que no está funcionando aquí.

- Básicamente quiero que esto muestre el número de Ratio de diferentes marcos de tiempo (de M1 a MN1) en una pantalla, al igual que el indicador DIGIStoch.

Cualquier ayuda será apreciada.

Saludos,

//+------------------------------------------------------------------+

//| 2MA_RSI.mq4 |

//+------------------------------------------------------------------+

#property copyright "Wolfe"

#property link "xxxxwolfe@gmail.com"

#property indicator_separate_window

#property indicator_level1 100

#property indicator_level2 80

#property indicator_level3 50

#property indicator_level4 20

#property indicator_buffers 4

#property indicator_color1 Black //RSI

#property indicator_color2 Blue //MA1

#property indicator_color3 Red //MA2

#property indicator_color4 Green //Ratio

int RSI_Timeframe=0;//0=current chart,1=m1,5=m5,15=m15,30=m30,60=h1,240=h4,etc...

int RSI_Period = 10;

int RSI_Applied_Price = 0;//0=close, 1=open, 2=high, 3=low, 4=(high+low)/2, 5=(high+low+close)/3, 6=(high+low+close+close)/4

int MA1_Period = 10;

int MA1_Method = 1;// 0=SMA, 1=EMA, 2=SMMA, 3=LWMA

int MA2_Period = 30;

int MA2_Method = 1;// 0=SMA, 1=EMA, 2=SMMA, 3=LWMA

double RSI[],MA1_Array[],MA2_Array[],MR_Ratio[];

double _RSI[],_MA1_Array[],_MA2_Array[],_MR_Ratio[];

string ShortName="MoR";

//+------------------------------------------------------------------+

//| Custom indicator initialization function |

//+------------------------------------------------------------------+

int init()

{

//---- indicators setting

SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1); //RSI

SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1); //EMA10

SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,1); //EMA30

SetIndexStyle(3,DRAW_LINE,STYLE_SOLID,2); //Ratio

SetIndexBuffer(0,RSI);

SetIndexLabel(0,"RSI");

SetIndexBuffer(1,MA1_Array);

SetIndexLabel(1,"MA1");

SetIndexBuffer(2,MA2_Array);

SetIndexLabel(2,"MA2");

SetIndexBuffer(3,MR_Ratio);

SetIndexLabel(3,"Ratio");

IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));

IndicatorShortName(ShortName);

return(0);

}

int start()

{

int i,limit = Bars - IndicatorCounted() - 1;

for(i=limit; i>=0; i--){

RSI= iRSI(NULL,60,RSI_Period,RSI_Applied_Price,i);

}

for(i=limit; i>=0; i--){

MA1_Array = iMAOnArray(RSI,0,MA1_Period,0,MA1_Method,i);

MA2_Array = iMAOnArray(RSI,0,MA2_Period,0,MA2_Method,i);

}

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

MR_Ratio = MA1_Array / MA2_Array * 100;

}

double tmp1=MR_Ratio[0];

SetText("Label1",DoubleToStr(tmp1,1),Black,55,20);

//+------------------------------------------------------------------+

//| Trying to set new buffers |

//+------------------------------------------------------------------+

IndicatorBuffers(4);

SetIndexBuffer(0,_RSI);

SetIndexBuffer(1,_MA1_Array);

SetIndexBuffer(2,_MA2_Array);

SetIndexBuffer(3,_MR_Ratio);

for(i=limit; i>=0; i--){

_RSI= iRSI(NULL,240,RSI_Period,RSI_Applied_Price,i);

}

for(i=limit; i>=0; i--){

_MA1_Array = iMAOnArray(_RSI,0,MA1_Period,0,MA1_Method,i);

_MA2_Array = iMAOnArray(_RSI,0,MA2_Period,0,MA2_Method,i);

}

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

_MR_Ratio = _MA1_Array / _MA2_Array * 100;

}

double tmp2=_MR_Ratio[0];

SetText("Label2",DoubleToStr(tmp2,1),Black,95,20);

//----

return(0);

}

void SetText(string ObjName,string ObjText,color clr,int xpos,int ypos){

ObjectCreate(ObjName,OBJ_LABEL,WindowFind(ShortName),0,0);

ObjectSetText(ObjName,ObjText,9,"Arial Bold",clr);

ObjectSet(ObjName,OBJPROP_CORNER,0);

ObjectSet(ObjName,OBJPROP_XDISTANCE,xpos);

ObjectSet(ObjName,OBJPROP_YDISTANCE,ypos);

}

 
SolomonZhang:
Hola chicos,

Soy un principiante aquí.

Wolfe tuvo la amabilidad de crear una plantilla para un código de abajo, que he modificado. Se ejecuta perfectamente bien, y hacer lo que quiero que haga.

Pero ahora,

Estoy pensando en crear la versión digital de esto, similar al indicador DIGISTOCH.

Lo que quiero saber es

- ¿Cómo "limpiar" o "tirar" los búferes? No consigo "borrar" el enlace de los buffers y crear otros nuevos.

- ¿Cómo modificar esto para NO incluir los buffers? Creo que esto ahorrará algo de memoria, ¿no? He tratado de borrar el SetIndexBuffer pero cuando se carga en MT4 da error de "división cero" en la ventana del terminal experto.

- Las dos etiquetas de abajo sólo muestran un valor, el valor H1. Se supone que para mostrar el número de H1 y H4 número. Así que no está funcionando aquí.

- Básicamente quiero que esto muestre el número de Ratio de diferentes marcos de tiempo (de M1 a MN1) en una pantalla, al igual que el indicador DIGIStoch.

Cualquier ayuda será apreciada.

Saludos,

Solo define un valor vacío para los buffers después del init para cada bucle.

En cuanto a la división en cero, sólo hay que crear una condición "if" antes del cálculo.

 

Código de señal de tiempo múltiple

Hola programadores

Soy un novato aprendiendo a programar y he creado un EA básico y agradezco si alguien tiene la amabilidad de ayudarme con lo siguiente:

La idea es básicamente buscar una señal de TF superior y esperar el retroceso en TF inferior y luego ejecutar la orden como :

si 4 HR genera una señal en lo siguiente:

if(MacdCurrentSignalCurrent)MacdPrevious<SignalPrevious)=LongSignalActivated

cómo mantener la señal anterior y esperar el retroceso de 1 HR (o cualquier otro marco de tiempo) como

if (MacdCurrentSignalCurrent && MacdPrevious<SignalPrevious) Order=SignalBuy

O

Cualquier otra estrategia..

Ya tengo todos los indicadores definidos en variables para los diferentes marcos de tiempo...

Puedo enviar EA si alguien está dispuesto a echar una mano ... también si cualquier programador experimentado está dispuesto a trabajar conmigo mi estrategia, estoy dispuesto a compensar (por desgracia no puede permitirse el lujo de pagar mucho)..

Apreciar cualquier ayuda

Mo Syed

correo electrónico: moi.syed@gmail.com