Apenas "Recursos úteis do KimIV". - página 10

 
borilunad:

Não é difícil aumentar em um!

O que você quer dizer com isso?
 

Função ModifyOrder()

Aqui está o início do código:

void ModifyOrder(double pp=-1, double sl=0, double tp=0, color cl=CLR_NONE) {
  bool   fm;
  double op, pa, pb, os, ot;
  int    dg=MarketInfo(OrderSymbol(), MODE_DIGITS), er, it;
 
  if (pp<=0) pp=OrderOpenPrice();
  if (sl<0 ) sl=OrderStopLoss();
  if (tp<0 ) tp=OrderTakeProfit();

Inicialmente, os parâmetros formais da função se assemelham a isto:

pp=-1, но sl=0 и tp=0

Se tivéssemos que escrever de forma clara e sistemática, seria mais fácil por conveniência atribuir -1 a cada um dos parâmetros formais, ou seja, que seria assim:

pp=-1, sl=0 tp=0

A pergunta que surge é: por que confundir tanto o código ao comparar um dos parâmetros formais com zero, e o outro com -1? Poderíamos também ter entrado -73...

 
hoz:

Função ModifyOrder()

Aqui está o início do código:

Inicialmente, os parâmetros formais da função se assemelham a isto:

Se tivéssemos que escrever de forma clara e sistemática, seria mais fácil por conveniência atribuir -1 a cada um dos parâmetros formais, ou seja, seria assim:

A pergunta que surge é: por que confundir tanto o código ao comparar um dos parâmetros formais com zero, e o outro com -1? Poderíamos também ter entrado -73...


Pergunte pessoalmente ao autor e acrescente um de cinco dígitos após o ponto decimal!
 

Você não pode (não adianta) modificar um pedido com preço aberto == 0, mas você deve ser capaz de estabelecer zero stoploss e take-out, então se você colocar sua mente nisso (pense), tudo se encaixa no lugar.

ZS. sim, as funções foram escritas quando os quatro dígitos ainda existiam, mas isto não invalida sua relevância.

 
borilunad:

Pergunte pessoalmente ao autor e acrescente um de 5 dígitos após o ponto decimal!


Com o número de dígitos após o ponto decimal, é mais fácil fazê-lo:

if(Digits==3 || Digits==5) pt=10*Point;
 
FAQ:

Você não pode (não adianta) modificar um pedido com preço aberto == 0, mas você deve ser capaz de estabelecer zero stoploss e take-out, então se você colocar sua mente nisso (pense), tudo se encaixa no lugar.

ZS. sim, as funções foram escritas quando os quatro dígitos ainda existiam, mas isto não invalida sua relevância.


Você deve ser capaz de modificar o stoploss e o takeprofit para zero, mas o stoploss ou o takeprofit não deve ser inferior a 0 e nem o preço de abertura, portanto -1 e 0 é apenas um parâmetro formal, e você pode usá-lo sob qualquer número inteiro, como eu o entendo.
 
jurist70:

Caro, onde na fila.


Para todos os pares, exceto os pares de ienes, o ponto é a mudança no 4º dígito das aspas. Para os pares de ienes, está no segundo dígito. Com a introdução da precisão da cotação a 0,1 ponto, surgiram cotações de 5 e 3 dígitos.

 
hoz:

Função ModifyOrder()

Aqui está o início do código:

Inicialmente, os parâmetros formais da função se assemelham a isto:

Se tivéssemos que escrever de forma clara e sistemática, seria mais fácil por conveniência atribuir -1 a cada um dos parâmetros formais, ou seja, que seria assim:

A pergunta que surge é: por que confundir tanto o código ao comparar um dos parâmetros formais com zero, e o outro com -1? Poderíamos também ter entrado -73.

pp= -1 é qualquer preço de abertura

se (pp<=0) pp=OrderOpenPrice(); este é um preço de abertura específico

 
pako:

pp= -1 é qualquer preço em aberto

se (pp<=0) pp=OrderOpenPrice(); este é o preço de abertura definido


Você deveria ter lido a pergunta antes de respondê-la. Eu perguntei por que os parâmetros formais têm valores padrão diferentes. Acho que a questão é que se chamarmos a função sem declarar sl e tp, eles não mudarão a 0, ou seja, não mudarão.

Não consigo pensar em outra maneira de fazer isso.

 
hoz:


Você deveria ter lido a pergunta antes de respondê-la. Eu estava perguntando por que os parâmetros formais têm valores padrão diferentes. Acho que a questão é que se chamarmos a função sem declarar sl e tp, eles não mudarão a 0. Ou seja, não mudarão.

Não consigo pensar em outra maneira de fazer isso.


Neste caso == 0, parar e tomar será liberado. Na verdade, não consigo entender o porquê de todo este alvoroço? Não são funções de linguagem padrão, mas invólucros escritos por um programador, se você não estiver satisfeito com eles, então escreva o seu próprio, ou troque-os como você achar conveniente, e use-os.
Razão: