Ajuda na estratégia da EMA
7 respostas
Daviden1
11 anos atrás #110930
Olá, pessoal,
Estou trabalhando em uma estratégia simples de MME em que a negociação começa assim que a MME rápida cruza a MME baixa.
Já defini o S/L e o Trailing Stop, mas gostaria de criar um S/L adicional que funcione no seguinte caso:
Negociação longa: Se a vela fechar abaixo do Slow Ma
Negociação a descoberto: se o candle fechar acima do Slow Ma
Inseri o código a seguir no assistente para criar esse S/L, mas parece que fiz algo errado com ele, pois não obtive o que esperava:
Se:
OrderPosition(Número mágico) é Long
e: isBaropen é True
e close[1] <SlowEma
Então:
Posição de fechamento (número mágico)
O que exatamente eu fiz de errado e como posso fazer esse S/L funcionar?
Agradecemos antecipadamente por sua ajuda e feliz Natal
David
stearno
11 anos atrás #121067
A única coisa que posso pensar que pode ser o problema é que você tem duas regras competindo entre si para colocar um stop loss em um preço quando as condições são atendidas e um trailing stop loss da regra principal. Portanto, em sua regra principal, ela diz que o stop loss deve ser movido para 1,5028 de acordo com o trailing stop loss e, em seguida, outra regra em que o Close é < SlowEMA diz que o stop loss deve estar em 1,5018.
Eu sugeriria tentar remover o trailing stop loss da regra principal, criar uma regra adicional que coloque o trailing stop loss como você quiser e, em seguida, esse outro trailing stop loss se o fechamento for < slowEma. Assim, seria como:
[u][b]Regra de entrada principal[/b][/u]
* Remover o Trailing Stop. Faça com que ele defina a meta de lucro e o stop loss original
[u][b]Trailing Stop 1[/b][/u]
* Coloque as condições de como você deseja que o trailing stop seja gerenciado. O que parece é que ele pode se parecer com:
SE
[indent=1][color=#28282828][font=helvetica, arial, sans-serif]OrderPosition(Magic Number) is Long[/font][/color]
[color=#282828][font=helvetica, arial, sans-serif]and: isBaropen is True[/font][/color]
[color=#282828][font=helvetica, arial, sans-serif]e close[1] > SlowEma[/font][/color][/indent]
Depois
[indent=1]Insira seu trailing stop loss[/indent]
[u][b]Trailing Stop 2[/b][/u]
SE
[indent=1][color=#28282828][font=helvetica, arial, sans-serif]OrderPosition(Magic Number) is Long[/font][/color]
[color=#282828][font=helvetica, arial, sans-serif]and: isBaropen is True[/font][/color]
[color=#282828][font=helvetica, arial, sans-serif]e fechar[1] < SlowEma[/font][/color][/indent]
Depois
[indent=1]Insira seu trailing stop loss[/indent]
Agora, acho que você não terá um trailing stop loss concorrente e uma regra controlará o trailing stop de cada vez, dependendo de quais condições forem atendidas. Você poderia tentar isso e ver se resolve o problema.
Daviden1
11 anos atrás #121069
Obrigado, Stearno,
O fato é que não tenho o trailing stop nas minhas principais regras de entrada; na verdade, nas minhas regras de entrada, tenho apenas o stop loss.
Em seguida, acrescentei uma regra adicional, como você sugeriu, com novas regras para o Trailing Stop e, agora, estou tentando criar esse novo Stop Loss que deve funcionar quando o fechamento cruzar ou estiver abaixo da slowMA.
Se o código que estou usando não estiver errado, provavelmente, como você disse, alguma outra regra concorre com essa nova regra para o S/L.
Existe algum código que eu possa adicionar aos códigos acima para evitar o conflito de regras.
Mais uma vez, obrigado
stearno
11 anos atrás #121070
Muito bem. Portanto, agora você tem duas regras que estão fazendo trailing stops. Vou nomeá-las para facilitar o processo.
O que eu entendi de você até agora é que a Regra 2 da TS é:
[color=#282828][font=helvetica, arial, sans-serif]SE[/font][/color]
[indent=1]OrderPosition(Magic Number) é Long
e: isBaropen é True
e close[1] > SlowEma[/indent]
[color=#282828][font=helvetica, arial, sans-serif]Então[/font][/color]
[indent=1][color=#28282828][font=helvetica, arial, sans-serif]Insira seu trailing stop loss[/font][/color][/indent]
[color=#282828][font=helvetica, arial, sans-serif][color=#282828][font=helvetica, arial, sans-serif]Regra 1 do TS[/font][/color]
[color=#282828][font=helvetica, arial, sans-serif]? - Não conheço as declarações usadas nesse caso[/font][/color].
[b][color=#282828][font=helvetica, arial, sans-serif]2 pensamentos:[/font][/color][/b]
[color=#282828][font=helvetica, arial, sans-serif]1. É necessário fazer com que a instrução THEN para essas regras seja de fato "Mover SL para" em vez de fazer um Trailing stop como visto no anexo. [/font][/color][/font][/color]Na verdade, você está apenas alterando o stop loss a cada barra quando as condições listadas são atendidas, em vez de usar o campo chamado Trailing Stop
[font=”helvetica, arial, sans-serif”][color=”#282828″]2. Regra 1 da TS - precisa ter uma condição que a separe da Regra 2 da TS. Portanto, se a Regra 2 da TS diz "close[1] > SlowEma", então eu sugeriria que a Regra 1 da TS dissesse [/color][/font][color=#28282828][font=helvetica, arial, sans-serif]"close[1] < SlowEma". Dessa forma, apenas uma regra será aplicada em um determinado momento. [/font][/color]
[color=#282828][font=helvetica, arial, sans-serif]Alguma dessas opções corrige o problema? Caso contrário, publique o arquivo SQW para que possamos dar uma olhada no código real.
[color=#282828][font=helvetica, arial, sans-serif]-Stearno[/font][/color]
Daviden1
11 anos atrás #121074
Obrigado, Stearno, mas acho que não fui muito claro ao lhe explicar meu programa.
Tenho as seguintes regras:
1) Regras de entrada principais com apenas o S/L na "seção ENTÃO".
2) Regra dinâmica do TS que se baseia em um indicador personalizado com "move S/L to" na seção "THEN", que é:
Se:
A posição de mercado é longa
e: Ordem S/L (MagicLong) < icustom..............
Então:
Mova S/L para:
Número mágico: magicLong
Preço: icustom.................
Obviamente, tenho um TS com regras opostas para as negociações a descoberto.
3) Agora quero criar um S/L (tanto para negociações longas quanto curtas) que fechará imediatamente a negociação se o fechamento da barra cruzar a SlowMA para baixo para negociações longas e para cima para negociações curtas
Pensei em algo parecido, mas não funciona:
Para negociações longas:
Se:
MarketPosition é Long
e: isBarOpen é True
e: OrderS/L(MagicLong) <-20
e: Close[1] < SlowMA
Então:
ClosePosition
MagicNumber: MagicLong
O mesmo ocorre com a regra oposta, para as negociações a descoberto.
Se você não encontrar nada de errado, anexarei o .mq4
Mais uma vez, obrigado
Daviden1
11 anos atrás #121075
Desculpe, Stearno,
Nas novas regras para fechar a negociação, cometi um erro, a regra correta é a seguinte:
Para negociações longas:
Se:
MarketPosition é Long
e: isBarOpen é True
e: OpenS/L(MagicLong) <-20 (não OrderS/L como acima)
e: Close[1] < SlowMA
De qualquer forma, estou anexando o .sqw nele, para que você possa ver por si mesmo.
Obrigado
stearno
11 anos atrás #121077
Observei que o EA faz referência ao S/R (Barry) v1 e v2. Isso é um erro?
Em segundo lugar, uma boa notícia: suas regras não estão em conflito umas com as outras, como discuti originalmente. Você tem uma regra para mover o stop loss e, em seguida, um stop loss de emergência para fechar a ordem se for -20 (Mark terá de verificar se esse é o formato e o uso corretos, pois nunca usei -20; se o teste estiver correto, então está correto)
Em outra nota, uma coisa que notei é que o Barry S/R se move. Portanto, se usar esse valor como Trailing Stop Loss, o stop loss se moverá continuamente, até mesmo para baixo. Se for isso que você deseja, não há problema.
Por exemplo,
Neste momento, o S/R Barry diz para colocar o nível em 1,60778. Então, seu EA coloca o stop x pips abaixo desse nível. Em seguida, o preço caiu (mas não o suficiente para atingir seu stop loss, porque você o colocou x pips abaixo do suporte). Agora, o S/R Barry diz para colocar uma linha de suporte em 1,60749. Portanto, agora o EA moverá o stop loss x pips abaixo desse nível. Isso continua até que o preço se mova o suficiente para atingir seu stop loss ou atinja sua emergência de perda de -20.
Um exemplo disso está aqui:
Como você pode ver, desde que não haja uma oscilação brusca de preço, o stop loss continuará a se mover para baixo até que uma oscilação brusca atinja seu SL ou até que o P/L da ordem seja < -20. Então, respondendo à sua pergunta, por que o SL não está funcionando como visto aqui?
Acredito que Mark tenha dito em outro post que você precisa usar "Is Bar Open is True" em todas as regras. É um acionador que inicia a regra toda vez que uma barra é aberta. Portanto, se isso estiver correto, isso explicaria por que o SL não está sendo movido de acordo com sua regra. Entendo o que você está tentando fazer, ou seja, fazer com que o EA calcule em cada tick em vez de barra aberta. Mas não sei como fazer isso no EA Wizard e não vejo essa opção no software, como acontecia no EA Generator. Isso me levaria a supor que ela não está disponível no momento e que tenho que usar a instrução Bar Open em cada regra. Não tenho os indicadores SR Barry v1 ou v2, portanto, não posso testar se isso faria o EA funcionar. Portanto, tente fazer isso e veja os resultados que você obtém.
-Stearno
Daviden1
11 anos atrás #121078
Olá, Stearno,
Antes de mais nada, muito obrigado por dedicar seu tempo para testar meu EA... Fiquei muito grato por isso.
Responderei suas perguntas na ordem:
1) A saída V1 na condição "IF" e a saída V2 na condição "THEN", não sei se é um erro, porque Mark me ajudou com esse código... mas a estratégia funciona como eu queria, portanto, não acho que seja um erro; vou perguntar a Mark sobre isso.
2) Quanto ao Open P/L < - 20, essa é uma fórmula que Mark escreveu no tutorial na seção Usando controles de estratégia.
3) Sim, é isso que eu quero. O S/R (Barry) acompanha o mercado e desenha níveis de suporte e resistência assim que as condições são atendidas, e é ótimo como TS.... na lista para minha estratégia.
Eu não tenho o Take Profit para minha estratégia, apenas deixo o S/L seguindo o mercado até que o TS seja atingido.
4) O significado de < -20 na verdade não era fechar a negociação se meu S/L atingisse 20 pips ou mais. O que tentei fazer com esse código foi tornar VERDADEIRAS as outras condições no S/L de emergência somente se minha perda aberta estiver abaixo de 20 pips.
Isso, a seguir, é exatamente o que estou tentando dizer à EA com a parada de emergência:
Quando uma nova barra for aberta, verifique se o fechamento da barra anterior está abaixo da MA lenta (em uma negociação longa) ou acima da MA lenta (em uma negociação curta).
Se isso for VERDADEIRO e minha perda atual estiver abaixo de 20 pips (esse é o motivo pelo qual coloco o P/L aberto < - 20), ENTÃO feche a negociação.
Corrija-me se eu estiver errado... Basicamente, você está dizendo que esse S/L de emergência não está funcionando porque eu devo inserir o código isBarOpen mesmo em minhas regras de ENTRADA PRINCIPAL?
Mais uma vez, obrigado
Visualizando 7 respostas - 1 até 7 (de um total de 7)