¿Cómo codificar? - página 70

 

Necesito ayuda

................

 
SIDDESH:
Hola,

¿Puede usted por favor dar el código para la barra anterior.

Esto se puede utilizar en el EA para limitar la colocación de las órdenes cuando la barra anterior es más de cierta altura.

Saludos,

SIDDESH

Siddesh y otros que puedan ayudar:

El código para la barra anterior es el siguiente:

//para comprar

double indicatorpast = icustom(....................,1);

double indicatornow = icustom(...................., 0);

if (close[1]indicatornow) OpenBUY();

si (close[1]>indicadorpasado && close[0]<indicadornuevo) OpenSELL();

pero con este satatement, el experto abre posiciones no sólo cuando el precio cruza el indicador, sino que también abre posiciones por encima del indicador. Quiero que el experto abra posiciones SOLO cuando el precio cruce el indicador, así que he probado esto:

//para comprar

double indicatorpast = icustom(....................,1);

double indicatornow = icustom(....................,0);

if (close[1]<indicatorpast && close[0]==indicatornow) OpenBUY();

if (close[1]>indicatorpast && close[0]==indicatornow) OpenSELL();

Pero esta declaración no está realizando.

¿Sabe usted lo que está sucediendo? Porque creo que no hay errores en la declaración.

La pregunta es ¿por qué no se abre en el punto exacto del cruce cuando close[0]==Indicatornow? Si la función fuera con ==, impediríamos la apertura de órdenes por encima del punto de cruce entre el indicador y el cierre de la barra actual pero no está funcionando con este tipo de relación entre las variables.

 

Gente que puede ayudar:

El código de la barra anterior está abajo:

//para comprar

double indicatorpast = icustom(....................,1);

double indicatornow = icustom(...................., 0);

if (close[1]indicatornow) OpenBUY();

si (close[1]>indicadorpasado && close[0]<indicadornuevo) OpenSELL();

pero con este satatement, el experto abre posiciones no sólo cuando el precio cruza el indicador, sino que también abre posiciones por encima del indicador. Quiero que el experto abra posiciones SOLO cuando el precio cruce el indicador, así que he probado esto:

//para comprar

double indicatorpast = icustom(....................,1);

double indicatornow = icustom(....................,0);

if (close[1]<indicatorpast && close[0]==indicatornow) OpenBUY();

if (close[1]>indicatorpast && close[0]==indicatornow) OpenSELL();

Pero esta declaración no está realizando.

¿Sabe usted lo que está sucediendo? Porque creo que no hay errores en la declaración.

La pregunta es ¿por qué no se abre en el punto exacto del cruce cuando close[0]==Indicatornow? Si la función fuera con ==, impediríamos la apertura de órdenes por encima del punto de cruce entre el indicador y el cierre de la barra actual pero no está funcionando con este tipo de relación entre las variables.

¿Habéis experimentado el mismo problema? ¿Alguien sabe cómo resolverlo?

Gracias, de nuevo.

 
la totona:
Gente que puede ayudar:

El código de la barra anterior es el siguiente

//para comprar

double indicatorpast = icustom(....................,1);

double indicatornow = icustom(...................., 0);

if (close[1]indicatornow) OpenBUY();

si (close[1]>indicadorpasado && close[0]<indicadornuevo) OpenSELL();

pero con este satatement, el experto abre posiciones no sólo cuando el precio cruza el indicador, sino que también abre posiciones por encima del indicador. Quiero que el experto abra posiciones SOLO cuando el precio cruce el indicador, así que he probado esto:

//para comprar

double indicatorpast = icustom(....................,1);

double indicatornow = icustom(....................,0);

if (close[1]<indicatorpast && close[0]==indicatornow) OpenBUY();

if (close[1]>indicatorpast && close[0]==indicatornow) OpenSELL();

Pero esta declaración no está realizando.

¿Sabe usted lo que está sucediendo? Porque creo que no hay errores en la declaración.

La pregunta es ¿por qué no se abre en el punto exacto del cruce cuando close[0]==Indicatornow? Si la función fuera con ==, impediríamos la apertura de órdenes por encima del punto de cruce entre el indicador y el cierre de la barra actual pero no está funcionando con este tipo de relación entre las variables.

¿Habéis experimentado el mismo problema? ¿Alguien sabe cómo resolverlo?

Gracias, de nuevo.

Porque está buscando una coincidencia exacta entre un valor de punto flot ante de 8 dígitos devuelto y el precio - casi nunca serán iguales con resoluciones como esa. Sólo hay que buscar una condición mayor que o menor que.

 

software de swicthing

hola chicos, necesitaría convertir este indicador o el sistema relativo al comercio en lenguaje mql porque este funciona en metatrader 4. ¿Si cambio de broker y de software, alguien puede' ayudarme?

{Cálculo de la Media Móvil de Regresión Expandida}

{BEGINNING}

{"-HShift" - BARRAS ADELANTADAS}

DataBars:= Ref(Precio,- HShift);

e1:= Mov(DataBars,PeriodMA,TypeMA);

e2:= Mov(e1,PeriodMA,TypeMA);

e3:= Mov(e2,PeriodMA,TypeMA);

e4:= Mov(e3,PeriodMA,TypeMA);

e5:= Mov(e4,PeriodMA,TypeMA);

e6:= Mov(e5,PeriodMA,TypeMA);

c1:= -b*b*b;

c2:= 3*b*b+3*b*b*b;

c3:= -6*b*b-3*b-3*b*b*b;

c4:= 1+3*b+b*b*b+3*b*b;

MV:= c1*e6+c2*e5+c3*e4+c4*e3;

{Cálculo del tiempo de vida MV

para eliminar la distorsión de los valores iniciales}

{Media móvil T3}

e1:= Mov(Pr,PeriodoMA1,TipoMA1);

e2:= Mov(e1,PeriodMA1,TypeMA1);

e3:= Mov(e2,PeriodMA1,TypeMA1);

e4:= Mov(e3,PeriodMA1,TypeMA1);

e5:= Mov(e4,PeriodMA1,TypeMA1);

e6:= Mov(e5,PeriodMA1,TypeMA1);

c1:= -b1*b1*b1;

c2:= 3*b1*b1+3*b1*b1*b1;

c3:= -6*b1*b1-3*b1-3*b1*b1*b1;

c4:= 1+3*b1+b1*b1*b1+3*b1*b1;

MA1:= c1*e6+c2*e5+c3*e4+c4*e3;

{Tendencia alcista y bajista}

Tendencia alcista:=Mv>=MA1;

Tendencia a la baja:=MA1>=Mv;

{Señal larga y corta}

Largo:= cruce(Mv,MA1) y Mv>=MA1;

Corto:= cross(MA1,Mv) y MA1>=Mv;

{AbrirCompra y CerrarCompra}

OpenBuy:= cross(Mv,MA1) y Mv>=MA1;

CloseBuy:= cross(MA1,Mv) y MA1>=Mv;

{AbrirVender y CerrarVender}

OpenSell:= cross(MA1,Mv) y MA1>=Mv;

CloseSell:= cross(Mv,MA1) y Mv>=MA1;

 
bobo10:
hola chicos, necesitaría convertir este indicador o el sistema de trading relative en lenguaje mql porque este funciona en metatrader 4. ¿Estoy cambiando de broker y de software, es alguien capaz' de ayudarme?

{Media móvil T3}

e1:= Mov(Pr,PeriodMA1,TypeMA1);

e2:= Mov(e1,PeriodMA1,TypeMA1);

e3:= Mov(e2,PeriodMA1,TypeMA1);

e4:= Mov(e3,PeriodMA1,TypeMA1);

e5:= Mov(e4,PeriodMA1,TypeMA1);

e6:= Mov(e5,PeriodMA1,TypeMA1);

c1:= -b1*b1*b1;

c2:= 3*b1*b1+3*b1*b1*b1;

c3:= -6*b1*b1-3*b1-3*b1*b1*b1;

c4:= 1+3*b1+b1*b1*b1+3*b1*b1;

MA1:= c1*e6+c2*e5+c3*e4+c4*e3;

Todos estos códigos son similares, podrías empezar por mirar el código T3

 
nittany1:
Global, pon esto antes de init()
datetime PreviousBar;[/CODE]

In the order placement and/or order close stuff, wrap it in this:

if(NewBar() == true)

{

if blah blah blah, gimme pips // not actual functions but you get the idea

if blah blah blah, close orders // um

}

Common function outside main loop:

[CODE]//--- returns true if current bar just formed

bool NewBar()

{

if(PreviousBar<Time[0])

{

PreviousBar = Time[0];

return(true);

}

else

{

return(false);

}

return(false);

}

Gracias nitty1 por la ayuda. Lo probaré.

También gracias a waltini y devil2000. Ahora debería poder solucionarlo.

 

Código de cuenta para correr en Demo libremente

Hola:

¿Puede alguien decirme qué código se podría insertar para permitir que un EA que tiene el código de seguridad de la cuenta en él también se ejecute libremente en una cuenta de demostración para que los usuarios puedan probarlo antes de ir en vivo?

¿Es esto posible?

Gracias

 
fxgrm:
Hola:

¿Puede alguien decirme qué código se podría insertar para permitir que un EA que tiene el código de seguridad de la cuenta en él también se ejecute libremente en una cuenta de demostración para que los usuarios puedan probarlo antes de ir en vivo?

¿Es esto posible?

Gracias

Desde el metaeditor:

bool IsDemo()

Devuelve TRUE si el experto se ejecuta en una cuenta demo, de lo contrario devuelve FALSE.

 

Codificación de la "condición de tendencia" con StepMA

Condición de compra:

StepMA (con modo de color: 2) es "largo"

El estocástico cruza 20 de abajo hacia arriba

Condición de venta:

StepMA (con modo de color: 2) es "corto".

El estocástico cruza 80 de arriba a abajo

double StochCurrent = iStochastic(NULL, 0, 21, 3, 8, MODE_SMA, 0, MODE_MAIN, Bar + 0);

double StochPrevious = iStochastic(NULL, 0, 21, 3, 8, MODE_SMA, 0, MODE_MAIN, Bar + 1);

double TrendLong = iCustom(NULL, 0, "stepma_v7ea", 1, 1.0, 0, 0, 0.0, false, 2, 0, 1, Bar + 0);

double TrendShort = iCustom(NULL, 0, "stepma_v7ea", 1, 1.0, 0, 0, 0.0, false, 2, 0, 2, Bar + 0);

Comprar si:

TrendLong && StochCurrent > 20 && StochPrevious < 20

Vender si:

TrendShort && StochCurrent 80

Puede alguien ayudarme con el código de la "condición de tendencia" en el ejemplo anterior, no funciona. He intentado llamar al buffer 1 y al buffer 2 para el modo largo y corto pero no entiendo el código de este indicador. ¡Gracias de antemano!