¿Cómo codificar? - página 318

 
mladen:
dasio Ya está haciendo un bucle con todas las horas del día actual. Puse el iClose() y el iOpen() sólo como un ejemplo de una llamada de un marco de tiempo diferente de 1 hora. Si quieres acceder a un día diferente al actual entonces sustituye el "0" de la fecha startTime=iTime(NULL,PERIOD_D1,0); por el día que desees que se recojan los datos

Gracias.

Tal vez tengo que estudiar.

No entiendo como puedo hacer cálculos separados para la vela de las 00:00 - 01:00 - 02:00 etc.

Lo siento

 

Problemas de señalización

Mladen

Gracias, he mirado de cerca....Im todavía experimentar el code.I será notificar cuando a través de.

 

dasio

Esta parte

int i=iBarShift(NULL,PERIOD_H1,startTime);

establece la i en el turno de la primera vela horaria en el día especificado (por eso se añadió datetime startTime=iTime(NULL,PERIOD_D1,0); para averiguar la hora de inicio del día) después de eso hará un bucle a través de cada valor de la barra de 1 hora hasta que el día siga siendo el mismo (por ejemplo, el viernes no hará un bucle de 24 veces, sino de 22 o 23 dependiendo de su corredor)

Si usted necesita sentir alguna matriz que tiene que ser hecho un poco diferente Ilet mí ahora uf que era su idea)

dasio:
Gracias.

Tal vez tengo que estudiar.

No entiendo como puedo hacer cálculos separados para velas 00:00 - 01:00 - 02:00 etc.

Lo siento
 

¿Cómo hacer una parada experta?

Hola codificadores,

¿Cómo codificar algunas líneas de codificación extra para que un Experto se detenga después de una operación ganadora?

Los pips están en la bolsa, entonces hacer las paradas de Expertos ...

Muchas gracias

Tomcat98

 
mladen:
dasio

Esta parte

int i=iBarShift(NULL,PERIOD_H1,startTime);

establece la i en el turno de la primera vela horaria en el día especificado (por eso se añadió datetime startTime=iTime(NULL,PERIOD_D1,0); para averiguar la hora de inicio del día) después de eso hará un bucle a través de los valores de cada barra de 1 hora hasta que el día siga siendo el mismo (por ejemplo, el viernes no hará un bucle de 24 veces, sino de 22 o 23 dependiendo de su corredor)

Si necesitas sentir algún array que se tenga que hacer de forma un poco diferente déjame saber uf esa era tu idea)

Gracias,

Estoy entendiendo un poco más.

Sin embargo lo necesito por ejemplo.

Debo asociar a las variables algo así:

(vela 00:00 ; Variable = Close+High

vela 01:00 ; Variable1 = Close+Open

vela 02:00 ; Variable2 = alta+baja;

Y así sucesivamente para todas las velas horarias del día.

Así que las variables están definidas como dobles.

Después tengo que hacer algún cálculo matemático con la variable y asociar el resultado a un buffer (no es un problema )

El problema para mi es la asociación de variables ....

 

Otro problema...estoy tratando de estudiar la programación y a veces (solo a veces...eheh) necesito ayuda.

Si tengo un ea que coloca dos ordenes pendientes como puedo codificar si quiero que cuando se abra una orden pendiente se elimine la otra orden pendiente?

Gracias

 

Tienes que utilizar 2 bucles:

Primero tienes que contar las órdenes para saber si alguna de las órdenes pendientes se ha convertido en una orden "normal" (por lo que tienes que hacer un recuento regular de las órdenes que tienen tipos OP_BUY u OP_SELL y, si quieres, contar también el resto de órdenes).

Si hay órdenes abiertas, entonces tiene que hacer un bucle de nuevo y eliminar todas las órdenes que no sean de tipo OP_BUY u OP_SELL.

El código podría ser algo así:

int opened =0;

int pending =0;

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

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() !=Symbol()) continue;

if(OrderMagicNumber()!=MagicNumber) continue;

if(OrderType()==OP_BUY || OrderType()==OP_SELL)

opened++;

else pending++;

}

if (opened>0 && pending>0)

{

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

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() !=Symbol()) continue;

if(OrderMagicNumber()!=MagicNumber) continue;

if(OrderType()!=OP_BUY && OrderType()!=OP_SELL)

OrderDelete(OrderTicket());

}

}
dasio:
Otro problema...estoy tratando de estudiar la programación y a veces (solo a veces...eheh) necesito ayuda.

Si tengo un ea que coloca dos ordenes pendientes como puedo codificar si quiero que cuando una orden pendiente se abra la otra orden pendiente debe ser eliminada?

Gracias
 

Cerrar todas las posiciones de venta o todas las posiciones de compra (cuando se alcanza el objetivo de beneficio)

Hola a todos .. soy nuevo en FX y EA. He tratado de encontrar un EA para "cerrar todas las ventas" o "cerrar todas las compras" cuando se alcanza el objetivo, pero no pude encontrar. Sólo he encontrado cerrar todas las ventas o todas las compras sin el "HIT TARGET o PROFIT". Es posible si alguien puede ayudarme a crear 1 EA con las siguientes características

1)Cerrar todas las ventas si el beneficio alcanza el objetivo X.

2)Cerrar todas las compras si el beneficio alcanza el objetivo X.

3)Incluir trailing stop (Si es posible, si no se puede no hay problema)

4) No cerrar si la equidad o el nivel de margen es inferior a X% si cerrar todas las compras o cerrar todas las ventas (Si es posible, si no puede no hay problema)

Nota:

Si no hay 4 es bastante difícil de codificar por lo que sólo no 1, 2 y 3 en un EA.

Si no hay 4 y 3 es difícil, así que sólo no hay 1 y 2 en un EA

Si sigue siendo difícil, cree los números 1 y 2 por separado.

Estaría muy agradecido si alguien pudiera proporcionarme lo anterior.

Gracias de antemano

 
pipsmonitor:
Hola a todos .. im nuevo en FX y EA. He tratado de encontrar un EA para "cerrar todas las ventas" o "cerrar todas las compras" cuando se alcanza el objetivo, pero no pude encontrar. Sólo he encontrado cerrar todas las ventas o todas las compras sin el "HIT TARGET o PROFIT". Esposible si alguien puede ayudarme a crear 1 EA con las siguientes características:-

1)Cerrar todas las ventas si el beneficio alcanza el objetivo X.

2)Cerrar todas las compras si el beneficio alcanza el objetivo X.

3)Incluir trailing stop (Si es posible, si no puede no hay problema)

4)No cerrar si el nivel de equidad o margen es menor al X % si se cierran todas las compras o se cierran todas las ventas (Si es posible, si no puede no hay problema)

Nota:

Si no hay 4 es bastante difícil de codificar por lo que sólo no 1, 2 y 3 en un EA.

Si no hay 4 y 3 es difícil, así que sólo no hay 1 y 2 en un EA

Si sigue siendo difícil, cree los números 1 y 2 por separado.

Estaría muy agradecido si alguien pudiera proporcionarme lo anterior.

Gracias de antemano

Hola Pipsmonitor,

Tal vez encontró algo aquí en esta página https://www.mql5.com/en/forum/181179 también hizo una búsqueda en Google en la barra de cabecera del foro utilizado cerrado en el beneficio encontrado algunos allí puede ser capaz de utilizar, también podría tratar de una búsqueda de trailing Eas, saber de un Ema trailing y BBand parada trailing Ea.

 

Hola,

Estoy tratando de fusionar estos dos códigos pero tengo problemas con ellos.

Necesito que cuando una orden pendiente se llene la otra debe ser cancelada.

Gracias por su disponibilidad

int opened =0;

int pending =0;

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

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() !=Symbol()) continue;

if(OrderMagicNumber()!=Magic) continue;

if(OrderType()==OP_BUY || OrderType()==OP_SELL)

opened++;

else pending++;

}

if (opened>0 && pending>0)

{

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

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() !=Symbol()) continue;

if(OrderMagicNumber()!=Magic) continue;

if(OrderType()!=OP_BUY && OrderType()!=OP_SELL)

OrderDelete(OrderTicket());

}

} [/PHP]

[PHP] extern int Magic = 68415;

extern int Orario_Inizio = 0;

extern int Orario_Fine = 6;

extern int Buffer = 0;

extern double Lotti = 0.1;

extern int TakeProfit = 10;

extern int StopLoss = 50;

double Massimo;

double Minimo;

int BarCount;

int BarStart;

int BarShift;

double MinLot;

double LotSize;

int i;

int ticket;

string Status;

string BuyStatus1;

string SellStatus1;

double Range;

string CommentoRange;

double pipMultiplier = 1;

int init()

{

}

int start()

{

if (Digits==3 || Digits==5)

{pipMultiplier = 10;}

else {pipMultiplier = 1; }

double TakeProfit1 = TakeProfit*Point*pipMultiplier;

double StopLoss1 = StopLoss*Point*pipMultiplier;

double Buffer1 = Buffer*Point*pipMultiplier;

double StopLossPrice = NormalizeDouble(StopLoss1,Digits);

double TakeProfitPrice = NormalizeDouble(TakeProfit1,Digits);

double BufferPrice = NormalizeDouble(Buffer1,Digits);

//CALCOLA LE BARRE DEL RANGE

if(Orario_Inizio>Orario_Fine)

{

BarCount=24+Orario_Fine-Orario_Inizio;

}

if(Orario_Inizio<Orario_Fine)

{

BarCount=Orario_Fine-Orario_Inizio;

}

//CALCOLA IL MASSIMO E IL MINIMO DEL RANGE

if(Hour()>=Orario_Fine)

{

BarStart=Hour()-Orario_Fine;

BarShift=BarStart+BarCount;

Minimo=iLow(NULL,PERIOD_H1,BarStart);

Massimo=0;

for(i=BarStart;i<=BarShift;i++)

{

Massimo=MathMax(Massimo,iHigh(NULL,PERIOD_H1,i));

Minimo=MathMin(Minimo,iLow(NULL,PERIOD_H1,i));

Range=(Massimo-Minimo)/Point;

}

}

else

{

Massimo=0;

Minimo=0;

return(0);

}

//CONTROLLA SE E' L'ORARIO PER POTER TRADARE

if(Hour()==Orario_Fine && OrdersTotal()<2)

{

//CONTROLLA SE IL MASSIMO E' STATO ROTTO. CONDIZIONE BUY

double OpenPriceBuy = NormalizeDouble((Massimo+BufferPrice),Digits);

ticket=OrderSend(Symbol(),OP_BUYSTOP,Lotti,OpenPriceBuy,0,OpenPriceBuy-StopLossPrice,OpenPriceBuy+TakeProfitPrice,NULL,Magic,0,Blue);

//CONTROLLA SE IL MINIMO E' STATO ROTTO. CONDIZIONE SELL

double OpenPriceSell = NormalizeDouble((Minimo-BufferPrice),Digits);

ticket=OrderSend(Symbol(),OP_SELLSTOP,Lotti,OpenPriceSell,0,OpenPriceSell+StopLossPrice,OpenPriceSell-TakeProfitPrice,NULL,Magic,0,Red);

if (ticket != -1)

return(0);

}

}