Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 379

 
ALXIMIKS:


...

4) por que você tem que passar pelas pausas???

...


О! Você pode me mostrar como não passar por eles?

Claro, a pergunta é interessante: é melhor adicionar OrderProfit() + OrderComission() + OrderSwap() que totalizam 0 e não mudam nada, ou precisamos fazer se para cada pedido?

 
Example2:


Não importa como é remontada, o principal é que funciona.


Há alguma diferença em alguns casos. Se para (int i = 0; i < OrdersTotal(); i++), a função OrdersTotal() é chamada em cada laço, e se para (int i = OrdersTotal()-1; i>=0; i--), então a função OrdersTotal() é chamada apenas uma vez. Eu não experimentei a velocidade de execução em mql. Uma vez, em php, a função de contagem() funcionou por 17 segundos em um laço para frente e 0,01 segundos em um laço inverso.
 
Mediu a velocidade do ciclo de avanço e retrocesso. 100 pedidos, o ciclo reverso é 5 vezes mais rápido. Mas nunca há tantos pedidos, 10 no máximo. Se houver 10 pedidos, a velocidade é 3 vezes mais rápida. É palpável escolher o ciclo inverso.
 
Integer:
Mediu a velocidade do ciclo de avanço e retrocesso. 100 pedidos, o ciclo reverso é 5 vezes mais rápido. Mas nunca há tantos pedidos, 10 no máximo. Se houver 10 pedidos, a velocidade é 3 vezes mais rápida. É bastante sensato escolher um ciclo inverso.


Você pode aconselhar como normalizar o preço?(Meu posto acima) .

 
Example2:


Você pode me dizer como normalizar o preço? (Meu posto acima).

Há uma função NormalizeDouble().

NormalizeDouble(_High+Point*20,Digits);

Ao multiplicar, é melhor colocar o dobro primeiro, depois int, senão em alguns casos você pode perder a parte fracionária.

 
if(Line_7 > Lines_1 > Line_6)
{
Alert("Сигнал на покупку");
OrderSend(Symbol(),OP_BUY,Lots_Typ,Ask,5,SL_Typ,TP_Typ);
}
return;}
É possível definir a abertura de uma ordem desta forma?
 
Link_x:
É possível definir a abertura de uma ordem desta forma?


Não.

É assim que deve ser feito:

if(Line_7 > Lines_1 && Lines_1 > Line_6)
 

Também verifiquei a velocidade de cálculo do lucro somando os lucros de todas as ordens e selecionando apenas ordens de mercado:

Prof1+=OrderProfit()+OrderSwap()+OrderCommission();

и

if(OrderType()==OP_BUY || OrderType()==OP_SELL){
 Prof2+=OrderProfit()+OrderSwap()+OrderCommission();
}
A primeira opção é um pouco mais rápida, mas não significativamente. A relação de velocidade é de cerca de 1/1,1
 
Integer:

Há uma função NormalizeDouble().

Ao multiplicar, é melhor colocar o dobro primeiro, depois int, caso contrário você pode perder a parte fracionária em alguns casos.


Agora recebo erro 3: "Parâmetros incorretos foram enviados à função comercial, por exemplo, símbolo errado, operação comercial não identificada, tolerância de preço negativo, número de bilhete inexistente, etc. A lógica do programa precisa ser mudada".

 
Example2:


Agora recebo o erro 3: "Parâmetros incorretos foram enviados para a função comercial, por exemplo, símbolo errado, comércio não identificado, tolerância de preço negativo, número de bilhete inexistente, etc. A lógica do programa precisa ser mudada".


Traduzir o cursor para o primeiro parêntese de abertura após OrderSend, apagar este parêntese, reentrar, isto abrirá uma ponta de ferramenta com o tipo de parâmetros, verificar se todos os parâmetros são do tipo correto.