![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Vangrosh
obrigado pela contribuição
você pode me ajudar a ficar de pé
é isto correto
eu faço um EA com trilha automática
if(OrderType()==OP_SELL && OrderSymbol()==Symbol())
{se (OrderStopLoss()==0)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red); // colocar um TP e SL
}
if((OrderOpenPrice()-Ask)>(Point*TrailingStop)) // lugar TP
{
if(OrderStopLoss()>(Ask+Point*TrailingStop)+Point) // verifique verdadeiro
{
if(!OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red)) // se realmente modificar a ordem
Print("Error_Modify - ",GetLastError()));
else str=StringConcatenate("\n My ticket number is ", OrderTicket(), " and my stop loss setting is ", DoubleToStr(Ask+Point*TrailingStop,Digits)); // novo código
}
}
}
Aqui está o que escrevi em outro post, explicando a abordagem diferente.
>>Aqui está uma solução fácil simplesmente verificando se o preço do novo stoploss é pelo menos 1 ponto ou maior do que o stoploss antigo. Basta fazer o inverso para uma ordem de venda.
Aqui está a função completa que eu utilizo. Agora que penso nisso, eu poderia ter usado um nome de var melhor que o próximoStopLoss, e eu também deveria adicionar a verificação de erros ao OrderModify().
Também minha função Trailing Stop está em um EA que pode ter várias ordens abertas ao mesmo tempo, e é por isso que ele tem esses parâmetros para que eu possa atualizar o Trailing Stop em várias ordens ao mesmo tempo.
Então, em minha função de início(), eu tenho:
Deixei as outras chamadas de função ali para que você possa ver que gosto de dividir meu código em funções específicas, tanto quanto possível. Isso torna as coisas muito mais fáceis.
Boa sorte com a sua EA.
Aqui está o que escrevi em outro post, explicando a abordagem diferente.
>>Aqui está uma solução fácil, simplesmente verificando se o preço do novo stoploss é pelo menos 1 ponto ou maior do que o stoploss antigo. Basta fazer o inverso para uma ordem de venda.
Aqui está a função completa que eu utilizo. Agora que penso nisso, eu poderia ter usado um nome de var melhor que o próximoStopLoss, e eu também deveria adicionar a verificação de erros ao OrderModify().
Também minha função Trailing Stop está em um EA que pode ter várias ordens abertas ao mesmo tempo, e é por isso que ele tem esses parâmetros para que eu possa atualizar o Trailing Stop em várias ordens ao mesmo tempo.
Então, em minha função de início(), eu tenho:
Deixei as outras chamadas de função ali para que você possa ver que gosto de dividir meu código em funções específicas, tanto quanto possível. Isso torna as coisas muito mais fáceis.
Boa sorte com a sua EA.
obrigado - parece bom
assim você coloca sua função de início() no fundo da ea
Eu também tenho um problema com um erro terrível. O problema é que eu não tenho parado de perder ou tirar lucro, simplesmente não consigo colocar a ordem pendente, muitos pips longe do mercado onde não deveria haver problema...
O problema com o good'ole 130 é que ele indica (um de) uma classe ou grupo de erros e não leva a nenhuma correção imediata...
Você pode até consertar um problema e ele ainda está lá
A única coisa que ocorre aqui é uma gralha?
Talvez você esteja entrando em um limite de compra acima de Pergunte, quando você pretendia um pedido de Buy Stop?
FWIW
-BB-
O problema com o good'ole 130 é que ele indica (um dos) uma classe ou grupo de erros e não leva a nenhuma correção instantânea.
Você pode até consertar um problema e ele ainda está lá
A única coisa que ocorre aqui é uma gralha?
Talvez você esteja entrando em um limite de compra acima de Pergunte, quando você pretendia um pedido de Buy Stop?
FWIW
-BB-
Eu tenho uma função que seleciona o tipo de operação:
como esta:
09:28:46 2008.06.09 00:00 ForexCraft2 EURGBP,Daily: Abertura Vender no nível 2 para pylon 0 @ 0.8024 enquanto lance = 0.8016
09:28:46 2008.06.09 00:00 ForexCraft2 EURGBP,Daily: PedidoEnviar erro 130
09:28:46 2008.06.09 00:00 ForexCraft2 EURGBP,Daily: ConfiávelOrderSend error : 130 : Paradas inválidas.
Olá TheEconomist
apenas alguns quickies...
1. Não veja nenhuma norma no ToCompare, a menos que o WhatOperation() esteja garantido de que a norma tenha sido realmente dada.
2. Os comps duplos têm problemas - por exemplo, 'Falha na Declaração Condicional... [No final da frase] se ( 1,4225 > 1,4225) NÃO for VERDADEIRO!!!!!!'.
3. Você segue as orientações em https://book.mql4.com/appendix/limits
Cumprimentos
Estive estudando este posto em lúpulo para resolver meu erro na "Pergunta Rápida" com 130. A função de envio de pedidos está lá, assim como os lançamentos de diário com função Imprimir, algum de vocês sabe o que está acontecendo?
Obrigado,
Bauer Boy
.
...como visto em .../24681
1. StopLevel= MarketInfo(Symbol(),MODE_STOPLEVEL);
SL,TP deve estar pelo menos a pontos de StopLevel longe de Bid
Veja abaixo (**)
2. ACCTxx = NormalizeDuplo(Pergunte ...(...), Dígitos);
3. Print("Bid=",DoubleToString(Ask,Digits),", Ask=",DoubleToString(Bid,Digits));
4. Imprimir ("Stop Loss Value",DoubleToString( ACCTSL,Digitos),", stopLoss=",stopLoss);
Imprimir ("Take Profit Value", DoubleToString(ACCTTP,Digitos),", takeProfit=",takeProfit);
Por que DoubleToString()? Imprimir() exibe apenas QUATRO DÍGITOS
Btw, eu também estaria em algum lugar pelo menos uma vez Imprimir ("MyDig=",MyDig); Por quê? não há como você então se preocupar com isso. Pode parecer mesquinho, mas você ficaria surpreso com as brincadeiras que envolvem coisas tão simples!
5. TODOS os seus problemas podem ser facilmente resolvidos obtendo todas as informações disponíveis na ponta de seus dedos e exibindo-as.
Então, com o bom e velho papel + lápis você pode ver onde estão os mal-entendidos.
(**)
Ref: https://book.mql4.com/appendix/limits
Limitação de distância mínima StopLevel.
Uma operação comercial não será realizada se alguma das seguintes condições for interrompida.
.
...como visto em .../24681
1. StopLevel= MarketInfo(Symbol(),MODE_STOPLEVEL);
SL,TP deve estar pelo menos a pontos de StopLevel longe de Bid
Veja abaixo (**)
2. ACCTxx = NormalizeDuplo(Pergunte ...(...), Dígitos);
3. Print("Bid=",DoubleToString(Ask,Digits),", Ask=",DoubleToString(Bid,Digits));
4. Imprimir ("Stop Loss Value",DoubleToString( ACCTSL,Digitos),", stopLoss=",stopLoss);
Imprimir ("Take Profit Value", DoubleToString(ACCTTP,Digitos),", takeProfit=",takeProfit);
Por que DoubleToString()? Imprimir() exibe apenas QUATRO DÍGITOS
Btw, eu também estaria em algum lugar pelo menos uma vez Imprimir ("MyDig=",MyDig); Por quê? não há como você então se preocupar com isso. Pode parecer mesquinho, mas você ficaria surpreso com as brincadeiras que envolvem coisas tão simples!
5. TODOS os seus problemas podem ser facilmente resolvidos obtendo todas as informações disponíveis na ponta de seus dedos e exibindo-as.
Então, com o bom e velho papel + lápis você pode ver onde estão os mal-entendidos.
(**)
Ref: https://book.mql4.com/appendix/limits
Limitação de distância mínima StopLevel.
Uma operação comercial não será realizada se alguma das seguintes condições for interrompida.
Realmente não se pode dizer o que está acontecendo e porque isso está acontecendo
2009.08.05 14:32:26 Trender Beta Test EURUSD,H1: OrderSend (Trender Beta Test ) falhou com o erro #130
2009.08.05 14:32:26 Trender Beta Test EURUSD,H1: MyDig=10
2009.08.05 14:32:26 Trender Beta Test EURUSD,H1: Take Profit Value1.43155, takeProfit=110
2009.08.05 14:32:26 Teste de Trender Beta EURUSD,H1: Stop Loss Value1.42255, stopLoss=200
2009.08.05 14:32:26 Trender Beta Test EURUSD,H1: Bid=1.44255, Ask=1.44229
Realmente não se pode dizer o que está acontecendo e porque isso está acontecendo
Realmente é hora de mostrar o código inteiro. Se você hesitar, você pode usar o PM.
Vejo que você tem o TP mais baixo que o Bid