[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:
 
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.
Razão: