[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 892
![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
¡Hola! No puedo entender qué pasa con ???? No modifica la orden de mercado
slb =NormalizeDouble(Bid - (StopLoss * Point),Digits); // calcula el stop para posiciones de compra//
tpb =NormalizeDouble(Ask + (TakeProfit* Point),Digits); // calcula el beneficio para posiciones de compra//
sls =NormalizeDouble(Ask + (StopLoss * Point),Digits) // cálculo del stop para posiciones de venta//
tps =NormalizeDouble(Bid - (TakeProfit* Point),Digits);
//================================================== ==================//
int total=OrdersTotal();
int n=0;
for (int i=total-1; i>=0; i--)
{
if(OrderSelect(i, SELECT_BY_POS))
{
if(OrderSymbol()==Symbol())
{
n++;
}}
if ( total == 1 )
{
for (int k=total-1; k>=0; k--)
{
if(OrderSelect(k, SELECT_BY_TICKET)
Alert("la orden es", k);
{
si ((OrderType()==OP_BUY)&&(OrderTakeProfit()==0)&&(O rderStopLoss()==0))
{
OrderModify(k,OrderOpenPrice(),slb,tpb,0,Blue);
Alert("error", GetLastError());
}}}}
return(0);}
CUÁL ES EL PROBLEMA POR FAVOR AYUDA ...........?????
Cualquier pregunta de los recién llegados, para no saturar el foro. No dejes pasar a los profesionales. Sin ti no hay nada.
Cualquier pregunta de los recién llegados, para no saturar el foro. No dejes pasar a los profesionales. Sin ti no hay nada.
Lo siento, no entiendo cuál es el problema, creo que nunca se cumple la condición del while, porque si pongo Comment dentro del bucle, no se refleja. Además encima del bucle tengo la variable B igual al valor normal esperado, como 0,0011, pero si lo multiplico por Point, sale 0!!!!
int start()
{
double A,B,C ;A=Cerrar[1];B=Cerrar[Bares];
C=A-B ;Comment("Valor de la diferenciai ", B*Punto);
while (B*Punto >Swing)
{ Comment("Valor de la diferencia ", B);
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-stoploss*Point,Ask+TakeProfit*Point,"macd sample",16384,0,Green);}
while (0-B*Point<Point)
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+stoploss*Point,Bid-TakeProfit*Point,"macd sample",16384,0,Red);
Alert("Valor ", B);
Comment("Valor differencei ",B);
//----
//----
return(0);
}
No estoy seguro pero la forma correcta sería
int start()
{
double A,B,C ;A=Close[1];B=Close[bars]; ¿Qué significa Close[bars]; ???? Cerrar[secuencia de números de barra hacia atrás, sin corriente]
cierre de la vela anterior[1]. cierre de la vela anterior[2]
B=(A-B)*Punto ; Comment("Valor de la diferencia ", B); B será igual al cierre de la vela anterior menos el cierre de la vela que establezca en B= cierre [....]
while (B > B) y muy probablemente no while a si la condición
{ Comment("Diferencia de valor ", B);
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-stoploss*Point,Ask+TakeProfit*Point, "macd sample",16384,0,Green);
}
while (0-B<Round) y muy probablemente no mientras una condición if
{
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+stoploss*Point,Bid-TakeProfit*Point, "macd sample",16384,0,Red);
}
Alert("Valor ",B);
Comment("Valor diferenciai ",B);
//----
//----
return(0);
}
Podría estar equivocado.....
Hay muchos errores en tu código ...... ¿qué quieres hacer qué resultado? No debería haber cartas rusas...
No puedes tener C en la hoja de cálculo porque C tiene un número en la memoria como 1.23456
0-B sería un número negativo....
y es mejor calcular las pérdidas y ganancias de la siguiente manera
slb =NormalizeDouble(Oferta - (StopLoss * Punto), Dígitos); // calcular el stop para posiciones de compra//
tpb =NormalizeDouble(Oferta + (TakeProfit* Punto),Dígitos); // calcular el beneficio para posiciones de compra//
sls =NormalizeDouble(Oferta + (StopLoss * Punto),Dígitos) // calcular el stop para las posiciones de venta//
tps =NormalizeDouble(Bid - (TakeProfit* Point),Digits); // calcular el beneficio para las posiciones de venta//
Lo siento, no entiendo cuál es el problema, creo que nunca se cumple la condición del while, porque si pongo Comment dentro del bucle, no se refleja. Además encima del bucle tengo la variable B igual al valor normal esperado, como 0,0011, pero si lo multiplico por Point, sale 0!!!!
int start()
{
double A,B,C ;A=Cerrar[1];B=Cerrar[Bares];
C=A-B ;Comment("Valor de la diferenciai ", B*Punto);
while (B*Punto >Spread)
{ Comment("Valor de la diferencia ", B);
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-stoploss*Point,Ask+TakeProfit*Point,"macd sample",16384,0,Green);}
while (0-B*Point<Point)
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Ask+stoploss*Point,Bid-TakeProfit*Point,"macd sample",16384,0,Red);
Alert("Valor ", B);
Comment("Valor differencei ",B);
//----
//----
return(0);
}
¿Y te empeñas en que hay que multiplicar la diferencia entre A y B por el punto?
Los valores de A y B son números reales. Al multiplicar su diferencia por Punto, se aumenta aún más el número de decimales. Si necesita obtener un número entero para compararlo con un número entero "extendido", debería dividir por Punto.