Sou novo na comunidade e estou programando meu primeiro robô, que envia uma ordem de compra ou vendar com take profit de 100 pontos e stop loss 200 pontos no mini índice.
Porem as saída nunca ficam no valor exato, o take profit sempre fica menor e o stop loss maior, alguém poderia me ajudada com o código abaixo?
Isso se chama Spread. Execuções à mercado funcionam dessa maneira.
Ex.: Quando você compra à mercado você está agredindo a contraparte do Book de Ofertas de Venda.
Estude mais sobre o Livro de Ofertas (Book).
E também estude sobre RLP.
E estude tb sobre os Tipos de Ordens.
E, por último, sendo cruelmente honesto, não conhecer e nunca ter operado o mercado de Futuros e já partir pra desenvolver robôs eu acho um erro gigantesco...Sou novo na comunidade e estou programando meu primeiro robô, que envia uma ordem de compra ou vendar com take profit de 100 pontos e stop loss 200 pontos no mini índice.
Porem as saída nunca ficam no valor exato, o take profit sempre fica menor e o stop loss maior, alguém poderia me ajudada com o código abaixo?
#include <Trade/Trade.mqh>
CTrade trade;
int Almejado = 100;
int Entrada = 5;
double ask, bid, last;
void OnTick()
{
ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
bid = SymbolInfoDouble(_Symbol, SYMBOL_BID);
last = SymbolInfoDouble(_Symbol, SYMBOL_LAST);
if(Compra())
{
trade.Buy(Entrada,_Symbol,0, ask - (Almejado * 2), ask + Almejado, "Compra a mercado");
}
if(Venda())
{
trade.Sell(Entrada,_Symbol,0, bid + (Almejado * 2), bid - Almejado, "Venda a mercado");
}
}
Fernando, bom dia.
Bom no inicio do tópico você falar que quer um Tk profit de 100 e um SP loss de 200, achei estranho, mas a estratégia é de cada um, depois você fala que o tk profit sempre fica menor que o sp loss, o que estaria coerente com seu afirmativa inicial, depois vendo o código notei que você tentou fazer um stop=100 take=200, se for isso que você quer, tente esse.
trade.Buy(Entrada,_Symbol,0, ask + (Almejado * 2), ask - Almejado, "Compra a mercado");
lembre que quando você mandou pegar o preço "Ask" é o preço de venda mais "barato" você não quer sair no mais barato, você quer sair com lucro, logo ask+tk
o conceito é o mesmo para o Sell.
Acho que vocês entenderam errado, ele em nenhum momento falou que é novo no mini indice, ele é novo criando robôs!
Eu tenho essa mesma dúvida. Eu percebi que o take profit e o stop loss são a mercado, ou seja, quando o preço bater no alvo, é disparada a operação a mercado, e não no valor exato, ai ficamos refém do spread. No do mini indice geralmente é só 5pts de spread, mas em ações as vezes o spread pode ser grande. Como resolver isso? Tem como fazer o take profit e o stop loss ser no preço exato?
Acho que vocês entenderam errado, ele em nenhum momento falou que é novo no mini indice, ele é novo criando robôs!
Eu tenho essa mesma dúvida. Eu percebi que o take profit e o stop loss são a mercado, ou seja, quando o preço bater no alvo, é disparada a operação a mercado, e não no valor exato, ai ficamos refém do spread. No do mini indice geralmente é só 5pts de spread, mas em ações as vezes o spread pode ser grande. Como resolver isso? Tem como fazer o take profit e o stop loss ser no preço exato?
Oi Ricardo,
O take profit e stop loss de uma posição não tem como por causa que isso é configuração do servidor do MT5 e isso as corretoras brasileiras "decidiram" deixar como ordens a mercado (stop), por exemplo se elas tivessem configurado nos futuros isso com ordem equivalente a limit para stopar aconteceria que tu abre posição é chamada margem digamos de 1 contrato, tu puxa o stop então a margem necessaria muda pra 2 contrato, se tu puxar o take profit então a margem muda novamente pra 3 contrato. Se for uma posição de 5 contrato, então no final com os 2 stops seriam algo como 15 contratos chamados na margem. A pessoa que me explicou isso parecia bem envolvida com o MT5 na epoca.
O que a gente pode fazer pra ter o stop e take profit no preço mais perto do exato é retirar o SL / TP da posição e abrir uma ordem STOP LIMIT, e dai quando bate no stop a gente envia a limitada com um determinado offset de preço aceitavel pra evitar um provavel "pulo" ou se quiser mandar no valor exato tambem. Entretanto, pelo que é falado em outro topico a ordem do tipo STOP LIMIT tem variação entre corretoras. (desculpe não lembrar o topico pra colar o link, mas se garimpar acha)
Oi Ricardo,
O take profit e stop loss de uma posição não tem como por causa que isso é configuração do servidor do MT5 e isso as corretoras brasileiras "decidiram" deixar como ordens a mercado (stop), por exemplo se elas tivessem configurado nos futuros isso com ordem equivalente a limit para stopar aconteceria que tu abre posição é chamada margem digamos de 1 contrato, tu puxa o stop então a margem necessaria muda pra 2 contrato, se tu puxar o take profit então a margem muda novamente pra 3 contrato. Se for uma posição de 5 contrato, então no final com os 2 stops seriam algo como 15 contratos chamados na margem. A pessoa que me explicou isso parecia bem envolvida com o MT5 na epoca.
O que a gente pode fazer pra ter o stop e take profit no preço mais perto do exato é retirar o SL / TP da posição e abrir uma ordem STOP LIMIT, e dai quando bate no stop a gente envia a limitada com um determinado offset de preço aceitavel pra evitar um provavel "pulo" ou se quiser mandar no valor exato tambem. Entretanto, pelo que é falado em outro topico a ordem do tipo STOP LIMIT tem variação entre corretoras. (desculpe não lembrar o topico pra colar o link, mas se garimpar acha)
No meu caso, eu resolvi essa questão incluindo ordem de SellLimit nos valores desejados, ai fico controlando no robô se já encerrou a posição, se sim, cancela a outra ordem. Desse jeito a ordem fica no book e evita qualquer problema em caso de queda de energia ou internet, e até mesmo garante a venda no valor desejado
No meu caso, eu resolvi essa questão incluindo ordem de SellLimit nos valores desejados, ai fico controlando no robô se já encerrou a posição, se sim, cancela a outra ordem. Desse jeito a ordem fica no book e evita qualquer problema em caso de queda de energia ou internet, e até mesmo garante a venda no valor desejado

- 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
Sou novo na comunidade e estou programando meu primeiro robô, que envia uma ordem de compra ou vendar com take profit de 100 pontos e stop loss 200 pontos no mini índice.
Porem as saída nunca ficam no valor exato, o take profit sempre fica menor e o stop loss maior, alguém poderia me ajudada com o código abaixo?
#include <Trade/Trade.mqh>
CTrade trade;
int Almejado = 100;
int Entrada = 5;
double ask, bid, last;
void OnTick()
{
ask = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
bid = SymbolInfoDouble(_Symbol, SYMBOL_BID);
last = SymbolInfoDouble(_Symbol, SYMBOL_LAST);
if(Compra())
{
trade.Buy(Entrada,_Symbol,0, ask - (Almejado * 2), ask + Almejado, "Compra a mercado");
}
if(Venda())
{
trade.Sell(Entrada,_Symbol,0, bid + (Almejado * 2), bid - Almejado, "Venda a mercado");
}
}