Ayuda a la codificación - página 161

 

2 órdenes a la vez

Hola, estoy tratando de codificar un EA, y tengo un problema, no sé cómo resolverlo :?

el problema es que quiero abrir 2 órdenes (OPENSTOP y SELLSTOP) en el momento actual, pero en este EA se abren unas 100 o más, así que ¿cómo solucionarlo para abrir sólo 2 :?

extern double Lots=1;

extern double h_beg=10;

extern double h_end=23;

extern double TakeProfit=20;

extern double StopLoss=90;

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

int inicio()

{

double prevbar_H;

double prevbar_L;

double bar_H

double bar_L;

double vender;

double buy;

bool trade_time;

bool sell_opened;

bool buy_opened;

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

if (Hour()==h_beg)

{

trade_time = true;

for(int h=1; h<=11; h++)

{

bar_H = iHigh(NULL,0,h);

if (prevbar_H==0 || prevbar_H<bar_H)

{

prevbar_H = bar_H;

}

}

for(int l=1; l<=11; l++)

{

bar_L = iLow(NULL,0,l);

if (prevbar_L==0 || prevbar_L>bar_L)

{

prevbar_L = bar_L;

}

}

}

if (Hour()==h_end)

{

trade_time = false;

prevbar_H = 0;

prevbar_L = 0;

DeletePending();

DeleteBUY();

vender=0;

buy=0;

}

//+--------------------------------------------------------buy or sell----------+

if(Hora()==h_beg)

{

if(sell==0)

{

OrderSend(Symbol(),OP_SELLSTOP,Lots,prevbar_L,3,prevbar_L+200*Point,prevbar_L-200*Point, "MA sample",16384,0,Green);

vender=1;

}

if(buy==0)

{

OrderSend(Symbol(),OP_BUYSTOP,Lots,prevbar_H,3,prevbar_H-200*Point,prevbar_H+200*Point, "MA sample",16384,0,Green);

buy=1;

}

}

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

return(0);

}

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

void DeletePending()

{

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

{

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

{

OrderDelete(OrderTicket());

}

}

}

void DeleteBUY()

{

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

{

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

{

if (OrderType() == OP_BUY)

{

OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red );

}

}

}

}
 
carbonmimetic:
HI Mladen,

si quiero contar barras entre 2 mínimos, ¿cómo puedo evitar la barra del domingo 23.00 p.m. a 00.00?

porque en el gráfico de 4h hay esa barra y dura sólo una hora.....y aparece también en el gráfico diario.

gracias de antemano

carbonmimetic

Añade una comprobación del día de la semana similar a esta :

if (TimeDayOfWeek(Time[yourCounter])!=0)

0 es domingo y en ese caso hay que saltar esa barra

 

porque el sistema que utilizo es como un sistema de comercio de martingala, una vez que coloco la orden es sobre 1 orden de trabajo y 4 ordenes pendientes, cuando pierdo la segunda orden pendiente se convertirá en orden de trabajo, por lo que necesito mover el TP de prev igual a la orden actual, por lo tanto, espero que pueda tener EA a automático para esto por lo que no necesito seguir viéndolo, porque en algún momento necesito salir a almorzar o cenar. trato de codificar yo mismo, pero no sé cómo seleccionar la nueva orden y modificar la orden de prev.

 
mladen:
carbonmimetic

Añadir una comprobación del día de la semana similar a esta :

if (TimeDayOfWeek(Time[yourCounter])!=0)
El 0 es domingo y en ese caso hay que saltar esa barra

ok....¡Muchas gracias!

 

hola mladen,

podría por favor ayudar a mirar en el código, veo en el gráfico en vivo, se puede repintar más allá de la línea de la señal, cuando presiono la actualización del menú mt4, la línea puede cambiar de posición por completo, es decir, más allá de la línea de la señal.

¿podría arreglar este problema, no repintar pasado o no puede autorefresh problemas. es algo como barras de recuento de tener problema o formas de bucle interno? Soy sólo un principiante superficial de código. Muchas gracias por la ayuda.

Archivos adjuntos:
 
kenwa:
hola mladen

podría por favor ayudar a buscar en el código, veo en el gráfico en vivo, se puede repintar más allá de la línea de señal, cuando presiono la actualización del menú mt4, la línea puede cambiar de posición por completo, me refiero a la línea de señal pasada.

¿podría arreglar este problema, no repintar pasado o no puede autorefresh problemas. es algo como el conteo de barras que tiene problema o formas de bucle interno? Solo soy un principiante superficial de código. Muchas gracias por la ayuda.

kenwa

Sustituye el init y empieza con estos:

double CCI_idx[];

double CCI_idt[];

int init()

{

IndicatorBuffers(2);

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,CCI_idx);

SetIndexBuffer(1,CCI_idt);

return(0);

}

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

//| |

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

int start()

{

int i,counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

int limit = MathMin(Bars-counted_bars,Bars-1);

for(i=limit;i>=0;i--) CCI_idt = iCCI(abc,0,CCI_Period,applied_price,i);

for(i=limit;i>=0;i--) CCI_idx = iMAOnArray(CCI_idt,Bars,MA_Period,0,MA_Method,i);

return(0);

}

No se puede utilizar el mismo buffer para recoger los valores de cci y luego para almacenar los promedios de esos cci - estaba causando el repintado. También se ha eliminado la referencia al marco temporal de la llamada al CCI. Si desea que se calcule en el modo de múltiples marcos de tiempo también, tiene que ser escrito de manera diferente

__________________________

PD: este mismo consejo podría aplicarse al uso de diferentes símbolos en un gráfico actual. El número de barras cambiadas de un símbolo actual no tiene que ser el mismo en absoluto que el número de barras de algún otro símbolo de destino para que pueda obtener un efecto de repintado de nuevo, pero dejó que como es

 

Hola mladen,

me refiero a #1606 arriba, ya que soy un principiante muy superficial o de hecho sé muy poco, no puedo entender su significado, ¿podría adjuntar un indicador viable aquí? ¿puedo usar un búfer para calcular el valor de CCI y luego hizo la media, en lugar de utilizar dos búferes? usted menciona diferentes símbolos, ¿podría escribir una versión simple para acomodar dos símbolo en el mismo gráfico? si es mtf, cómo escribir en su lugar, muchas gracias por la ayuda.

 
kenwa:
Hola mladen, refiérase a #1606 arriba, ya que soy un principiante muy superficial o de hecho sé muy poco, no puedo entender su significado, ¿podría adjuntar un indicador viable aquí? ¿puedo usar un búfer para calcular el valor de CCI y luego hacer el promedio, en lugar de utilizar dos búferes? usted menciona diferentes símbolos, ¿es posible escribir una versión simple para acomodar dos símbolos en el mismo gráfico? si es mtf, cómo escribir en su lugar, muchas gracias por la ayuda.

kenwa

No se puede utilizar el mismo buffer para calcular el buffer y luego almacenar los resultados de la media de ese CCI en el mismo buffer - la media cambiará los valores pasados

En cuanto al indicador multisímbolo (el que puede acceder a otros símbolos de un gráfico actual) : si publico la solución para eso me temo que no será sencilla. No hay una solución sencilla para eso y primero hay que aclarar qué pasa con dos símbolos diferentes en el mismo tiempo

Adjuntando la versión que funciona correctamente en un símbolo actual y en el marco de tiempo actual (esa es la única forma en que se puede calcular un promedio de un cci si se quiere utilizar la función iMAOnArray())

Archivos adjuntos:
 

kenwa

Esta sería la forma más sencilla de hacerla funcionar en multi time frame y poder elegir cualquier símbolo. Verás que no es tan sencillo como parece a primera vista, pero este hace todo lo necesario para recoger los datos correctos y evitar el repintado cuando lo hace

 

Hola mladen,

muchas gracias, se refieren a lo anterior, ¿cómo si su mtf si la escritura en la versión no mtf ser? no puedo modificado a mí mismo debido a mi nivel de codificación de jardín de infantes. por cierto, porque parece utilizado hasta 2 buffers para calcular, pero mt4 sólo permiten 8 buffers máximo es?si quiero como el indicador de referencia adjunto (que no es de ninguna manera un buen indicador (tiene errores en el interior creo, no tan viable en vivo)), sólo para su referencia, puede mostrar ocho símbolos al mismo tiempo, no es necesario la moneda o cualquier símbolo que quiero entrada a mí mismo externamente, (creo que superponer el mismo indicador en el sw no es el trabajo como la escala vertical no es fijo allí) ¿cómo se puede ayudar a crear un cci mtf uno como el del indicador de referencia (no es necesario tan complejo, pero tiene funciones similares?) Muchas gracias de nuevo por su amable ayuda.

Archivos adjuntos:
reference.mq4  17 kb