Pergunte! - página 32

 

Dave,

Não desista tão facilmente. Se eu lhe disser o que fazer, talvez seja errado e você nunca aprenderá a coisa certa.

Aqui está outra tentativa.

Boa sorte.

for (int cnt1=OrdersTotal()-1;cnt1>=0;cnt1--)

{

OrderSelect(cnt1, SELECT_BY_POS, MODE_TRADES);

if (OrderType()>=OP_SELL && OrderSymbol()==Symbol() && (OrderMagicNumber () == MagicNumber || MagicNumber==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(15 *Point),Bid-(20*Point),Cyan); //Modify stop loss and take profit

return(0);

}

if (OrderType()>=OP_BUY && OrderSymbol()==Symbol() && (OrderMagicNumber () == MagicNumber || MagicNumber==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(15*Point),Ask+(20*Point),Cyan); //Modify stop loss and take profit

return(0);

}

}

 

como saber se o meu pedido chegou a um stop-loss?

Oi, pessoal

Estou programando uma EA que usa um trailing-stop. O problema é que quando atinge um stop-loss, então abre uma nova ordem. Então, a questão é como dizer ao EA que quando uma ordem atinge uma parada de perda, então espere a próxima barra para decidir se você quer abrir uma nova ordem?? qualquer ajuda, por favor?

 
 
iscuba11:
Onde ocorre a modificação? O stop loss original foi de 40, e o take profit foi de 100. Como parte do modo de espera, o stop loss é mudar para 15 em quaisquer ordens abertas existentes e o take profit é mudar para 25 em quaisquer ordens abertas existentes.

Ingressos para pedidos abertos: Antes do modo de espera.

Antes do modo de dormir - 40 Antes do modo de dormir - 100 Antes do modo de dormir - 100 Depois do modo de dormir - 15 Depois do modo de dormir - 25 Depois do modo de dormir - 25

Não estou inicializando as configurações de pedidos, estou modificando os pedidos existentes já feitos e ainda ativos.

Obrigado de qualquer forma por sua ajuda! Por que algo tão simples parece tão difícil?

Dave<<

como você define seu modo de sono?

basta adicioná-lo antes do loop ordermodify()

como...

if(sleepcome)

{

for(.....)

{

//delete my code gave you before or make it as comment

orderselect(.....);

.

.

.

}

}

que isto ajude

 
AnasFX:
Oi pessoal, estou programando um EA que usa um trailing-stop. O problema é que quando ele atinge um stop-loss, então abre uma nova ordem. Então, a questão é como dizer ao EA que quando uma ordem chega a um stop-loss, então espera pelo próximo bar para decidir se você quer abrir uma nova ordem?? qualquer ajuda, por favor?

verifique o histórico comercial se o preço de fechamento do pedido() = ordertoploss() então ele fecha por batida na fenda

for(int hcnt=0;hcnt<HistoryTotal();hcnt++)

{

OrderSelect(hcnt, SELECT_BY_POS, MODE_HISTORY);

if(OrderSymbol()==Symbol())

{

if(OrderClosePrice()==OrderStopLoss())

.

.

.

}

}

 

Tempo de stop-loss

phoenix:
verifique o histórico comercial se o preço de fechamento do pedido() = Ordertoploss() então ele fecha por batida na barra de tempo atual.

for(int hcnt=0;hcnt<HistoryTotal();hcnt++)

{

OrderSelect(hcnt, SELECT_BY_POS, MODE_HISTORY);

if(OrderSymbol()==Symbol())

{

if(OrderClosePrice()==OrderStopLoss())

.

.

.

}

}

Obrigado pelo homem da idéia. Eu também quero saber a hora de sua parada e se esse tempo está no bar atual. Posso ter muitas paradas de perda, mas quero saber se ela atinge a parada de perda na barra de tempo atual. Devo verificar a hora de fechamento do pedido e compará-la com a hora da barra de tempo atual?

 

mostrando Compra e Venda em um EA

Gostaria de colocar setas ou objetos de texto ou algo no gráfico enquanto minha EA está correndo para mostrar suas ações, mas os objetos não parecem aparecer. Alguém tem um exemplo de EA em funcionamento que desenha no gráfico?

Além disso, o Testador de Estratégia tem um botão para exibir um gráfico após um teste ser executado, mas eu não estou vendo as setas. Isto é um problema com o build 195, porque eu sei que já as vi lá no passado. Como podemos modificar estes objetos com flechas? Eu gostaria de fazê-los maiores, mas também não sei como chegar ao gráfico no testador.

Acho que os dois problemas são os mesmos: obter o feedback do usuário através do EAs.

 

Tenho um especialista que estou afinando e queria evitar um sinal de entrada se o bar anteriormente fechado fosse extremamente longo. (>30 pips) Adicionei a frase abaixo como uma condição, mas não parecia ser reconhecida. Não sou um bom codificador, mas tenho sorte com os especialistas de ajuste e estou aprendendo à medida que vou aprendendo. Alguém poderia me dizer que lógica ou frase eu deveria usar aqui?

Sob a seção;

-----------------------------------

verificação de sinais nulos () {

-----------------------------------

Eu incluí a condição;

-----------------------------------

se ((Fechar[1])-(Abrir[1])<30 ) {

buyysig=true;

-----------------------------------

Obrigado por qualquer sugestão,

MJ

 
marketjouster:
Tenho um especialista que estou afinando e queria evitar um sinal de entrada se o bar anteriormente fechado fosse extremamente longo. (>30 pips) Adicionei a frase abaixo como uma condição, mas não parecia ser reconhecida. Não sou um bom codificador, mas tenho sorte com os especialistas de ajuste e estou aprendendo à medida que vou aprendendo. Alguém poderia me dizer que lógica ou frase eu deveria usar aqui?

se ((Fechar[1])-(Abrir[1])<30 ) ...

MJ

MJ,

Supondo que Close[1] é por exemplo 1,2835 e Open[1] é 1,2805 (barra em alta), a diferença é 0,0030, portanto, a verificação contra 30 não vai funcionar. Além disso, e se Fechado[1] estiver em 1.2805 e Aberto[1] em 1.2835 (barra em baixa)? Você receberá -0,0030.

Então, primeiro de tudo você precisa usar Close[1]-Open[1] < (30*Point) para resolver o primeiro problema, e depois você tem que usar a função MathAbs() para obter o valor absoluto da subtração.

Em resumo: se MathAbs(Close[1]-Open[1]-Open[1])<(30*Point)....

HTH

Yannis

 

Código para evitar a entrada no comércio de barras longas

Yannis:
MJ,

Supondo que Close[1] é por exemplo 1,2835 e Open[1] é 1,2805 (barra em alta), a diferença é 0,0030, portanto, a verificação contra 30 não vai funcionar. Além disso, e se Fechado[1] estiver em 1.2805 e Aberto[1] em 1.2835 (barra em baixa)? Você receberá -0,0030.

Então, primeiro de tudo você precisa usar Close[1]-Open[1] < (30*Point) para resolver o primeiro problema, e depois você tem que usar a função MathAbs() para obter o valor absoluto da subtração.

Em resumo: se MathAbs(Close[1]-Open[1]-Open[1])<(30*Point)....

HTH

Yannis

Muito obrigado, Yannis. Sua explicação é muito clara e eu agradeço a inclusão do código atual. Poderia eu fazer uma pergunta complementar? Se eu quisesse poder ajustar o número de pips para a barra longa na janela de propriedades dos conselheiros especializados, poderia usar;

externo int LBE=30; // LBE é 'Entrada de Barra Longa'. O valor padrão poderia ser 30

na seção de cabeçalho do especialista e depois usar LBE em vez de 30 em sua linha de código?

se MathAbs(Close[1]-Open[1])<(LBE*Point)

Isto me permitiria testar manualmente as configurações da tubulação variante e otimizá-la nos testes posteriores.

MJ