[Arquivo!] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por ela. Não poderia ir a lugar algum sem você - 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 assim
abolk:

funciona assim!
Obrigado!
Sorento:
Obrigado!


Em geral, é hora de os desenvolvedores da MT criarem uma seção na documentação e explicarem em detalhes o problema e a necessidade de usar a normalização.

Há apenas um modesto exemplo sem ênfase na documentação para esta situação:

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

Seção "Type Approach" https://docs.mql4.com/ru/basis/types/casting

Roger:

À FoxUA.

Quando a Ordem 3 (Vender) é fechada, aquela Ordem 1 (Comprar) ainda semáforos que foi fechada em Stop Loss e assim 2 ordens seguidas são colocadas, porque Total=1.


ou seja, procuro uma solução para este problema, ou seja, o que substituir o total 1 para se livrar de tal efeito
Você pode me dizer se o script pode abrir ordens não apenas na janela do gráfico ao qual está anexado, mas também em outros pares de moedas, se estiver devidamente prescrito em quais outros pares de moedas você precisa abrir?
CreAndr:
Você pode me dizer se o script pode abrir ordens não apenas na janela do gráfico ao qual está anexado, mas também em outros pares de moedas, se estiver devidamente prescrito em quais outros pares de moedas você precisa abrir?

talvez
abolk:

talvez
#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);

}


mas esta opção, funcionará ou não?
Arquivos anexados:
[Excluído]
CreAndr:

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


mas esta opção, funcionará ou não?


Não, o que você destacou será devolvido a partir da ferramenta atual. Licitações, pedidos, dígitos, etc., devem ser solicitados com MarketInfo especificando explicitamente a ferramenta
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);

}

Mas esta opção vai funcionar ou não?


Não vai. Você tem que usar a função MarketInfo https://docs.mql4.com/ru/common/MarketInfo.

há exemplos de seu problema na página

Obrigado por sua ajuda.