Resposta

Ajuda na estratégia da EMA

7 respostas

Daviden1

Assinante, bbp_participante, comunidade, 14 respostas.

Perfil da visita

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

0

stearno

Cliente, bbp_participant, comunidade, 379 respostas.

Perfil da visita

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.

0

Daviden1

Assinante, bbp_participante, comunidade, 14 respostas.

Perfil da visita

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

0

stearno

Cliente, bbp_participant, comunidade, 379 respostas.

Perfil da visita

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

Arquivo: mover sl.jpgmover sl.jpg

[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]

0

Daviden1

Assinante, bbp_participante, comunidade, 14 respostas.

Perfil da visita

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

0

Daviden1

Assinante, bbp_participante, comunidade, 14 respostas.

Perfil da visita

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

0

stearno

Cliente, bbp_participant, comunidade, 379 respostas.

Perfil da visita

11 anos atrás #121077

Observei que o EA faz referência ao S/R (Barry) v1 e v2. Isso é um erro?

Arquivo: v1.jpgv1.jpg

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:

Arquivo: SL move.jpgSL move.jpg

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

0

Daviden1

Assinante, bbp_participante, comunidade, 14 respostas.

Perfil da visita

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

0

Visualizando 7 respostas - 1 até 7 (de um total de 7)