Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1205

 

por que o compilador dá um aviso nesta linha?

datetime time_setup=OrderGetInteger(ORDER_TIME_SETUP);
possible loss of data due to type conversion    
 
Você pode me dar uma dica? Quando subtraio um número, recebo 3e-5. Como faço para que pareça 0,00003? Obrigado.
 
awsomdino:

Por que o compilador dá um aviso nesta linha?

Porque XxxxGetInteger retorna longo (inteiro com sinal), enquanto que a data é um inteiro não assinado e um tipo separado. Devemos especificar

datetime timeProperty = (datetime)XxxGetInteger(...)

 
prom18:
Diga-me. Quando eu subtraio, recebo um número 3e-5. Como faço para que pareça 0,00003? Obrigado.

Onde você consegue isso?

 

Olá!

A função OnCalculate retorna periodicamente 0

prev_calculated = 0

Acho que é porque o gráfico está sendo preenchido com citações de um recurso de terceiros, mas não parece que o gráfico esteja sendo sobregravado.

Como posso sobrescrever os novos dados nestas condições sem reescrever os dados antigos?

Eu apenas crio um indicador com alguns cálculos, não estou tentando carregar as citações.

void filter(const int rates_total,const int prev_calculated)
  {
 
   int start=prev_calculated;
//--- если значения индикатора уже были рассчитаны на предыдущем тике, то работаем на последнем баре
   if(prev_calculated>0)
      start--;
//---
   for(int p=2; p<Pmax; p++) // отбор по периодам
      for(int b=start>rates_total-Pmax?start:rates_total-Pmax; b<rates_total; b++)
        {
 
Bom tempo para todos vocês. Pergunta: em MT4, ao trabalhar no testador com cruzes (pares sem contrapartidas), como o testador calcula os resultados das posições fechadas, se a conta, na qual o teste é realizado, é uma conta em dólar? Para o recálculo dos totais de posição em dólares, o testador leva a taxa de câmbio da moeda base da cruz para o dólar no momento atual ou no momento do intervalo testado? Suspeito fortemente que seja no momento atual. Em caso afirmativo, não é possível fazê-la contar no momento do intervalo?
Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
Mihail Matkovskij:

Na MQL4 somente desta forma:

Resultado:


Muito obrigado por sua ajuda.

 
Mihail Matkovskij:

Onde você consegue isso?

Aqui mesmo.

double price1=1.23450;
double price2=1.23447;
double delta=price1-price2;
Alert("Разбег ",delta);
 
prom18:

Aqui mesmo.

Alert("Разбег "+DoubleToString(delta,_Digits));

ou Alerta(StringFormat("Spread %.5f",delta));

Em geral, acostume-se, estas são apenas representações diferentes de um mesmo número. Pense em seus maravilhosos dias de escola - é de lá que ele vem

 
Top2n:

Olá!

A função OnCalculate retorna periodicamente 0

Acho que é porque o gráfico está sendo preenchido com citações de um recurso de terceiros, mas não parece que o gráfico esteja sendo sobregravado.

Como posso sobrescrever os novos dados nestas condições sem reescrever os dados antigos?

Eu apenas crio indicadores com alguns cálculos, não estou tentando carregar as citações.

Declarar uma variável global (não confundir com as variáveis globais do terminal)

 bool firstRun = false;

e fazer um recálculo completo somente no primeiro tick

// простейшее условие пересчёта
if(!firstRun) {
  // пересчёт ...
  firstRun = true;
}

Se a FirstRun também for reinicializada junto com os parâmetros OnCalculate, o indicador será reinicializado.

Razão: