[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 86
por favor, sugira uma função que conte o número de pedidos perdidos (desde o último) até o último take profit...
Obrigado!
Você poderia tentar desta forma:
//+----------------------------------------------------------------------------+// Убыточно ли закрылся последний ордер, и подсчет количестваint fHistory(){
int loss = 0;
for(int i=OrdersHistoryTotal()-1; i >= 0; i--){ // Выборка в историиif (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true){ // Если есть следующий в историиif(OrderMagicNumber()!=magN) continue; // Ордера не нашего экспертаif(OrderProfit() < 0 ) loss = loss++; // Если убыток по посл.ордеру - считаемif(OrderProfit() > 0 ) return(loss); // Если прибыль, вернем количество убыточных
}
}
return(-1);
}
quantas vezes preciso ligar paraOrderSelect antes de usar OrderProfit(), OrderType() etc. ? é uma vez dentro de Start suficiente ou faz cada vez antes de usar OrderProfit, OrderType etc... Preciso ligar paraOrderSelect ?
e a OrderSelect tem de ser chamada imediatamente antes da OrderProfit ou pode ser chamada em qualquer lugar no início, desde que seja ??
Já lhe dei um algoritmo rudimentar nessa linha (corrigi-o ligeiramente aqui para melhor compreensão de algumas das nuances) e não há necessidade de começar uma horta:
O algoritmo é tão simples quanto um pãozinho.
O fechamento parcial não muda a magia. O bilhete muda, mas a Magia não muda.
Há uma postura aberta e níveis em que esta postura deve ser parcialmente fechada.
Suponha o Nível 1, Nível 2 e Nível 3.
Se a posição Comprar está em lucro e Bid >= Level1 && Bid< Level2 ---> fechamos a primeira parte da posição (com o lote que é menor que o lote desta posição, desde que o lote restante não seja menor que o lote mínimo), então:
Se Bid >= Level2 && Bid< Level3 ---> fechar a segunda parte da posição (por um lote menor que o lote desta posição, desde que o lote restante não seja menor que o lote mínimo), mais adiante:
Se Bid >=Nível3 && Bid<Level4 ---> fechar a terceira parte da posição (por muito menor que o lote desta posição, desde que o lote restante não seja menor que o lote mínimo), mais adiante:
1. Se no fechamento parcial no nível Bid>=LevelX o lote se tornou menor que o lote mínimo ---> feche a posição inteira
2) Se após o terceiro fechamento no nível Bid>=Level3 ainda houver uma posição, ou acompanhar a posição restante com uma rede de arrasto após o nível 4 ser passado, ou fechar tudo de uma vez.
Isso é tudo.
Para Vender, olhamos Ask<==Level1 && Ask>Level2 ... etc. ...
Faça um loop em todas as nossas posições, selecione cada uma delas por índice, calcule seus níveis e lotes de fechamento para a posição selecionada e aproveite o algoritmo de trabalho ... :)
Ao mesmo tempo, não há necessidade de armazenar na memória da EA (em variáveis) os valores desses níveis, o que é muito conveniente - se a EA por algum motivo terminar seu trabalho, então após a retomada não perderá dados sobre os níveis - ela os recalculará para cada posição na mosca.
Mais uma coisa: após um fechamento parcial, não se esqueça de reapertar a parada de proteção. Após fechar no nível 1 - parar no ponto de equilíbrio, após fechar no nível 2 - parar no nível 1, após fechar no nível 3 - parar no nível 2, etc...
Li o artigo sobre a transferência de um indicador personalizado para o código do Expert Advisor e fiquei confuso. Devo fazer isso ou é suficiente especificar certos parâmetros indicadores no código?
Eu li o artigo sobre a portabilidade de um indicador personalizado para o código do Expert Advisor e estou confuso, devo fazê-lo ou basta especificar apenas alguns parâmetros específicos do indicador no código?
Se você não tem muita experiência, é melhor usar iCustom() ou estudar e compreender completamente o princípio de funcionamento do indicador antes de adicionar sua lógica ao Expert Advisor.
Você poderia resolver um mistério: Por que quando eu inseri esta função || isCloseLastPosByTake() == Verdadeiro || o especialista no testador começou a desacelerar muito, vezes 10! Esta é uma das 4 condições mutuamente exclusivas, portanto não posso usar a cadeia como em condições somadas para fazer o código funcionar mais rápido. O que você pode me aconselhar? Agradecemos antecipadamente seus conselhos!
Traduzir a variável a ser mapeada para uma impressão ou comentário em cadeia DoubleToStr( valor duplo, dígitos int) e definir a precisão desejada.
https://docs.mql4.com/ru/convert/DoubleToStr
https://docs.mql4.com/ru/common/comment
Ok, obrigado. Eu também estava pensando em fazer assim, ou construir através de ObjecCreate()...
por favor, sugira uma função que conte o número de pedidos perdidos (desde o último) até o último take profit...
Obrigado!
quantas vezes preciso ligar paraOrderSelect antes de usar OrderProfit(), OrderType() etc. ? é uma vez dentro de Start suficiente ou faz cada vez antes de usar OrderProfit, OrderType etc... Preciso ligar paraOrderSelect ?
e a OrderSelect tem de ser chamada imediatamente antes da OrderProfit ou pode ser chamada em qualquer lugar no início, desde que seja ??
Eu escrevi a pergunta, mas ninguém parecia notar. Não queria escrever aqui uma pergunta tão longa, para não confundir a todos. Por favor, note que...
https://www.mql5.com/ru/forum/142983
Tente desta forma:
Porque não há garantia de que seus pedidos tenham sido abertos exatamente ao mesmo preço e ao mesmo tempo.
Eu escrevi a pergunta, mas ninguém parecia notar. Não queria escrever aqui uma pergunta tão longa, para não confundir a todos. Por favor, note que...
https://www.mql5.com/ru/forum/142983
Já lhe dei um algoritmo rudimentar nessa linha (corrigi-o ligeiramente aqui para melhor compreensão de algumas das nuances) e não há necessidade de começar uma horta:
O algoritmo é tão simples quanto um pãozinho.
O fechamento parcial não muda a magia. O bilhete muda, mas a Magia não muda.
Há uma postura aberta e níveis em que esta postura deve ser parcialmente fechada.
Suponha o Nível 1, Nível 2 e Nível 3.
Se a posição Comprar está em lucro e Bid >= Level1 && Bid< Level2 ---> fechamos a primeira parte da posição (com o lote que é menor que o lote desta posição, desde que o lote restante não seja menor que o lote mínimo), então:
Se Bid >= Level2 && Bid< Level3 ---> fechar a segunda parte da posição (por um lote menor que o lote desta posição, desde que o lote restante não seja menor que o lote mínimo), mais adiante:
Se Bid >=Nível3 && Bid<Level4 ---> fechar a terceira parte da posição (por muito menor que o lote desta posição, desde que o lote restante não seja menor que o lote mínimo), mais adiante:
1. Se no fechamento parcial no nível Bid>=LevelX o lote se tornou menor que o lote mínimo ---> feche a posição inteira
2) Se após o terceiro fechamento no nível Bid>=Level3 ainda houver uma posição, ou acompanhar a posição restante com uma rede de arrasto após o nível 4 ser passado, ou fechar tudo de uma vez.
Isso é tudo.
Para Vender, olhamos Ask<==Level1 && Ask>Level2 ... etc. ...
Faça um loop em todas as nossas posições, selecione cada uma delas por índice, calcule seus níveis e lotes de fechamento para a posição selecionada e aproveite o algoritmo de trabalho ... :)
Ao mesmo tempo, não há necessidade de armazenar na memória da EA (em variáveis) os valores desses níveis, o que é muito conveniente - se a EA por algum motivo terminar seu trabalho, então após a retomada não perderá dados sobre os níveis - ela os recalculará para cada posição na mosca.
Mais uma coisa: após um fechamento parcial, não se esqueça de reapertar a parada de proteção. Após fechar no nível 1 - parar no ponto de equilíbrio, após fechar no nível 2 - parar no nível 1, após fechar no nível 3 - parar no nível 2, etc...
Olá a todos! Alguém tem um exemplo de um EA usando um indicador personalizado?
Qual é o problema?
Li o artigo sobre a transferência de um indicador personalizado para o código do Expert Advisor e fiquei confuso. Devo fazer isso ou é suficiente especificar certos parâmetros indicadores no código?
Eu li o artigo sobre a portabilidade de um indicador personalizado para o código do Expert Advisor e estou confuso, devo fazê-lo ou basta especificar apenas alguns parâmetros específicos do indicador no código?
Você poderia resolver um mistério: Por que quando eu inseri esta função || isCloseLastPosByTake() == Verdadeiro || o especialista no testador começou a desacelerar muito, vezes 10! Esta é uma das 4 condições mutuamente exclusivas, portanto não posso usar a cadeia como em condições somadas para fazer o código funcionar mais rápido. O que você pode me aconselhar? Agradecemos antecipadamente seus conselhos!