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
Eu realmente aprecio a ajuda que você e todos os outros estão fornecendo. Eu tentei de tudo nos últimos dias para conseguir isso compilado e peço desculpas por não ter pedido. A maioria de vocês sugeriu que eu adie o uso de meu próprio código e use o código de outra pessoa, mas eu não vou aprender se eu não entender o que estou fazendo de errado. Para mim, meu código parece sólido. Estou pedindo que conte as ordens por posição e selecione somente aquelas que atendem aos meus critérios e depois modifique aquele comércio específico. Até agora, após 4 páginas ninguém indicou qual linha do meu código está quebrada. A menos que eu veja e entenda primeiro o que estou fazendo de errado, não me ajudará a aprender usando o código de outra pessoa. Meu objetivo agora não é ter um Trailingstop EA que funcione, porque há muito por aí, mas para eu aprender a codificar, para que eu possa seguir em frente. Na verdade, meu código era quase idêntico ao código que Jimdandy postou em seu Youtube Tutorial on Trailingstops. Como é praticamente idêntico ao dele, eu copiei o código quase literalmente (exceto que eu quero negociar manualmente), mas seu código só funciona às vezes também.
Imprimi algumas coisas. Esta troca é quase 300 pontos além do ponto em que especifiquei que o Trailingstop entra em vigor (que foi de 150 pontos):
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: OrderModify = false
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: Pergunte = 1.45926
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: Selectbypos = 0
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: Selectbyticket = 1
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: OrderTicket = 50381828
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: bilhete = 0
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: OrderSelect = true
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: EncomendasTotal = 16
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: OrderSymbol = EURUSD
2016.04.22 00:18:02.301 Trailing_v33 EURAUD,M15: OrderTicket = 50381828
2016.04.22 00:17:58.934 Trailing_v33 EURAUD,M15: OrderModify = false
Este EA só é colocado no EURAUD. Como você pode ver, há 16 pedidos abertos em 9 outros gráficos. O número do bilhete selecionado para este par está completamente errado e o OrderSymbol está completamente errado. Ambos são para um pedido EURUSD aberto. Com base no acima exposto, meu para loop selecionou a posição 0 neste caso, enquanto o EURAUD que deveria selecionar estava na posição 14 (15-1). Por quê? Eu disse a ele para ignorar isto.
No vídeo acima mencionado Jim realmente entrou neste problema, e disse que ele usa o seguinte código para superar meu problema, no entanto, este é um contador para enviar pedidos corretamente e não uma função para filtrar pedidos. Eu tentei usá-lo como um filtro, mas não consegui.
Alguém pode criticar meu código para que eu possa aprender com isso e me dizer por que ele não funciona em vários gráficos. Sei que não pode ser tão ruim assim porque às vezes funciona perfeitamente. Obrigado.
Até agora, após 4 páginas, ninguém indicou qual linha do meu código está quebrada.
Não é verdade! Nós descrevemos seus erros e oferecemos soluções para eles em muitos sabores e alternativas. No entanto, você os ignora e continua a fazê-lo SEU CAMINHO. Não só isso, agora você ainda piorou a situação, acrescentando mais erros.
Quando um pintor aprende a pintar, ele o faz primeiro enfrentando as técnicas de outros que o dominaram. Somente quando ele se sente confortável com estas técnicas é que começa a criar seu PRÓPRIO CAMINHO de pintura.
Aqui está uma pequena lista de "minha crítica":
Há mais coisas que eu poderia listar, mas conserte-as pelo menos, de uma vez por todas!
A codificação é como qualquer outra linguagem. Sim, você pode simplesmente juntar palavras, mas isso não faz de você um poeta. Na codificação você também tem que ter ritmo e estrutura, a fim de torná-la legível e funcional.
Aqui está uma pequena lista de "minha crítica":
Ok, muito obrigado por isso. Na verdade, eu tinha parênteses para todas as minhas declarações de "se" inicialmente de acordo com o código que coloquei aqui anteriormente, mas como esse código não funcionou, tentei várias outras coisas, o que incluiu copiar o código que colei no meu post anterior. Como mencionei, este código nem sequer é meu, mas também não funciona em todos os pares. No entanto, vou substituir os parênteses novamente e seguir os outros conselhos. Enquanto isso, soube que a OrderSelect imprimirá o Símbolo do primeiro pedido no terminal e não aquele em que a EA está, de modo que na verdade isso não estava errado.
EDIT: Obrigado pela sugestão #3!!!!!!! Acho que este foi o problema, porque a ordem deve primeiro ser selecionada pelo Symbol e ENTÃO o valor deve ser armazenado. Então eu movi a variável para abaixo dessas funções como abaixo, e parece funcionar agora (mas mais testes são necessários antes que eu saiba com certeza
Ok, muito obrigado por isso. Na verdade, eu tinha parênteses para todas as minhas declarações "se" inicialmente de acordo com o código que coloquei aqui anteriormente, mas como esse código não funcionou, tentei várias outras coisas, o que incluiu copiar o código que colei no meu post anterior. Como mencionei, este código nem sequer é meu, mas também não funciona em todos os pares. No entanto, vou substituir os parênteses novamente e seguir os outros conselhos. Enquanto isso, soube que a OrderSelect imprimirá o Símbolo do primeiro pedido no terminal e não aquele em que a EA está, de modo que na verdade isso não estava errado.
EDIT: Obrigado pela sugestão #3!!!!!!! Acho que este foi o problema, porque a ordem deve primeiro ser selecionada pelo Symbol e ENTÃO o valor deve ser armazenado. Então eu movi a variável para abaixo dessas funções como abaixo, e parece funcionar agora (mas mais testes são necessários antes que eu saiba com certeza
for(int i=OrdersTotal()-1; i>=0; i--) {
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if(OrderSymbol()!= Symbol()) continue;
double Pip=Point*10, TSTP=TrailingStart*Pip, Trail=TrailingStop*Pip, SL=StopLoss*Pip;
if(OrderType()==OP_BUY){
if(Bid-OrderOpenPrice()>TSTP){
if(OrderStopLoss()<Bid-Trail){
if(!OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Trail, OrderTakeProfit(), Orange))
Print("Error Buy TrailingStop: ",GetLastError());
}
}
for(int i=OrdersTotal()-1; i>=0; i--) {
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) if(OrderSymbol()!= Symbol()) continue;
// Everything below is executed if NO order is selected or a selected order is symbol
double Pip=Point*10, TSTP=TrailingStart*Pip, Trail=TrailingStop*Pip,SL=StopLoss*Pip;
if(OrderType()==OP_BUY)
&& Bid-OrderOpenPrice()>TSTP)
&& OrderStopLoss()<Bid-Trail){
if(!OrderModify(OrderTicket(), OrderOpenPrice(), Bid-Trail, OrderTakeProfit(), Orange))
Print("Error Buy TrailingStop: ",GetLastError());
}
:
Agora talvez você entenda minhas "duras críticas " quando eles desperdiçam o tempo de todos. Embora eu entenda "coisas simples", eles acham que é aceitável desperdiçar o tempo de todos, eu não o faço.
Sim! Infelizmente, parece que você está correto!
Assim, mudei o código de volta para uma versão anterior conforme abaixo. Com isso, parece estar funcionando perfeitamente em todos os pares em que o rochedo é 50 pontos, mas não em pares em que o rochedo é mais alto, por exemplo, EURAUD, mesmo que as variáveis externas sejam mais altas que o rochedo.
Também encontrei outro EA que tem um código muito semelhante ao meu e comparei o código. Destaquei as principais diferenças.
1. aumentos ao invés de decretos
2. multiplicar tudo com o Point em vez do Point*10
3. ele adiciona o Trailingstop e Trailingstep juntos e depois subtrai um e modifica a ordem com o Trailingstep. Se eu entender isso corretamente, o Trailingstart será ativado após um movimento de 15 pips (150 pontos). Em meu EA, o preço ficará para trás em 5 pips e será parado se o preço cair novamente e atingir este nível de 5 pips. Em seu EA, também será ativado após 15 pips, mas a quantidade de pips que fica para trás é 19 (15+5-1), então o preço tem que cair em 19 pips para ser parado. Como exemplo: OrderOpenPrice é 1.50000. O preço sobe 150 pontos para 1.50150, o que ativa o Trailingstop. Se o preço cair de novo para 1.50100, ele será parado por um lucro de 5 pips. Em seu EA, o Trailingstop também é ativado a 1.50150, mas o trail está a 1.49960, o que eu acho que causaráerro 130, já que a parada é para fechar o rochedo. Ou eu estou entendendo isso mal?
Meu problema poderia ser com um ou mais destes?
Também encontrei outro EA que tem um código muito semelhante ao meu e comparei o código.
Vamos ver se entendi esta sua lógica! Você está disposto a encontrar outro EA de alguém de quem sabe onde e está disposto a incorporar esse código no seu, MAS VOCÊ NÃO VAI buscar um código que foi especificamente escrito para ajudá-lo e corrigir seus problemas!!!
WOW! Como LOGICAL de vocês! Onde está SPOCK quando você precisa dele!
SPOCK, que você descanse em paz! Todos nós sentimos sua falta!
Vamos ver se entendi essa sua lógica! Você está disposto a encontrar outro EA de alguém de quem sabe onde e está disposto a incorporar esse código no seu, MAS VOCÊ NÃO VAI buscar um código que foi especificamente escrito para ajudá-lo e corrigir seus problemas!!!
WOW! Como LOGICAL de vocês! Onde está SPOCK quando você precisa dele!
SPOCK, que você descanse em paz! Todos nós sentimos sua falta!