¿Cómo codificar? - página 170

 
Roger09:
Mira

double NormalizeDouble( double valor, int dígitos)

Si pones digits=2, puedes ver lo que quieres.

Hola,

Creo que no he sido muy claro. Por ejemplo:

- Si el precio actual es 1,3756, el código debería devolver 56

- Si el precio actual es 99,22, el código debería devolver 22

- Si el precio actual es 1,4499, el código debería devolver 99

Básicamente, estoy tratando de devolver el valor de los dos últimos dígitos, sin importar si la cotización es de 4 o 2 decimales.

NomalizeDouble sólo redondea el precio hasta la colocación de los dígitos especificados.

¿Alguien tiene alguna idea?

 
musical:
Hola,

Creo que no he sido muy claro. Por ejemplo:

- Si el precio actual es 1,3756, el código debería devolver 56

- Si el precio actual es 99,22, el código debería devolver 22

- Si el precio actual es 1.4499, el código debería devolver 99

Básicamente, estoy tratando de devolver el valor de los dos últimos dígitos, sin importar si la cotización es de 4 decimales o de 2 decimales.

NomalizeDouble sólo redondea el precio hasta la colocación de los dígitos especificados.

¿Alguien tiene alguna idea?

ОК

double lasttwonumbers=(Oferta-MathFloor(Oferta/(Punto*100))*Punto*100)/Punto;

 
1Dave7:
¿Cómo puedo crear un EA que cerrará cualquier orden de entrada abierta de múltiples EA's si el SL es de 10 Pips o mayor?

Dave

<<<

Myfxidea es un servicio de gráficos de patrones de velas y proporciona un asesor experto para mt4

 
Roger09:
ОК double lasttwonumbers=(Oferta-MathFloor(Oferta/(Punto*100))*Punto*100)/Punto;

Funciona a las mil maravillas. Gracias por toda su ayuda

 

Ayuda con Trailling Stop / 1 Riesgo o Posición M

Hola a todos

He intentado buscar en el foro una solución para mi problema:

Al principio de mi EA:

//---- buy conditions

if(Ask > mybuyconditions)

{

ticket=OrderSend(Symbol(),OP_BUY,LotsLong(),Ask,Spread,Bid-(Ask-lowestof10bars),((BBupper-BBlower)/(Ask-lowestof10bars))*1000,"Einstieg 1",magic+1,0,Green);

}

//---- sell conditions

if(Bid < mysellconditions)

{

ticket=OrderSend(Symbol(),OP_SELL,LotsShort(),Bid,Spread,Ask+(highestof10bars-Bid),((BBupper-BBlower)/(highestof10bars-Bid))/100,"Einstieg -1",magic-1,0,Red);

}

//----[/CODE]

Stopploss: its easy 10 bars hi/lo

Takeprofit: here i write my formula for my Trailingstop, and that is:

Take the differenz of BBupper - BBlower at the order open time. Then divide by StopLoss in Pips and you have an Factor. Then take the actual BB differenz and divide it by this Faktor. NOW WE HAVE OUR VOLA BB TRAILINGSTOPP!!!!!

SO, my big problem is now to save this FAKTOR!!!! I saved it in th Takeprofit of Ordersend, it works but it is not right!!!!!

And know the 2te Question:

Position Management:

so my order is open and i have my trailing stopp that trails : So and now if the trailingstop is > orderopenprice send next ORDER!!! It's logical because so i can always sicure to risk just my 1 R Risk.

.... if Trailingstopp is > orderopenprice of secondOrder send 3te order.

HERE MY EXAMPLES:

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

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

{

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+1)

if(OrderStopLoss()< Bid-(oben-unten)/(OrderTakeProfit()/1000))

{

OrderModify(OrderTicket(),OrderOpenPrice(),High-(oben-unten)/(OrderTakeProfit()/1000),OrderTakeProfit(),0,Indigo);

return;

}

if(OrderStopLoss() > OrderOpenPrice() && CalculateCurrentOrders(Symbol()) == 1)

{

ticket1=OrderSend(Symbol(),OP_BUY,LotsLong(),Ask,Spread,Bid-(Ask-Low),((oben-unten)/(Ask-Low))*1000,"Einstieg 2",magic+2,0,Green);

return;

}

}

{

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+2 && CalculateCurrentAfterOrders(Symbol()) <= 1)

{

if(OrderStopLoss()<Bid-(oben-unten)/(OrderTakeProfit()/1000))

{

OrderModify(OrderTicket(),OrderOpenPrice(),High-(oben-unten)/(OrderTakeProfit()/1000),OrderTakeProfit(),0,Indigo);

return;

}

if(OrderStopLoss() > OrderOpenPrice() && CalculateCurrentOrders(Symbol()) == 2)

{

ticket2=OrderSend(Symbol(),OP_BUY,LotsLong(),Ask,Spread,Bid-(Ask-Low),((oben-unten)/(Ask-Low))*1000,"Einstieg 3",magic+3,0,Green);

return;

}

}

{

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+3 && CalculateCurrentAfterOrders(Symbol()) <= 2)

{

if(OrderStopLoss()< Bid-(oben-unten)/(OrderTakeProfit()/1000))

{

OrderModify(OrderTicket(),OrderOpenPrice(),High-(oben-unten)/(OrderTakeProfit()/1000),OrderTakeProfit(),0,Indigo);

return;

}

}

}

}

[CODE] if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

{

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+1)

{

{

OrderModify(OrderTicket(),OrderOpenPrice(),High-(oben-unten)/(OrderTakeProfit()/1000),OrderTakeProfit(),0,Indigo);

return;

}

if(OrderStopLoss() >= OrderOpenPrice() && CalculateCurrentOrders(Symbol()) == 1)

{

ticket1=OrderSend(Symbol(),OP_BUY,LotsLong(),Ask,Spread,0,0,"Einstieg 2",magic+2,0,Green);

return;

}

}

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+2)

{

if(OrderStopLoss() >= OrderOpenPrice() && CalculateCurrentOrders(Symbol()) == 2)

{

ticket2=OrderSend(Symbol(),OP_BUY,LotsLong(),Ask,Spread,0,0,"Einstieg 3",magic+3,0,Green);

return;

}

}

}

{

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+2)

{

if(CalculateCurrentOrders(Symbol()) == 0)

{

OrderClose(ticket1,OrderLots(),Ask,Spread,Red); return;

}

}

}

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+3)

{

OrderClose(i,OrderLots(),Ask,Spread,Red); return;

}

¡¡¡¡¡Espero que alguien me pueda ayudar con este problema!!!!! Gracias a todos.

 

Código de adición Cuando la posición va en contra de usted "x" pips añadir lote adicional con fixedtpsl

hola

he hecho muchos estudios y he descubierto que puede ser bueno añadir esta función a mi EA

Cuando la posición va en contra de usted " 20 " pips añadir lote adicional "0,1" con la entrada propia TP y SL

¿es posible realizarlo?

Tambien este EA es muy bueno pero solo abre COMPRAS

tal vez ad "vender" la lógica

por favor ayudenme

Archivos adjuntos:
_v1.2.mq4  6 kb
 

Necesito ayuda con un problema de programación

¿Cómo se puede programar Metatrader 4 para que salga de la posición anterior y abra la nueva posición en la MISMA barra si se pone EachTickMode en falso? Cuando se pone EachTickMode en True lo hace automáticamente pero cuando se pone en false cerrará la posición anterior en una barra y luego esperará a la siguiente barra para abrir la nueva posición. Yo uso el marco de tiempo

H4 y esperar 4 horas más para abrir una nueva posición después de la señal es inaceptable. Mi sistema es demasiado sensible para usar EachTickMode=True. Cualquier ayuda que alguien pueda darme con esto sería muy apreciada.

 

Necesito ayuda para superar el error 130 de Ordersend

Abajo está mi función de compra. Si pongo la variable order_type en 1 (para la orden de mercado), funciona, así que sé que mis funciones stoploss y takeprofit están funcionando. El problema debe estar en la determinación del precio para la orden op_buylimit. Estoy intentando calcular el precio de mi orden disminuyendo Ask en un porcentaje de la longitud (pct_of_length) del cuerpo de la vela (en la barra 1). He intentado una serie de variaciones de codificación (algunas incluyendo NormalizeDouble), pero no puedo conseguir más allá del error 130. ¿Alguien puede ayudar? Estoy usando IBFX, por cierto.

Gracias de antemano.

bool place_buy_order() {

int ticket, length_in_pips, offset_in_pips;

double precio_limite_de_compra;

// pct_de_longitud es un entero externo, actualmente fijado en 10

if ( order_type == 2 && pct_of_length > 0 )

{

length_in_pips = MathAbs(High[1]-Low[1]) * MathPow(10,Digits);

offset_in_pips = MathRound(length_in_pips * (pct_of_length/100));

buy_limit_price = Ask - offset_in_pips * Point;

ticket = OrderSend(Symbol(),OP_BUYLIMIT,LotSize(),buy_limit_price,0,stoploss("b",buy_limit_price),takeprofit("b",buy_limit_price),"",MAGICMA,0,Blue);

}

si no

// orden de mercado

ticket = OrderSend(Symbol(),OP_BUY,LotSize(),Ask,Slippage,stoploss("b",Ask),takeprofit("b",Ask),"",MAGICMA,0,Blue);

if ( ticket == -1 ) return(false); else return(true);

}

 

¿Has probado a imprimir las distintas variables, TP, SL, etc., y ver si se están configurando correctamente? Eso podría darte una pista de dónde está el problema.

Lux

 
stocktrader24202:
¿Cómo puede programar Metatrader 4 para salir de la posición anterior y abrir la nueva posición en la MISMA barra si establece EachTickMode en falso? Cuando estableces EachTickMode en True lo hace automáticamente pero cuando lo estableces en false cerrará la posición anterior en una barra y luego esperará a la siguiente barra para abrir la nueva posición. Yo uso el marco de tiempo H4 y esperar 4 horas más para abrir una nueva posición después de que la señal se da es inaceptable. Mi sistema es demasiado sensible para usar EachTickMode=True. Cualquier ayuda que alguien pueda darme con esto sería muy apreciada.

EachTickMode es una variable que el codificador original del EA incluyó ESPECÍFICAMENTE para que pudiera elegir entre abrir en la misma vela O abrir en la siguiente.

Parece que el EA está haciendo EXACTAMENTE para lo que fue diseñado, así que no estoy seguro de cuál es tu problema.

Usted dice que funciona de la manera que usted quiere cuando se establece la variable a la verdad así que ¿cuál es el problema? Sólo tiene que establecer la variable a la verdad.

Lux