O conselheiro é adequado para a vida real? - página 30

 
FOReignEXchange:

Seguirei definitivamente quando chegar o momento.

Boa sorte para você
 
dentraf:

Boa sorte para você!

Obrigado!
 
FOReignEXchange:

A idéia é negociar em um mercado desordenado com alta volatilidade. Todos os principais pares de moedas são assim agora. A volatilidade é alta, lógica e nenhum sistema funciona. É o caos. ....
Vamos lá. Tudo funciona como antes.
 

Após a volatilidade de hoje, comparei os resultados do testador com os resultados reais. Infelizmente, foram reveladas discrepâncias significativas em tal mercado.

Desmontei os logs do terminal por minuto e vi uma coisa boa. Todos os pips foram colocados exatamente em um ponto. O robô recolheu todo o lucro que podia sobre este setor. Mas todo esse lucro foi desperdiçado, porque havia um problema. O problema é resolúvel, mas não consigo entender por que isto é um problema. Ou seja, não podemos eliminar ordens desnecessárias. Acho que há duas razões para isso.

Primeiro: No registro diz o seguinte

22:23:30 '882613': eliminar ordem pendente #26344474 comprar paragem 4,00 EURUSD a 1,3787 sl: 1,3773 tp: 1,3799
22:23:30 '882613': eliminar ordem pendente #26344474 comprar paragem 4,00 EURUSD a 1,3787 sl: 1,3773 tp: 1,3799 falhou [Parâmetros inválidos]

22:37:27 '882613': eliminar ordem pendente #26347980 stop de venda 4,00 EURUSD a 1,3668 sl: 1,3682 tp: 1,3656
22:37:27 '882613': eliminar a ordem pendente #26347980 stop de venda 4,00 EURUSD a 1,3668 sl: 1,3682 tp: 1,3656 falhou [Parâmetros inválidos]
22:37:27 '882613': eliminar ordem pendente #26347980 stop de venda 4,00 EURUSD a 1,3668 sl: 1,3682 tp: 1,3656
22:37:28 '882613': eliminar ordem pendente #26347980 vender 4,00 EURUSD a 1,3668 sl: 1,3682 tp: 1,3656 falhou [Parâmetros inválidos]

Essas duas ordens não foram eliminadas e ambas causaram perdas. A segunda ordem tentou ser apagada duas vezes. Não entendo por que eles não são apagados. Tudo está funcionando bem o dia inteiro, mas aqui não está, mesmo que você coloque RefreshRates() antes da função de exclusão.

E, em segundo lugar:

Acho que é um bicho. Parece que o terminal não tem memória ou cérebro suficientes. Esquece que selecionamos um pedido. Estas são as peças que não funcionam.

if (//Тут условие//)
   {
   if (OrderSelect(ticket_buy,SELECT_BY_TICKET)==true)
     {
     if (OrderType()==OP_BUYSTOP && Ask>(OrderOpenPrice()-4*Point)) 
        {
        i=0;
        while (i<10)
              {
              if (i>0) Sleep(500);      
              RefreshRates(); OrderDelete(ticket_buy); 
              err=GetLastError();
              if (err==0)
                 {
                 ticket_buy=0; return;
                 }
              i++;
              }
        }
     }
   }

Todas as condições estão satisfeitas, eu as verifiquei com comentários. Na fase de verificação do tipo de pedido, tudo fica preso. A função de eliminação não é mais utilizada. Embora devam, já que todas as condições são cumpridas e todos os comentários as verificam. Esta não é a primeira vez que percebo que quando selecionamos uma ordem e depois inserimos qualquer parâmetro da ordem selecionada na condição, às vezes falhamos em ler corretamente esta condição. Quanto maior o número de parâmetros de ordem na condição, mais frequentemente a condição falha. Neste caso, temos parâmetros OrderType() e OrderOpenPrice(). Acho que muitos de nós já notamos esta coisa estranha. Como podemos nos livrar dele? Ou talvez o problema esteja noutra coisa? Esqueci de dizer, sem erros no registro neste caso, apenas que a condição não é cumprida, embora deva ser cumprida.

Penso que pode não haver um problema no outro, porque a condição não é cumprida raramente, geralmente tudo funciona bem nesta parte, mas às vezes não funciona e traz prejuízos.

Não julgue severamente por um código tão analfabeto, eu sou autodidata.

Por que exatamente a remoção de pedidos ocorre com tais problemas? Meus pedidos são feitos exatamente como necessário e o robô recolhe todos os lucros. Mas tudo está ficando bagunçado porque não podemos apagar ordens desnecessárias! Se você se livrar desses problemas, tudo funcionará como deveria!

 
FOReignEXchange:

A julgar pelo registro, o código simplesmente não chegou lá a tempo.

Ou seja, a eliminação já estava em andamento quando a ordem foi acionada.

 
TheXpert:

A julgar pelo registro, o código simplesmente não chegou lá a tempo.

Ou seja, a eliminação já estava em andamento quando a ordem foi acionada.


E as ordens pendentes são definidas exatamente ao mesmo tempo e não são perdidas. Por que existe um problema com a eliminação? Especialmente no segundo caso, ele tentou apagá-lo duas vezes.
 
FOReignEXchange:
E as ordens pendentes são definidas exatamente ao mesmo tempo e não são perdidas. Por que existe um problema com a eliminação? Ainda mais que, no segundo caso, ele tentou apagá-lo duas vezes.

Veja com atenção -- esta é a segunda vez que você está tentando apagar uma ordem executada, não uma ordem limitada.

E para o ajuste há níveis de parada e para remoção só há níveis livres.

 
TheXpert:

Veja com atenção -- esta é a segunda vez que você está tentando apagar uma ordem executada, não uma ordem limitada.

E há linhas de parada para fazer um pedido, mas apenas freesliders para apagar, e isso se houver algum.


Tudo está claro com o primeiro caso. Muito obrigado! Você está familiarizado com a segunda? É mais importante porque acontece com mais freqüência e causa mais perdas. Tudo está bem em termos de condições. E não é a velocidade do mercado e há muito tempo para removê-lo. A condição simplesmente não é cumprida, embora devesse ser.
 
FOReignEXchange:

Você está familiarizado com a segunda por acaso? A condição simplesmente não funciona, embora devesse.

Talvez esta condição às vezes falhe, ou seja, seu lado direito

if (OrderType()==OP_BUYSTOP && Ask>(OrderOpenPrice()-4*Point))

Normalizar Pergunte antes de comparar.

 
OnGoing:

Talvez esta condição às vezes falhe

Normalize o Ask antes de comparar.


Assim?

NormalizeDouble(Ask,Digits)>(OrderOpenPrice()-4*Point))