THEN para usá-la como uma condição IF na segunda regra
12 respostas
Pago
11 anos atrás #111005
Olá,
alguém sabe Como processar o resultado de uma regra #1 em uma segunda regra?
Por exemplo:
Na primeira regra, eu uso é a condição MACD > 0 se o resultado for verdadeiro, quero usar esse sinal na segunda regra.
Tento fazer isso com THEN Assign Variable, mas essa variável permanece mesmo que as condições IF não sejam mais atendidas.
Cezar
stearno
11 anos atrás #121260
Czar,
Você está correto, a regra atribuirá a variável e não a tocará novamente até que as condições sejam atendidas.
Portanto, o que você precisa fazer é ter duas regras: A primeira regra atribui a variável quando MACD >0 e a segunda regra atribui a variável quando MACD<0. Assim, sua variável sempre será um reflexo de onde está o MACD.
-STearno
Pago
11 anos atrás #121262
Oi Stearno,
Eu estava com medo que esse é o único caminho. O A condição acima foi apenas um exemplo simplificado; a condição é bastante complicada e A condição para o reverso é muito complicada e achei que, de alguma forma, ela poderia ser resolvida de forma diferente.
Eu tenho Outra ideia. Eu apenas tentaria exportar a condição como um indicador e, em seguida, importá-la para o assistente a fim de usar o sinal.
Cezar
stearno
11 anos atrás #121266
Parece bom. Boa sorte!
Marca Fric
11 anos atrás #121283
Olá,
Alguém sabe como processar o resultado de uma regra #1 em uma segunda regra?
Por exemplo:
Na primeira regra, uso a condição MACD > 0; se o resultado for verdadeiro, quero usar esse sinal na segunda regra.
Tento fazer isso com THEN Assign Variable, mas essa variável permanece mesmo que as condições IF não sejam mais atendidas.
Olá Cezar,
O que você pode fazer é processar o resultado na segunda regra e, em seguida, definir a variável como falsa novamente (por meio da função Assign variable).
Marcar
Marcar
EstratégiaQuant arquiteto
Pago
11 anos atrás #121288
Marca Fric
11 anos atrás #121292
Eu quis dizer algo assim:
Regra 1:
SE a posição do mercado estiver plana e MACD > 0
ENTÃO
Atribuir a variável ThereIsSignal = 1
Regra 2:
IF ThereIsSignal = 1
ENTÃO
Entrar no mercado
Atribuir a variável ThereIsSignal = 0
Dessa forma, a variável que foi definida pela primeira regra não será definida quando você entrar na negociação; esse era o seu problema, pelo que entendi.
Marcar
Marcar
EstratégiaQuant arquiteto
Pago
11 anos atrás #121303
518pip
11 anos atrás #121812
Eu quis dizer algo assim:
Regra 1:
SE a posição do mercado estiver plana e MACD > 0
ENTÃO
Atribuir a variável ThereIsSignal = 1
Regra 2:
IF ThereIsSignal = 1
ENTÃO
Entrar no mercado
Atribuir a variável ThereIsSignal = 0
Dessa forma, a variável que foi definida pela primeira regra não será definida quando você entrar na negociação; esse era o seu problema, pelo que entendi.
Marcar
Olá, estou lidando com um problema semelhante, por favor, me ajude. Qualquer um.
entrada múltipla se o preço estiver acima de 100 ema.
Primeira entrada se a 10 ema cruzar acima da 20 ema, então entre no mercado com a meta.
Segunda entrada: se a 10 ema cruzar acima da 20 ema novamente e o preço ainda estiver acima da 100 ema, entre no mercado. (às vezes, a primeira pode não abrir mais se a meta for atingida)
manter a entrada no mercado enquanto o preço estiver acima da 100 ema e sempre que a 10 ema e a 20 ema cruzarem acima de forma independente.
Tentei atribuir uma variável, mas minha EA atual mantém aberta a 1ª e a 2ª entrada ao mesmo tempo quando a 1ª entrada acontece e pula o restante das entradas válidas.
Obrigado,
Pago
11 anos atrás #121818
Olá, estou lidando com um problema semelhante, por favor, me ajude. Qualquer um.
entrada múltipla se o preço estiver acima de 100 ema.
Primeira entrada se a 10 ema cruzar acima da 20 ema, então entre no mercado com a meta.
Segunda entrada: se a 10 ema cruzar acima da 20 ema novamente e o preço ainda estiver acima da 100 ema, entre no mercado. (às vezes, a primeira pode não abrir mais se a meta for atingida)
manter a entrada no mercado enquanto o preço estiver acima da 100 ema e sempre que a 10 ema e a 20 ema cruzarem acima de forma independente.
Tentei atribuir uma variável, mas minha EA atual mantém aberta a 1ª e a 2ª entrada ao mesmo tempo quando a 1ª entrada acontece e pula o restante das entradas válidas.
Obrigado,
Olá 518pip,
Acho que você não precisa atribuir uma variável.
Regra 1: A primeira entrada -> IsBarOpen é verdadeira && Bid > EMA 100 && EMA 10 cruza acima da EMA 20
Regra 2 A segunda entrada -> IsBarOpen is True && (Open P/L [Magic_first_entry] 0 or Closed P/L [Magic_first_entry] 0) && Bid > EMA 100 && EMA 10 cross above EMA 20
Para fechar, você pode usar uma terceira regra com as condições de fechamento.
Espero que sim ajudá-lo. Caso contrário, você pode anexar a estratégia à postagem para que possamos ajudá-lo mais especificamente.
Cezar
Marca Fric
11 anos atrás #121822
Olá, estou lidando com um problema semelhante, por favor, me ajude. Qualquer um.
entrada múltipla se o preço estiver acima de 100 ema.
Primeira entrada se a 10 ema cruzar acima da 20 ema, então entre no mercado com a meta.
Segunda entrada: se a 10 ema cruzar acima da 20 ema novamente e o preço ainda estiver acima da 100 ema, entre no mercado. (às vezes, a primeira pode não abrir mais se a meta for atingida)
manter a entrada no mercado enquanto o preço estiver acima da 100 ema e sempre que a 10 ema e a 20 ema cruzarem acima de forma independente.
Tentei atribuir uma variável, mas minha EA atual mantém aberta a 1ª e a 2ª entrada ao mesmo tempo quando a 1ª entrada acontece e pula o restante das entradas válidas.
Obrigado,
Você pode fazer assim (mostrarei apenas o lado comprido):
——————–
Regra 1:
——————–
SE
OrderPosition(1000) não é Flat // verificamos se o primeiro pedido já foi aberto
and Bid > EMA(100) // certifique-se de que o preço esteja acima da EMA(100)
e a EMA(10) cruza acima da EMA(20)
ENTÃO
Entrar no mercado com o número mágico (2000)
——————–
Regra 2:
——————–
SE
OrderPosition(1000) is Flat // verificamos se o pedido ainda não foi aberto
and Bid > EMA(100) // certifique-se de que o preço esteja acima da EMA(100)
e a EMA(10) cruza acima da EMA(20)
ENTÃO
Entre no mercado com o número mágico (1000)
Isso deve funcionar. A segunda regra cuida de receber qualquer sinal quando a EMA(10) cruza a EMA(20) e a Regra 1 cuida do caso especial em que a primeira ordem já está aberta.
As regras devem estar nesta ordem.
Talvez você tenha que adicionar também Is Bar Open = true às duas regras para garantir que as negociações sejam abertas somente na abertura da barra.
Marcar
EstratégiaQuant arquiteto
boomza100
11 anos atrás #121844
Olá a todos,
Tenho uma pergunta semelhante, de acordo com o assunto deste tópico.
Continuo recebendo novas posições abertas, a cada novo tick.
O que eu quero fazer é abrir uma posição apenas uma vez, se minhas condições forem atendidas.
Se já houver uma posição aberta, não abra outra.
Se uma posição tiver sido fechada, não há problema em abrir outra posição se as condições forem atendidas.
Meu código é o seguinte.
——————–
Regra 1:
——————–
IF IsBarOpen é verdadeiro
and Some Other Condition //muito longo para repetir aqui, mas não importa
e OrderPosition(MagicLong) é Flat //ou seja: não há posições abertas ??? (é isso mesmo?)
ENTÃO entre no mercado (MagicLong)
Pelo que entendi, você só pode abrir uma posição por número mágico, mas ele continua abrindo novas posições a cada tick.
Alguma sugestão?
Obrigado.
Marca Fric
11 anos atrás #121915
Hi,
A condição OrderPosition(MagicLong) is Flat é realmente verdadeira se não houver posições abertas, portanto, suas condições estão corretas.
Pelo que entendi, você só pode abrir uma posição por número mágico, mas ele continua abrindo novas posições a cada tick.
Sim, ele não deveria abrir várias posições com o mesmo número mágico. Se ele abrir uma nova posição a cada tick, há algum problema ou possível bug. Você pode postar sua estratégia (arquivo .sqw) aqui?
Marcar
EstratégiaQuant arquiteto
Visualizando 12 respostas - 1 até 12 (de um total de 12)