[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No podría ir a ningún sitio sin ti - 2. - página 287

 
Sorento:
2011.03.30 08:40:21 USDCAD,M1: 3 4 4.00000000 ask=0.9729 bid=0.9725


int Ret[3];

Ret[0]=NormalizeDouble((Ask-Bid)/Point,0); 
Print (Ret[0]," ",(Ask-Bid)/Point," ask=",Ask," bid=",Bid); 
funciona así
 
abolk:

funciona así
Gracias.
 
Sorento:
Gracias.


En general, es hora de que los desarrolladores de MT creen una sección en la documentación y expliquen en detalle el problema y la necesidad de utilizar la normalización.

Sólo hay un modesto ejemplo sin énfasis en la documentación para esta situación:

int    i = 1 / 2.0;   // выражение приводится к типу double, затем приводится к целевому типу int, результат: 0

Sección "Enfoque de tipo" https://docs.mql4.com/ru/basis/types/casting

 
Roger:

A FoxUA.

Cuando se cierra la Orden 3 (Vender), esa Orden 1 (Comprar) sigue semáforo que se cerró en Stop Loss y así se colocan 2 órdenes seguidas, porque Total=1.


es decir, busco una solución a este problema, es decir, qué sustituir total 1 para deshacerse de tal efecto
 
¿Puede decirme si el script puede abrir órdenes no sólo en la ventana del gráfico al que está unido, sino también en otros pares de divisas, si está debidamente prescrito en qué otros pares de divisas necesita abrir?
 
CreAndr:
¿Puede decirme si el script puede abrir órdenes no sólo en la ventana del gráfico al que está unido, sino también en otros pares de divisas, si está debidamente prescrito en qué otros pares de divisas necesita abrir?

tal vez
 
abolk:

tal vez
#property show_inputs
//--------------------------------------------------------------------
extern double TakeProfit = 1000;
extern double Lots = 0.01;
extern double StopLoss = 500.0;
extern int MagNum = 1974;
int slip = 100;


//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()

{
//::::Открытие и выставление ордеров


OrderSend("EURUSD",OP_BUY,Lots,NormalizeDouble(Ask,Digits),slip,NormalizeDouble(Bid - StopLoss*Point,Digits),NormalizeDouble(Ask + TakeProfit * Point,Digits),"CleverEA",MagNum,0,Green);
OrderSend("GBPUSD",OP_BUY,Lots,NormalizeDouble(Ask,Digits),slip,NormalizeDouble(Bid - StopLoss*Point,Digits),NormalizeDouble(Ask + TakeProfit * Point,Digits),"CleverEA",MagNum,0,Green);
OrderSend("USDJPY",OP_SELL,Lots,NormalizeDouble(Bid,Digits),slip,NormalizeDouble(Ask + StopLoss*Point,Digits),NormalizeDouble(Bid - TakeProfit * Point,Digits),"CleverEA",MagNum,0,Red);
OrderSend("USDCHF",OP_SELL,Lots,NormalizeDouble(Bid,Digits),slip,NormalizeDouble(Ask + StopLoss*Point,Digits),NormalizeDouble(Bid - TakeProfit * Point,Digits),"CleverEA",MagNum,0,Red);

return (0);

}


pero esta opción, ¿funcionará o no?
Archivos adjuntos:
 
CreAndr:

OrderSend("EURUSD",OP_BUY,Lots,NormalizeDouble(Ask,Digits),slip,NormalizeDouble(Bid - StopLoss*Point,Digits),NormalizeDouble(Ask + TakeProfit * Point,Digits)," CleverEA",MagNum,0,Green);


pero esta opción, ¿funcionará o no?


No, lo que has resaltado será devuelto desde la herramienta actual. Las ofertas, demandas, dígitos, etc. deben solicitarse con MarketInfo especificando explícitamente la herramienta
 
CreAndr:
#property show_inputs
//--------------------------------------------------------------------
extern double TakeProfit = 1000;
extern double Lots = 0.01;
extern double StopLoss = 500.0;
extern int MagNum = 1974;
int slip = 100;


//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()

{
//::::Открытие и выставление ордеров


OrderSend("EURUSD",OP_BUY,Lots,NormalizeDouble(Ask,Digits),slip,NormalizeDouble(Bid - StopLoss*Point,Digits),NormalizeDouble(Ask + TakeProfit * Point,Digits),"CleverEA",MagNum,0,Green);
OrderSend("GBPUSD",OP_BUY,Lots,NormalizeDouble(Ask,Digits),slip,NormalizeDouble(Bid - StopLoss*Point,Digits),NormalizeDouble(Ask + TakeProfit * Point,Digits),"CleverEA",MagNum,0,Green);
OrderSend("USDJPY",OP_SELL,Lots,NormalizeDouble(Bid,Digits),slip,NormalizeDouble(Ask + StopLoss*Point,Digits),NormalizeDouble(Bid - TakeProfit * Point,Digits),"CleverEA",MagNum,0,Red);
OrderSend("USDCHF",OP_SELL,Lots,NormalizeDouble(Bid,Digits),slip,NormalizeDouble(Ask + StopLoss*Point,Digits),NormalizeDouble(Bid - TakeProfit * Point,Digits),"CleverEA",MagNum,0,Red);

return (0);

}

Pero, ¿funcionará esta opción o no?


No lo hará. Tiene que utilizar la función MarketInfo https://docs.mql4.com/ru/common/MarketInfo.

hay ejemplos de su problema en la página

 
Gracias por su ayuda.