Olá, estou tentando colocar meu takeprofit na segunda vela que deu lucro, não precisam ser seguidas as velas. Alguém pode me ajudar?
Que raio de código é esse?
Cadê a tentativa de "colocar meu takeprofit na segunda vela"?
Se você precisa que alguém codifique isso do zero, procure o serviço de Freelance...

- 2022.02.04
- www.mql5.com
// Takeprofit por número de candles void TakeALt() {if(PositionSelect(_Symbol)&&PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY) {sOpen=iOpen(NULL,PERIOD_CURRENT,1); sClose=iClose(NULL,PERIOD_CURRENT,1); if((sClose-sOpen)>0) {cont=cont+1;Print("cont takealt = ",cont); if(cont==4) {//cont=0; FechaPosicao(); Print(" ========== TakeAlt ========== "); ObjectCreate(0,"x"+velas[1].time,OBJ_ARROW_CHECK,0,velas[1].time,velas[1].high); take_profit_alt=true;}}} if(PositionSelect(_Symbol)&&PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL) {sOpen=iOpen(NULL,PERIOD_CURRENT,1); sClose=iClose(NULL,PERIOD_CURRENT,1); if((sClose-sOpen)<0) {cont=cont+1;Print("cont takealt = ",cont); if(cont==4) {cont=0; FechaPosicao(); Print(" ========== TakeAlt ========== "); ObjectCreate(0,"x"+velas[1].time,OBJ_ARROW_CHECK,0,velas[1].time,velas[1].high); take_profit_alt=true;}}}}
A tentativa tá aí, só que quando estopa não zera meu contador e tá contando todas as velas, não só as com lucro.
Não encontrei material sobre isso
Olá, estou tentando colocar meu takeprofit na segunda vela que deu lucro, não precisam ser seguidas as velas. Alguém pode me ajudar?
A tentativa tá aí, só que quando estopa não zera meu contador e tá contando todas as velas, não só as com lucro.
Não encontrei material sobre isso
Alexandre
Veja se a rotina abaixo pode ser util no seu codigo.. Apenas um exemplo partindo do pressuposto que já exista uma ordem de compra não importando se as velas de altas são seguidas ou maiores que as anteriores.
Fiz os testes aqui e aparentemente funciona, só fazer suas adaptações;
//==============================================================================
// Inicialização de variaveis
int barra_entrada,barras_positivas=0;
long bilhete;
double fech, abert,prc_compra;
if(PositionSelect(_Symbol)){ // Testamos a condição
if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY){ // Pegamos o tipo de posição aberta
prc_compra=PositionGetDouble(POSITION_PRICE_OPEN); // Pegamos o preço de compra
bilhete=PositionGetInteger(POSITION_TICKET); // Pegamos o ticket da posição aberta
barra_entrada=iBarShift(_Symbol,PERIOD_CURRENT,PositionGetInteger(POSITION_TIME),false); // Pegamos a qtd de barra correntes desde a barra de entrada no trade
}
}
if(barra_entrada>=2){ // Verificamos se a qtd de barra desde a entrada é igual ou superior a 2 pois faz sentido que a contagem seja apenas a partir da segunda barra que precede a barra de entrada
for(int b=1;b<=barra_entrada;b++){ // Fazemos um loop pra tras até o valor da barra de entrada
fech=iClose(_Symbol,PERIOD_CURRENT,b); // Pegamos o fechamento imediatamente anterior até o fechamento da barra de entrada
abert=iOpen(_Symbol,PERIOD_CURRENT,b); // Pegamos a abertura imediatamente anterior ate a abertura da barra de entrada
if(fech > abert && fech > prc_compra){ // Testamos se os fechamentos são maiores que a aberturas ao mesmo tempo se os fechamentos são maiores que o preço de entrada
barras_positivas=barras_positivas+1; // Caso a condição acima seja satisfeita, incrementamos o contador de barras positivas
if(barras_positivas==2){ // Testamos se as qtd de barras positivas são iguais a 2
if(trade.PositionClose(bilhete,-1)){ // Fechamos o trade
barras_positivas=0; // zeramos o contador de barras positivas
}
}
}
}
}
}
Alexandre
Veja se a rotina abaixo pode ser util no seu codigo.. Apenas um exemplo partindo do pressuposto que já exista uma ordem de compra não importando se as velas de altas são seguidas ou maiores que as anteriores.
Fiz os testes aqui e aparentemente funciona, só fazer suas adaptações;
//==============================================================================
// Inicialização de variaveis
int barra_entrada,barras_positivas=0;
long bilhete;
double fech, abert,prc_compra;
if(PositionSelect(_Symbol)){ // Testamos a condição
if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY){ // Pegamos o tipo de posição aberta
prc_compra=PositionGetDouble(POSITION_PRICE_OPEN); // Pegamos o preço de compra
bilhete=PositionGetInteger(POSITION_TICKET); // Pegamos o ticket da posição aberta
barra_entrada=iBarShift(_Symbol,PERIOD_CURRENT,PositionGetInteger(POSITION_TIME),false); // Pegamos a qtd de barra correntes desde a barra de entrada no trade
}
}
if(barra_entrada>=2){ // Verificamos se a qtd de barra desde a entrada é igual ou superior a 2 pois faz sentido que a contagem seja apenas a partir da segunda barra que precede a barra de entrada
for(int b=1;b<=barra_entrada;b++){ // Fazemos um loop pra tras até o valor da barra de entrada
fech=iClose(_Symbol,PERIOD_CURRENT,b); // Pegamos o fechamento imediatamente anterior até o fechamento da barra de entrada
abert=iOpen(_Symbol,PERIOD_CURRENT,b); // Pegamos a abertura imediatamente anterior ate a abertura da barra de entrada
if(fech > abert && fech > prc_compra){ // Testamos se os fechamentos são maiores que a aberturas ao mesmo tempo se os fechamentos são maiores que o preço de entrada
barras_positivas=barras_positivas+1; // Caso a condição acima seja satisfeita, incrementamos o contador de barras positivas
if(barras_positivas==2){ // Testamos se as qtd de barras positivas são iguais a 2
if(trade.PositionClose(bilhete,-1)){ // Fechamos o trade
barras_positivas=0; // zeramos o contador de barras positivas
}
}
}
}
}
}
Vou dar uma olhada. Obrigado

- 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
Olá, estou tentando colocar meu takeprofit na segunda vela que deu lucro, não precisam ser seguidas as velas. Alguém pode me ajudar?