Erros, bugs, perguntas - página 2301

 
Artyom Trishkin:

Para um objecto de texto localizado em High[], o ponto de ancoragem (propriedade OBJPROP_ANCHOR) deve ser colocado em ANCHOR_LOWER (ponto de ancoragem no centro inferior).

Para um objecto de texto localizado em Low[], o ponto de ancoragem (propriedade OBJPROP_ANCHOR) deve ser colocado em ANCHOR_UPPER (ponto de ancoragem no centro superior).

Ou ANCHOR_CENTER para ambos os locais, o ponto de ancoragem está centrado.

Experimente-o.

Mas isso requer a criação de DOIS objectos nomeados, por exemplo, Hi e Lo (extremos superior e inferior de um ziguezague ou extremidades superior e inferior da tendência local real de subida ou descida) e ligá-los ambos ao gráfico com os valores correspondentes de ANCHOR_LOWER e ANCHOR_UPPER. Não seria mais fácil (de alguma forma) amarrar a parte superior do ZigZag - à parte inferior anteriormente "amarrada"? Foi mais ou menos o que fiz, acrescentando uma linha à função anterior

ObjectSetInteger(0,Obj,OBJPROP_ANCHOR,ANCHOR_CENTER); e introduzindo uma "correcção de offset" na linha de saída if(tvT) ORT(kBtT,Low[kBtT]-2*_Point,DtT,LowClr); //

Até agora parece estar a funcionar. Obrigado!

 
aleger:

Mas isso requer a criação de DOIS objectos nomeados, por exemplo, Hi e Lo (extremos superior e inferior do ziguezague ou extremidades superior e inferior da tendência local real de subida ou descida) e ligá-los ambos ao gráfico com os valores correspondentes de ANCHOR_LOWER e ANCHOR_UPPER. Não seria mais fácil (de alguma forma) ligar a parte superior do ZigZag - à parte inferior anteriormente "ligada"? Foi mais ou menos o que fiz, acrescentando uma linha à função anterior

ObjectSetInteger(0,Obj,OBJPROP_ANCHOR,ANCHOR_CENTER); e introduzindo uma "correcção de offset" na linha de saída if(tvT) ORT(kBtT,Low[kBtT]-2*_Point,DtT,LowClr); //

Até agora parece estar a funcionar. Obrigado!

Qual é o objectivo? Pode alterar o anexo em qualquer altura. Ou está-me a escapar alguma coisa? Muda-se a cor. Por isso, alteram a ligação.

 

Depois de fechar a janela do visor de depuração, recompilar e executar uma única corrida no Testador sem visualização, consegui isto

2018.09.27 14:01:52.784 Core 1  agent process started
2018.09.27 14:01:52.784 Core 1  connecting to 127.0.0.1:3000
2018.09.27 14:02:11.358 Core 1  tester agent authorization error
2018.09.27 14:04:15.875 Core 1  no connection
2018.09.27 14:04:15.875 Core 1  connect error

Não consegui fazer nada durante 20 segundos. O botão Start estava cinzento o tempo todo.


Registos dos agentes.

DM      3       14:01:49.711    Tester  close visual tester window
RH      0       14:01:49.711    Tester  shutdown tester machine
LN      0       14:01:54.186    Server  MetaTester 5 stopped


Os registos mostram que o Testador tentou ligar-se ao Agente à 01:52, mas o próprio Agente (Servidor) só parou à 01:54. Daí a incapacidade de ligação e enforcamento. É um insecto de longa data, mas pelo menos a causa é agora clara.

 

Resultados do perfilador em dados históricos


O OrderSend interno demora um terço do tempo. O que causa resultados tão desagradáveis?

 
fxsaber:

Resultados do perfilador em dados históricos


O OrderSend interno demora um terço do tempo. O que causa resultados tão desagradáveis?

No testador, toda a lógica comercial está aqui, não no servidor comercial.

 
Slava:

No testador, toda a lógica comercial está aqui, não no servidor comercial.

Quase três milhões de carraças e apenas 16K OrderSend. Mas estas ordens de comércio demoram um terço do tempo. E, em cada tick, há cálculos no Expert Advisor.

Daí a minha pergunta. Poderia executar o código de OrderSend no profiler? Em que lugar existe tal problema?

Presumo que se substituir a função padrão pela sua própria, ela funcionará mais rapidamente. Provavelmente, existem alguns controlos e gestos dispendiosos na OrderSend. Por exemplo, se não houver funções históricas e OnTrade* no Expert Advisor (+ indicadores), então a formação dos registos/eventos adequados é uma perda de tempo.

Compreendo que para algumas pessoas uma corrida dura muitos minutos. Mas há casos como os acima referidos - unidades de segundos, se prestar atenção à velocidade de execução. E aqui acontece que lanço Optimize durante três horas, e delas uma hora é OrderSend, cujo tempo médio de execução é de 69 µs (ver imagem do ecrã):

  • TRADE_ACTION_PENDING - 104 µs.
  • TRADE_ACTION_SLTP/TRADE_ACTION_MODIFY/TRADE_ACTION_REMOVE - 68 microssegundos.
 
Fiz o perfil do provador muitas vezes. E eu sei onde está o "engate". Estes são cálculos financeiros, que envolvem várias normalizações dos resultados para o número de dígitos da moeda de depósito
 
Slava:
Fiz o perfil do provador muitas vezes. E eu sei onde está o "engate". Estes são cálculos financeiros, que envolvem várias normalizações dos resultados para o número de dígitos da moeda de depósito

Irei escrever o meu OrderSend e compará-lo.

 
Olá a todos! Sou novo no comércio, há já meio ano que aprendo todos os detalhes sobre ele. É um negócio muito tentador, mas não sei, muitas vezes sinto que todos os lucros e perdas em meses ou anos são basicamente zero, no melhor dos cenários.Não quero desapontar ninguém neste negócio, a escolha é de todos, mas nunca ficarei satisfeito com um facto muito importante neste negócio, o SPARK (SPARK é quando um negócio abre com -16 ou -21 pontos) a 16 ou 21 pontos ou mesmo 34 pontos, aparentemente está a flutuar, sabe Deus, então como posso ganhar dinheiro?Tenho apenas uma pergunta: Diga-me quem é mais experiente, uma marcação tão grande é a mão do meu corretor (o meu corretor diz que não tem marcação e que a recebe de um fornecedor de liquidez) ou que afecta toda a gente em geral, diga-me em pormenor se ele tem a marcação e quantos pontos.
 
Por favor note este posto (ou posso movê-lo aqui e pode ser esmagado ali): https://www.mql5.com/ru/forum/281440
Помогите разобраться (баг или я не понимаю чего?)
Помогите разобраться (баг или я не понимаю чего?)
  • 2018.09.28
  • www.mql5.com
Всем привет, сразу к делу...