Erros, bugs, perguntas - página 2350

 

Olá

Perdi alguma coisa ou é agora possível enviar ordens bylimit acima do preço actual e de modo a que sejam imediatamente executadas. Como num verdadeiro sistema de bolsa de valores?

Como limitar o escorregamento?

 

Não consigo perceber, por isso, dê-me uma dica. Há uma aquisição de tempo

int GetHandle() { return(0); }

bool SelectHandle( int ) { return(true); }
  
int NewHandle = 0;  
int PrevHandle = GetHandle();    

datetime time = SelectHandle(NewHandle) ? TimeCurrent() : 0;  
SelectHandle(PrevHandle);


Como escrever uma macro que faz a mesma coisa

time = MACROS(NewHandle, TimeCurrent()); // Макрос


O problema é que o PrevHandle não é criado na macro.

 

Olá a todos.

Terminal construído em 1960 (o mesmo na versão beta 1966). Funções CopyTicks, CopyTicksRange funcionam correctamente no indicador, funcionando no terminal, mas no testador, o mesmo indicador nestas funções mostra -1 resultado e erro 4014. Desenvolvedores, por favor aconselhem porquê?

 
fxsaber:

Como escrever uma macro que faz a mesma coisa

O que há de errado com uma função?
 
Alexey Navoykov:
O que há de errado com a função?

Porque, em vez de TimeCurrent, pode ser qualquer função.

 
fxsaber:

O facto de, em vez de TimeCurrent, poder ser qualquer função.

Bem, então, apenas se for utilizada uma variável global.
 
fxsaber:

Como escrever uma macro que faz a mesma coisa

O problema é que a PrevHandle não pode ser criada na macro.

Penso que o grande problema é que não existe um operador de vírgula, sem ele é pouco provável que se obtenha uma tal macro.

 
Síndrome típica de génios não reconhecidos... Falar de coisas altas e não ser capaz de resolver o problema mais simples...
Pense nisso... durante uma semana
Dica: O facto de a solução em MQL já existir é uma dica em si mesma.
 
pavlick_:

Na minha opinião, o grande problema é que não existe um operador de vírgula, sem ele é pouco provável que se obtenha uma tal macro.

Poderia fazer isto:

int MACROS_helper_int;
#define  MACROS(NEW_HANDLE_, FN_)  (MACROS_helper_int=GetHandle())*0+(SelectHandle(NEW_HANDLE_) ? FN_ : 0);  \
                                  SelectHandle(MACROS_helper_int);

Mas crostoso, não se pode colocá-lo em algum lugar em condições, apenas através de =.

SZY: e cuidadosamente utilizado depois se, enquanto, etc.

if(true)
   MACROS(...);

Provavelmente não usaria um.

 
A100:
Síndrome típica de génios não reconhecidos... Falar de coisas altas e não ser capaz de resolver o problema mais simples...
Pense nisso... durante uma semana
Eis uma dica: o facto de a solução em MQL já existir é uma dica em si mesma.

Bem, vamos lá, você, mestre, surpreende os plebeus com uma solução brilhante.