Ayuda a la codificación - página 423

 

mladen,

He hecho el cambio en el número 144 y he unificado el número mágico, "MagicNumber" a través de los símbolos instances....It es ahora tomar un máximo de 5 operaciones a la vez, pero ahora repite las operaciones en el mismo símbolo al mismo tiempo, por ejemplo, si recibir una señal de comercio SELL en EURUSD , se colocará que la orden de venta EURUSD 5 veces. Vea la imagen de la orden en vivo que tomó así:

mladen:
Si quiere que tenga un máximo de 5 órdenes sobre todos los símbolos, vaya a la línea 144(if( OrderSymbol() != Symbol() ) continue;) y elimínela. Y mantén el mismo número mágico para todas las instancias en todos los símbolos (para que pueda contar las órdenes abiertas sólo por ese EA en todos los símbolos)
Archivos adjuntos:
 
Mastercash:
mladen, he hecho el cambio en el número 144 y he unificado el número mágico, "MagicNumber" a través de las instancias de los símbolos....It es ahora tomar un máximo de 5 operaciones a la vez, pero ahora repite las operaciones en el mismo símbolo al mismo tiempo, por ejemplo, si recibe una señal de comercio SELL en EURUSD , colocará esa orden de venta EURUSD 5 veces. Vea la imagen de la orden en vivo que tomó así:

Por favor, lea mi post anterior

Esa apertura no tiene nada que ver con la falta de comprobación del símbolo, debes tener una comprobación adicional para desactivar las órdenes de apertura en el mismo símbolo y en la misma barra. Si tienes el mismo EA en los mismos símbolos y diferentes marcos temporales, entonces ni siquiera esa comprobación te serviría (ya que las barras serán diferentes en algunos casos para diferentes marcos temporales del mismo símbolo)

 

Muchas gracias mladen,

Intenté añadir un código que me pensaste hace unos años....pero parece que no funciona.....el código si lo recuerdas va así...

static datetime lastAlerted=0;

if(lastalerted!=Time[0];

open().......

¡por favor ayúdame a añadir el código correcto en el lugar adecuado!

mladen:
Eso no depende de esa parte del código Tienes que añadir una comprobación en el resto del código para no abrir una orden en la misma barra y el mismo símbolo
 
Mastercash:
Muchas gracias mladen,

He tratado de añadir un código que me pensaste hace unos años....pero parece que no funciona.....el código si lo recuerdas va así...

static datetime lastAlerted=0;

if(lastalerted!=Time[0];

open().......

ayúdame a añadir el código correcto en el lugar adecuado.

Mastercash

Como dije en el post anterior: si adjuntas ese EA al mismo símbolo y a diferentes marcos de tiempo no hay manera de evitar que un EA de marco de tiempo inferior abra una orden en la barra actual de marco de tiempo superior (que ya tiene una orden abierta).

Tendría que escanear todas las barras actuales de los marcos de tiempo, lo que se traduce en la barra actual del marco de tiempo más alto - pero incluso entonces no tiene idea de qué marco de tiempo abrió la barra

Usted podría utilizar el campo de comentarios de la orden para marcar que, pero el campo de comentarios puede ser cambiado por el corredor por lo que no hay manera confiable de hacer eso

 

El código es el mismo que el de la versión anterior, pero no es el mismo que el de la versión anterior.

En el caso de que se trate de una operación repetida en la misma divisa, por favor, ayúdenme con un ajuste para que se detenga: y si tengo que hacer algún compromiso adicional para conseguirlo, pueden avisarme por correo electrónico.

mladen:
Mastercash

Como dije en el post anterior: si adjuntas ese EA al mismo símbolo y a diferentes marcos de tiempo, no hay manera de evitar que un EA de marco de tiempo inferior abra una orden en la barra actual de marco de tiempo superior (que ya tiene una orden abierta).

Tendrías que escanear todas las barras actuales de los marcos de tiempo, lo que traducido viene a la barra actual del marco de tiempo más alto - pero incluso entonces no tienes idea de qué marco de tiempo abrió la barra

Podrías usar el campo de comentarios de la orden para marcar eso, pero el campo de comentarios puede ser cambiado por el broker así que no hay una manera confiable de hacerlo
Archivos adjuntos:
 
Mastercash:
En el caso de que se trate de una orden de compra o de venta de un producto, el código que se adjunta a continuación es el mismo que el de la orden de compra o de venta de un producto, y si se trata de una orden de compra o de venta de un producto, el código es el mismo que el de la orden de compra o de venta de un producto, y si se trata de una orden de compra o de venta de un producto, el código es el mismo que el de la orden de compra o de venta de un producto.

En realidad ese EA es un multi time frame (usa indicadores en datos de 5 minutos) pero no importa : aquí tienes una versión que no permite abrir más de una orden por barra nicetrader_1.021.mq4

Archivos adjuntos:
 

Hola a todos,

alguien puede ayudarme a codificar un simple ea basado en el indicador xcode, ya que soy noob en la codificación.

Solo necesito ordenes de compra y venta despues del cierre de la barra de senal, opcion de cambio de periodo de senal del indicador, opcion de cambio de horas y dias de negociacion.

La entrada de compra y venta son simples como se describe en la captura de pantalla. cualquier marco de tiempo cualquier par, tomar la opción de beneficio, la opción de trailing stop.

Sé que no es el santo grial y está lejos de él (como el santo grial no existe ), pero podemos tratar de conseguir algo de esto.

También si es posible añadir la opción de aumentar el tamaño del lote (para cambiar manualmente). por ejemplo: 0.01,0.01,0.02,0.04,0.04,0.08,0.08 y así sucesivamente...

Archivos adjuntos:
xcode.jpg  346 kb
xcode.mq4  11 kb
 
mladen:
TFI

Intenta algo como esto:

extern double maxshorttrades = 2;

extern double maxlongtrades = 2;

//-----------------------------------------------------

//

//-----------------------------------------------------

int clongs = 0;

int cshorts = 0;

for (i=OrdersTotal()-1;i>=0; i--)

{

if(OrderType()==OP_BUY) clongs++; // Check Long Traded Positions.

if(OrderType()==OP_SELL) cshorts++; // Check Short Traded Positions.

}

if(trendc!=trendp)

{

if(clongs < maxlongtrades && trendc== 1 && (CCIFilter<80)) OpenBuy();

if(cshorts 80)) OpenSell();

// Check the CCI condition

// it is not symetrical to buy condition

}

Hola Mladen,

muchas gracias por tu ayuda. He implementado tu código como se sugiere.

Ahora está funcionando

¿Puedo probablemente hacer otra pregunta corta?

¿Qué opinas sobre el filtro CCI, es el enfoque correcto para filtrar los mercados laterales en este caso?

¿Debería darle un rango como (CCIFilter>80 && CCIFilter<100)

¿Tal vez usted podría aconsejar?

if(openedOrders<=0)

{

double CCIFilter=iCCI(NULL,0,CCIPeriod,CCIMethod,0);

double trendc = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1); //buffer, signal candle, up

double trendp = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2); //buffer, signal candle, down

int clongs = 0;

int cshorts = 0;

for(i=OrdersTotal()-1;i>=0; i--)

{

if(OrderType()==OP_BUY) clongs++; // Check Long Traded Positions.

if(OrderType()==OP_SELL) cshorts++; // Check Short Traded Positions.

}

if(trendc!=trendp)

{

if(clongs 80)) OpenBuy(); // (CCIFilter>80 && CCIFilter<100) maybe better?

if(cshorts < maxshorttrades && trendc==-1 && (CCIFilter<-80)) OpenSell(); //(CCIFilter-100)

// Check the CCI condition

// it is not symetrical to buy condition

}

}

P.D., espero que no os afecte la quiebra de Alpari, hay bastantes turbulencias.

Gracias de antemano y buen fin de semana.

Con un cordial saludo,

TFI

Archivos adjuntos:
backtest2.jpg  160 kb
 
tfi_markets:
Hola Mladen,

Muchas gracias por su ayuda. He implementado su código como se sugiere.

Ahora está funcionando

¿Puedo hacer otra pregunta corta?

¿Qué opinas sobre el filtro CCI, es el enfoque correcto para filtrar los mercados laterales en este caso?

¿Debería darle un rango como (CCIFilter>80 && CCIFilter<100)

¿Tal vez usted podría aconsejar?

if(openedOrders<=0)

{

double CCIFilter=iCCI(NULL,0,CCIPeriod,CCIMethod,0);

double trendc = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,1); //buffer, signal candle, up

double trendp = iCustom(Symbol(),0,"Hull moving average 2 strict nmc", "", HMA_Period, HMA_Price, HMA_Speed,0,3,2); //buffer, signal candle, down

int clongs = 0;

int cshorts = 0;

for(i=OrdersTotal()-1;i>=0; i--)

{

if(OrderType()==OP_BUY) clongs++; // Check Long Traded Positions.

if(OrderType()==OP_SELL) cshorts++; // Check Short Traded Positions.

}

if(trendc!=trendp)

{

if(clongs 80)) OpenBuy(); // (CCIFilter>80 && CCIFilter<100) maybe better?

if(cshorts < maxshorttrades && trendc==-1 && (CCIFilter<-80)) OpenSell(); //(CCIFilter-100)

// Check the CCI condition

// it is not symetrical to buy condition

}

}

P.D., espero que no te afecte la quiebra de Alpari, hay bastantes turbulencias.

Gracias de antemano y buen fin de semana.

Con saludos cordiales,

TFI

TFI

De Alpari : Soy su cliente desde hace mucho tiempo. Pero cierro mis cuentas de vez en cuando (cuando se alcanza lo que considero una masa crítica) y esta vez cerré mi cuenta con ellos hace aproximadamente un mes, y no abrí una nueva (teniendo una cuenta aún abierta con otro broker también). Francamente, aunque tuve suerte y no me afectó para nada lo que pasó, debo decir que estoy triste por lo que les pasó : nunca tuve ningún problema (ni siquiera el más mínimo) con ellos, y en los casos en que había que aclarar o corregir algunas cosas siempre lo hacían de manera oportuna

_______________________

Del filtro CCI : normalmente los valores entre -100 y +100 se consideran una "zona normal" para el CCI (lo que significaría un rango) pero muchos operadores están operando el CCI exclusivamente en un cruce de cero con el parámetro de longitud por defecto (14) establecido. Esto aumenta la posibilidad de ser golpeado por un whipsaw, pero aquellos que están utilizando cruces cero por lo general lo utilizan en el marco de tiempo corto. Para evitar ese tiempo de uso, establezca el período a un período más largo (pruebe 50, por ejemplo) que es un buen ajuste para las señales de cruce cero en una gran cantidad de símbolos y marcos de tiempo

 
mladen:
TFI

De Alpari : soy su cliente desde hace mucho tiempo. Pero cierro mis cuentas de vez en cuando (cuando se alcanza lo que considero una masa crítica) y esta vez cerré mi cuenta con ellos hace un mes, y no abrí una nueva (teniendo una cuenta aún abierta con otro broker también). Francamente, aunque tuve suerte y no me afectó para nada lo que pasó, debo decir que estoy triste por lo que les pasó : nunca tuve ningún problema (ni siquiera el más mínimo) con ellos, y en los casos en que había que aclarar o corregir algunas cosas siempre lo hacían de manera oportuna

_______________________

Sobre el filtro CCI: normalmente los valores entre -100 y +100 se consideran una "zona normal" para el CCI (lo que significaría un rango) pero muchos operadores están operando el CCI exclusivamente en un cruce cero con el parámetro de longitud por defecto (14). Esto aumenta la posibilidad de ser golpeado por un whipsaw, pero aquellos que están utilizando cruces cero por lo general lo utilizan en el marco de tiempo corto. Para evitar ese tiempo de uso, establezca el período a un período más largo (pruebe 50 por ejemplo) que es una buena configuración para las señales de cruce cero en una gran cantidad de símbolos y marcos de tiempo

Hola Mladen

Me gustaría agradecerte tu ayuda una vez más. Estás muy bien informado. Realmente lo aprecio, la gente que ayuda y comparte conocimientos es bastante rara hoy en día. También pondré en práctica y probaré tus sugerencias sobre el CCI.

Afortunadamente no me afectó el caso de Alpari porque todavía estoy desarrollando mi EA (debería operar mientras estoy en la oficina y generar algunos ingresos extra para mí y mi familia). Utilicé Alpari como plataforma de pruebas, porque dejaron la cuenta demo abierta por tiempo ilimitado. He abierto una cuenta con IG markets hace unos días, pero aún no tengo dinero transferido. Necesito tener el EA funcionando de forma fiable y sin errores primero.

¡Todo lo mejor para ti y sigue con tu gran trabajo!

Con saludos cordiales,

TFI

Razón de la queja: