[¡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

 

¡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.

 
belck:

Cualquier pregunta de los recién llegados, para no saturar el foro. No dejes pasar a los profesionales. Sin ti no hay nada.

¿Qué quieres decir? Es como si te permitieran preguntar sobre el tiempo... o la salud... :))))))
 


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.....

 
¡¡¡Gracias!!! Lo intentaré. Durante tres días no puedo averiguar qué es lo que está mal, técnicamente todo parece estar bien.
 
No, es lo mismo. Gracias por la respuesta. No sé cuál es el problema.
 

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//

 
Dimka-novitsek:


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.