Galera, to aprendendo ainda.
Fiz um robozinho, ele ta abrindo a ordem qnd eu quero td certinho, porem qnd o preço chega no Stop Loss ou no Take Profit a ordem não fecha.
trade.Buy(1, NULL, ask, ask - 45, ask + 155, "COMPRA em: " + ask);
O que preciso fazer?
Olá Claudio Prado, acredito que seu problema é o fato de não estares considerando que deves passar o preço absoluto de SL/TP, e não o relativo, em pontos.
Para facilitar o entendimento disso e correção, recomendo analisares o código em https://www.mql5.com/pt/articles/481 que separei abaixo, que também já leva em consideração a normalização do preço:
//--- 3. example of buying at the specified symbol with specified SL and TP double volume=0.1; // specify a trade operation volume string symbol="GBPUSD"; //specify the symbol, for which the operation is performed int digits=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS); // number of decimal places double point=SymbolInfoDouble(symbol,SYMBOL_POINT); // point double bid=SymbolInfoDouble(symbol,SYMBOL_BID); // current price for closing LONG double SL=bid-1000*point; // unnormalized SL value SL=NormalizeDouble(SL,digits); // normalizing Stop Loss double TP=bid+1000*point; // unnormalized TP value TP=NormalizeDouble(TP,digits); // normalizing Take Profit //--- receive the current open price for LONG positions double open_price=SymbolInfoDouble(symbol,SYMBOL_ASK); string comment=StringFormat("Buy %s %G lots at %s, SL=%s TP=%s", symbol,volume, DoubleToString(open_price,digits), DoubleToString(SL,digits), DoubleToString(TP,digits)); if(!trade.Buy(volume,symbol,open_price,SL,TP,comment)) { //--- failure message Print("Buy() method failed. Return code=",trade.ResultRetcode(), ". Descrição do código: ",trade.ResultRetcodeDescription()); } else { Print("Buy() method executed successfully. Return code=",trade.ResultRetcode(), " (",trade.ResultRetcodeDescription(),")"); }
Espero que esse código ajude na definição de SL/TP, mas tenha cuidado quanto ao fato de que ele foi desenvolvido como exemplo para o mercado FX.
Sds.,
Rogério Figurelli
- www.mql5.com
Galera, to aprendendo ainda.
Fiz um robozinho, ele ta abrindo a ordem qnd eu quero td certinho, porem qnd o preço chega no Stop Loss ou no Take Profit a ordem não fecha.
trade.Buy(1, NULL, ask, ask - 45, ask + 155, "COMPRA em: " + ask);
O que preciso fazer?
1. Verifique na aba "diário" (journal) se há alguma mensagem de erro, tanto na colocação da ordem quanto na execução.
2. Se houver erro, deve ser tratado. Isso resolverá o problema;
3. Verifique na aba histórico se os valores TP e SL foram atribuídos corretamente;
4. Se não conseguir resolver insira imagens aqui das abas diário e histórico, para que os colaboradores do Fórum consigam te ajudar.
Importante destacar que após o trade.buy ser executado é importante tratar eventuais erros de envio de ordens.
[ ]´s
1. Verifique na aba "diário" (journal) se há alguma mensagem de erro, tanto na colocação da ordem quanto na execução.
2. Se houver erro, deve ser tratado. Isso resolverá o problema;
3. Verifique na aba histórico se os valores TP e SL foram atribuídos corretamente;
4. Se não conseguir resolver insira imagens aqui das abas diário e histórico, para que os colaboradores do Fórum consigam te ajudar.
Importante destacar que após o trade.buy ser executado é importante tratar eventuais erros de envio de ordens.
[ ]´s
Então, realmente não sei o pq... O TP e o SL estão nos preços certinhos. Porém o preço passa la e não dispara os SL nem o TP.
Segue as imagens
Olá Claudio Prado, acredito que seu problema é o fato de não estares considerando que deves passar o preço absoluto de SL/TP, e não o relativo, em pontos.
Para facilitar o entendimento disso e correção, recomendo analisares o código em https://www.mql5.com/pt/articles/481 que separei abaixo, que também já leva em consideração a normalização do preço:
Espero que esse código ajude na definição de SL/TP, mas tenha cuidado quanto ao fato de que ele foi desenvolvido como exemplo para o mercado FX.
Sds.,
Rogério Figurelli
Então, realmente não sei o pq... O TP e o SL estão nos preços certinhos. Porém o preço passa la e não dispara os SL nem o TP.
Segue as imagens
Boa tarde Claudio,
veja se acontece a mesma coisa com a série WIN$N, em outras palavras, veja se dá certo usando a série WIN$N.
Então Rogério, o SL e o TP aparece certinho no preço que eu quero, o problema é só que realmente qnd o preço passa la não fecha a posição
Olá Claudio Prado, se aparecem as linhas de SL/TP corretamente no gráfico realmente o problema é outro.
Minha maior suspeita, nesse caso, é a volatilidade e spread.
Qual mercado/ativo você está testando? Você tem certeza que está visualizando corretamente o preço para execução de SL/TP na corretora?
Obs: note que você deve ativar manualmente a linha Ask para ela aparecer no gráfico, pois o default é aparecer apenas a linha Bid.
Sds.,
Rogério Figurelli
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Galera, to aprendendo ainda.
Fiz um robozinho, ele ta abrindo a ordem qnd eu quero td certinho, porem qnd o preço chega no Stop Loss ou no Take Profit a ordem não fecha.
trade.Buy(1, NULL, ask, ask - 45, ask + 155, "COMPRA em: " + ask);
O que preciso fazer?