Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
E novamente - o código... código... O código é bom... mas também é - tácticas, ciclos... ;)
O gráfico não recebe uma mensagem sobre a criação de um novo bar? Eu não acredito...)))
É um problema fazer dele um evento? É pelo menos uma variável pré-definida?
Em geral, é mais fácil processar eventos do que preencher uma montanha de códigos. E para além disso - com erros (PROGRAMAS SEM ERROS NÃO FAZEM TUDO!! )))))
Concordo plenamente consigo que o novo bar é um evento e pode (e deve) ser programado. Há um ramo em https://www.mql5.com/ru/forum/1031 leia-o à sua vontade, mas há anos que me esforço...
Z.I. Penso que depois de ler isto verá que o novo bar poderá NUNCA aparecer... um buraco...
Mais uma vez, código... código... O código é bom... mas também o são as tácticas, os loops... ;)
O gráfico não recebe uma mensagem sobre a criação de um novo bar? Eu não acredito...)))
É um problema fazer dele um evento ou pelo menos uma variável pré-definida?
Em geral, é mais fácil processar eventos do que preencher uma montanha de códigos. E para além disso - com erros (PROGRAMAS SEM ERROS NÃO FAZEM TUDO!! )))))
Ao testar, é gerado um erro
CTrade::PositionClose::OrderCheck: Pedido de paragem inválida(s)
No meu Conselheiro Especialista, há as seguintes linhas
descrição das variáveis (no procedimento)
CTrade m_trade;
..................
posição próxima
m_trade.PositionClose(_Symbol, eSlippage);
porque é que mostra erro? CTrade::PositionClose::OrderCheck: Pedido de paragem inválida(s)
SL e/ou TP errados
TRADE_RETCODE_INVALID_STOPS
O que é que as paragens têm a ver com o fecho de posição? Ou será que me falta alguma coisa?
Concordo plenamente consigo que o novo bar é um evento e pode (e deve) ser programado. Há um tópicoem https://www.mql5.com/ru/forum/1031 que pode ler à vontade, mas há anos que ando a lutar...
Z.U. Penso que depois de ler isto ficará claro para si que a nova barra NUNCA poderá aparecer... um buraco...
Corri o risco de olhar para a ligação... Acho que vale realmente a pena ler... à sua vontade... ;)
Essa é a razão de querer tal evento... Sem barra, sem evento.
Na verdade, como o imagina? 20 prazos x número de símbolos em "Market Watch" e para cada um deles é gerado o evento OnNewBar? E tem de processar cada um deles, para determinar a que símbolo e a que prazo se refere? Agora tem a escolha: escrever a sua própria função NewBar e nela definir o que quer receber novas barras: todos os períodos para um símbolo, todos os símbolos para o período actual ou algum caso especial. Isto faz uma função simples. É melhor do que a função universal OnNewBar com muitos controlos.
20 prazos... não é o limite para um parâmetro ulong... preencher uma variável inteira uma vez num minuto é correcto, não é difícil...
Porquê, OnTick olha para "x número de caracteres no 'Market Watch' e gera um evento para cada..." ?????
E a pequena verificação é, acredite, uma coisa bastante rápida...
E mesmo com um evento
- ninguém me vai obrigar a processá-lo - não é preciso...
- E mesmo que tenha um evento, nada o impede de acrescentar ou substituir "escreva a sua própria função NewBar e defina se quer obter novas barras" - se necessário...
Mesmo agora é fácil de fazer, se souber como o fazer. Os criadores prometeram reescrever OnTrade() e acrescentar os parâmetros necessários.
Ninguém impede que tais situações sejam tratadas localmente, em OnTick() ou OnTime() - no local da operação comercial; ou em OnTrade(), se precisar de apanhar acções dos utilizadores ou operações comerciais não controladas directamente por código.
A leveza é um conceito relativo e para um é medida em gramas, para outro em toneladas. No meu Expert Advisor tive de o fazer SEMPRE (se o meu código pode ser chamado assim), porque não existem agora variantes PROSTO na minha língua, enquanto poderiam muito bem existir, imho. E não fiquei particularmente satisfeito por o código se ter tornado cem linhas mais longo e fazer com que parecesse mais complicado.
Aqui está o problema em geral:
Um tique vem, o indicador mostra a necessidade de fechar, eu fecho
Quando chega o próximo tick, o indicador mostra que tem de fechar, e eu não sei o que fazer - a posição já está posicionada e é impossível descobrir o que está a acontecer neste momento, claro, mas não sei.
Não compreendo porque é que esta complexidade ainda está aqui presente? Não compreendo porque é que temos de escrever uma tonelada de código no evento onTrade() para compreender o que aconteceu?
Sou pela simplicidade, e quando ela não está lá, entristece-me
A leveza é um conceito relativo, e para um é medida em gramas, para outro em toneladas. Tive de o fazer na EA (se o meu código puder ser chamado como tal), porque agora não existem variantes PROSTO na língua, enquanto poderiam muito bem existir, imho. E não fiquei particularmente satisfeito por o código se ter tornado cem linhas mais longo e fazer com que parecesse mais complicado.
Aqui está o problema em geral:
Um tique vem, o indicador mostra a necessidade de fechar, eu fecho
Quando chega o próximo tick, o indicador mostra que deve fechar, e eu não sei o que fazer - a posição já está pendurada, e claro que posso descobrir o que está a acontecer neste momento, mas não sei.
Não compreendo porque é que esta complexidade ainda está aqui presente? Não compreendo porque é que no evento onTrade() somos sugeridos a escrever uma tonelada de código para compreender o que aconteceu?
Sou pela simplicidade, e quando ela não está lá, entristece-me
Fi-lo, o código é inferior a cem linhas ... :) A solução é fiável e imediata para as múltiplas moedas
Pode especificar qualquer período desejado em vez do período em que a EA está a pairar. Isto é, as encomendas não serão feitas mais do que uma vez por períodoE após qualquer pedido comercial, devemos fazer um atraso que proíba o pedido comercial no prazo de 30 segundos (por exemplo). Caso contrário, a ordem pode não aparecer na história no próximo tick.
Em geral, como o imagina? Em geral, a ideia é ter 20 períodos de tempo x o número de símbolos na "Market Watch" e para cada um deles é gerado o evento OnNewBar? E tem de processar cada símbolo e período de tempo para determinar a que se refere? Agora tem a escolha: escrever a sua própria função NewBar e nela definir o que quer receber novas barras: todos os períodos para um símbolo, todos os símbolos para o período actual ou algum caso especial. Isto resulta numa função específica e descomplicada. É melhor do que uma função universal OnNewBar com muitos controlos.
Em termos de uma solução padrão, deve ser algo parecido com isto
1. O evento deve ser vinculado à carta aberta, ao seu período e símbolo. O evento deve ocorrer quando aparece uma nova barra (os buracos são ignorados).
Os eventos devem ser tratados num fio (ou fios) terminal separado.
PS
E assim por diante. É claro que esta é uma aproximação aproximada sem ter em conta muitas especificidades...
Vladix:
Na verdade, o problema em si é este:
um tick entra, o indicador mostra que precisa de fechar, eu faço o fecho
Quando chega o próximo tick, o indicador mostra que tem de fechar, e eu não sei o que fazer - a posição já está pendurada e pode-se saber o que está a acontecer neste momento, é claro, mas no meio do nada.
Não compreendo porque é que esta complexidade ainda está aqui presente? Não compreendo porque é que no evento onTrade() somos sugeridos a escrever uma tonelada de código para compreender o que aconteceu?
Sou pela simplicidade, e quando não se tem, torna-se triste
Fê-lo desta forma, menos de uma centena de linhas... :) a solução é fiável e imediata para múltiplas moedas
Em vez do período em que a EA está inactiva, podemos especificar qualquer período desejado. Isto significa que as encomendas não serão feitas com mais frequência do que uma vez por período.E após qualquer pedido comercial, devemos fazer um atraso que proíba o pedido comercial no prazo de 30 segundos (por exemplo). Caso contrário, a ordem pode não aparecer na história no próximo tick.
Ponha um atraso - sim, eu aceito, quantas linhas de código serão necessárias? E se estamos a falar de multi-moeda, é necessário ter em conta o atraso de cada uma, não é?
Eu escrevi o código que resolve isto. Só que eu não gosto, tal como, desculpa, não gosto do teu. E não se trata de parcialidade, a questão é que não existem outras opções, simples e elegantes.