[ARQUIVO]Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por ela. Não posso ir a lugar nenhum sem você - 5. - página 404
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
1. Bem, se novos dados chegaram, isto é o que precisamos, não é?
2. Bem, sim, precisamos de dados da barra 0, é claro. MarketInfo() puxa os dados da barra de zero, é isso mesmo. Então por que compará-lo com algo mais?
3. Mesmo se houver um buraco na história, ele não afetará os cálculos atuais. Teria tido um impacto no momento em que o buraco estivesse lá. Isto é, se obtivermos o Ask atual, não nos importamos realmente com os preços de vários bares atrás (não formalmente, mas com o momento atual em relação a uma determinada variável do mercado, porque a função RefreshRates() fará o truque em relação ao momento atual no tempo no 0º bar!
É claro, eu cavei fundo, mas eu quero entender como me comportar melhor.
4. Você, Vadim, me disse que eu escrevi a função incorretamente acima:
Na sua opinião, o que há de errado nisso?
1. Se não há dados, mas não sabemos nada sobre isso? Ele retorna FALSO. Como deve ser avaliado? Nenhum dado ou um erro, ou ainda há dados?
2. Você tem que se reconciliar para resolver o problema do 1º item.
3. Você não considera a dinâmica do processo. Ligue o computador, o terminal. Todos os dados parecem ter chegado. Tudo convergia para a barra zero. Os sinais são encontrados. O negócio está feito. Acontece que nem todos os dados chegaram. Cinco minutos depois, temos as barras em falta com os números 1,2,3,4,5. O sinal desapareceu. O que fazer?
4. Eu o marquei em vermelho. Um possível erro de escolha de um identificador errado no interruptor ainda não foi resolvido. Escrevi acima como isso deve ser feito.
É inútil chamar a RefreshRates() sem esperar pelo resultado. Pode falhar por um longo tempo.
Quem faz tal pergunta?
O que há de errado com isso em sua opinião?
Não é errado, é apenas lamacento.
Término:
Se ld_price = 0, a função retornará 0 por si só. Portanto, não precisamos de um cheque.
Esta é uma avaria:
Também desnecessário. Você pode usar o MraketInfo() em todos os casos.
No final, a função se transforma em uma função MarketInfo() pura (se você remover todas as coisas desnecessárias).
Em princípio, teoricamente, estes são os lugares certos:
Nós não nos importamos com o que a RefreshRates() retorna, é importante que as variáveis Ask e Bid tenham os últimos valores conhecidos pelo terminal.
Olá!
Qual é a razão dos diferentes resultados do testador para a mesma EA?
O período testado, o par de moedas e o cronograma são os mesmos, mas os resultados obtidos hoje são muito diferentes dos anteriores, a EA parou de abrir posições longas.
Não sei se a culpa é das citações dos terminais ou se é o fim de semana. Talvez as pessoas conhecedoras possam abrir meus olhos para a razão óbvia?
Olá!
Qual é a razão dos diferentes resultados do testador para a mesma EA?
O período testado, o par de moedas e o cronograma são os mesmos, mas os resultados obtidos hoje são muito diferentes dos anteriores, a EA parou de abrir posições longas.
Não sei se a culpa é das citações do terminal ou se é o fim de semana. Talvez as pessoas conhecedoras possam abrir meus olhos para a razão óbvia?
Mesmo dois testes feitos em uma fila, um após o outro, podem ser diferentes, e isso é muito perceptível. O corretor muda o spread e os testes são feitos com um spread diferente. Uma mudança de um ponto é suficiente.
Se houve um teste anterior há muito tempo, talvez as configurações tenham se afrouxado.
1. Se não há dados e ao mesmo tempo há todos esses dados, mas não sabemos nada sobre eles... Ele retorna FALSO. Como isto deve ser interpretado? Não há dados ou um erro, ou ainda há dados?
Não estou entendendo você. Vamos em ordem... Chamamos de RefreshRates(), não entraram dados... Mas existem dados. O que temos aqui é uma bagunça. Se os dados não vieram, os dados não estarão disponíveis ou não foram atualizados porque a variável de mercado não mudou... Há apenas duas opções.
Se a TRU retornar após ligar paraRefreshRates(), então os dados foram atualizados. E se ele retornar FELS, então ou eles não atualizaram, porque há um erro ou eles não atualizaram, porque os dados estão frescos e não precisam ser atualizados.
Portanto, entendo que isto pode ser visto da seguinte forma:RefreshRates() verifica os dados, se os dados não são novos, não atualiza os dados que não são novos, ou seja, não mudaram, e se são novos, atualiza. Portanto, você só pode contar com a bandeira devolvida pelaRefreshRates(). Você tem alguma outra opção?
2. Você precisa se reconciliar para resolver o problema do 1º item.
Você disse isso:
Eu reconcilio os dados do servidor (MarketInfo()) com a barra zero. Esperando que eles sejam os mesmos.
Well MarketInfo() está puxando da barra zero como está... O que VOCÊ quer dizer com o acima?
3. Você não considera a dinâmica do processo. Ligado ao computador, o terminal. Todos os dados parecem ter chegado. Tudo convergia para a barra zero. Os sinais são encontrados. O negócio está feito. Acontece que nem todos os dados chegaram. 5 minutos depois, temos as barras em falta com os números 1,2,3,4,5. O sinal desapareceu. O que fazer?
Decidi atualizá-lo novamente. Mas e se chamarmos RefreshRates() e ele atualizar os dados lentamente? Isto é, alguns dos cálculos serão realizados com alguns dados de mercado e outros com outros dados... O que então?
4. Marcado a vermelho. Além disso, um possível erro de seleção do identificador errado no interruptor não é tratado. Eu escrevi acima como deve ser tratado.
É inútil chamar a RefreshRates() sem esperar pelo resultado. Pode falhar por um longo tempo.
Hm. Bem, se esperarmos por ela, a citação pode mudar. Existe aqui uma via de mão dupla?
RefreshRates(); // Por que este freio sem processamento de valor de retorno?
Você o menciona várias vezes, mas ainda sem detalhes específicos. Quero dizer, por mais que eu veja esta função normalmente utilizada, ela está logo antes do código onde as variáveis de dados do mercado são utilizadas e é só isso. Eles realmente não pensam sobre isso. Mas pensei sobre isso e decidi descobrir como fazer as coisas direito. Saber com certeza que tal e tal abordagem é de fato correta e funcionará em todas as condições normais.
Então Vadim, o que você quer dizer com esta expressão:
"
Por que este freio sem processar o valor de retorno"?
Como eles podem ser processados? Eu escrevi minha lógica acima, mas não obtive resposta. Eu o descrevi com bastante precisão e sem nenhuma variante.
Não é errado, é apenas lamacento.
Término:
Se ld_price = 0, a função retornará 0 por si só. Portanto, nenhum controle é necessário.
Essa é a avaria:
Também não é necessário. Você pode usar o MraketInfo() em todos os casos.
No final, a função se transforma em uma função MarketInfo() pura (se você remover todas as coisas desnecessárias).
E então por que perguntar (se estamos falando de preço de compra especificamente), se podemos sempre usar MarketInfo(fs_symbol, MODE_ASK) ? Afinal de contas, se você olhar dessa forma, ao se referir à Ask, não pode ter certeza de que ela é precisa neste momento?
Não importa o que a função RefreshRates() retorna, é importante que as variáveis Ask e Bid tenham os últimos valores conhecidos pelo terminal.
Praticamente, precisamos de algo mais, tanto quanto eu entendo. E precisamos do último servidor Ask e Bid e não dos terminais locais. Certo?
Foi por isso que comecei uma discussão aqui, para entender de uma vez por todas como organizá-la de forma mais lógica e correta. Pois em teoria isto é correto, mas na prática...