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
Christoff
Dessa forma a variável Decimals deve estar OK
Em qualquer caso, verifique qual código de erro você está recebendo em um caso de fechamento (parcial) sem sucesso do pedidoMladen,
Obrigado pela dica.
O problema é que não há mensagem de erro. Quando não funciona, parece que a função PartialTP não foi sequer chamada. Outras vezes - geralmente nas primeiras ordens após o reinício da EA - ela funciona bem.
Pensei que talvez uma das variáveis não voltasse ao valor zero, ou algo parecido, mas ainda não consegui encontrar o bug.
Mladen,
Obrigado pela dica.
O problema é que não há mensagem de erro. Quando não funciona, parece que a função PartialTP não foi sequer chamada. Outras vezes - geralmente nas primeiras ordens após o reinício da EA - ela funciona bem.
Pensei que talvez uma das variáveis não voltasse ao valor zero, ou algo parecido, mas ainda não consegui encontrar o bug.chrisstoff
Desculpe, mas com um código parcial eu não posso ajudar mais.
O que você está descrevendo significa que existe a necessidade de depurar o código - e isso só pode ser feito executando-o enquanto se utiliza algum tipo de ponto de controle
chrisstoff
Desculpe, mas com um código parcial eu não posso ajudar mais.
O que você está descrevendo significa que existe a necessidade de depurar o código - e isso só pode ser feito executando-o enquanto se utiliza algum tipo de ponto de controleObrigado, Mladen.
É reconfortante que você não tenha visto problemas no código.
Acho que todas as partes relevantes do código foram postadas, então tenho que encontrar o bug em outro lugar.
hock87
Por favor, leia o post acima de seu post para uma solução desse problema
O código completo para isso é o seguinte :
int TotalOrders = 0;
for (int i=0; i <= OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if (OrderSymbol() == Symbol())
TotalOrders++;
}
if (TotalOrders<1)
{
ticket=OrderSend(Symbol(), OP_BUY, lots, Ask, 3, 0, 0);
stop=(Ask-stopsize*Point);
prof=(Ask+profsize*Point);
OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue);
}
Malden,
Se eu quiser abrir lotes de tamanho em uma porcentagem do saldo da minha conta, como codificá-los?
Exemplo:
O saldo da minha conta é de $500,
quero abrir um lote com 5%, depois conta automaticamente e abre os lotes de $0,25, TP=10 SL=20.
Como codificá-lo?
Obrigado.
Malden,
Se eu quiser abrir lotes de tamanho em uma porcentagem do saldo da minha conta, como codificá-los?
Exemplo:
O saldo da minha conta é de $500,
quero abrir um lote com 5%, depois conta automaticamente e abre os lotes de $0,25, TP=10 SL=20.
Como codificá-lo?
Obrigado.Você pode usar uma função como esta para isso :
{
RefreshRates();
double pPoint = MarketInfo(Symbol(),MODE_POINT);
double step = MarketInfo(Symbol(),MODE_LOTSTEP);
double minLot = MarketInfo(Symbol()l,MODE_MINLOT);
double maxLot = MarketInfo(Symbol(),MODE_MAXLOT);
double lots = minLot;
if (risk>0 && stopLoss>0)
{
lots = AccountFreeMargin()*(risk/100.0)/(stopLoss*MarketInfo(s_symbol,MODE_TICKVALUE)/pPoint);
}
}
return(MathMax(MathMin(lots,maxLot),minLot));
}
PS: stopLoss tem que ser passado para a função já em pips/pontos (não em valores inteiros)
Você pode usar uma função como esta para isso:
{
RefreshRates();
double pPoint = MarketInfo(Symbol(),MODE_POINT);
double step = MarketInfo(Symbol(),MODE_LOTSTEP);
double minLot = MarketInfo(Symbol()l,MODE_MINLOT);
double maxLot = MarketInfo(Symbol(),MODE_MAXLOT);
double lots = minLot;
if (risk>0 && stopLoss>0)
{
lots = AccountFreeMargin()*(risk/100.0)/(stopLoss*MarketInfo(s_symbol,MODE_TICKVALUE)/pPoint);
}
}
return(MathMax(MathMin(lots,maxLot),minLot));
}
Obrigado, Mladen.
Mas eu não consegui compor o código para comprar o código do pedido.
Parece haver muitos erros e avisos.
Como compor o código?
Obrigado, Mladen.
extern double profsize = 10;
int err;
int ticket;
double stop;
double prof;
int start()
{
int TotalOrders = 0;
for (int i=0; i <= OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if (OrderSymbol() == Symbol())
TotalOrders++;
}
if (TotalOrders<1)
{
ticket=OrderSend(Symbol(), OP_BUY, lots, Ask, 3, 0, 0, NULL,LimeGreen);
stop=(Ask-stopsize*Point);
prof=(Ask+profsize*Point);
OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue);
}
err=GetLastError();
// Comment("This is a test ", err, " ", stop, " ", prof);
Comment(" ");
}Obrigado, Mladen.
Mas eu não consegui compor o código para comprar o código do pedido.
Parece haver muitos erros e avisos.
Como compor o código?
Obrigado.
extern double profsize = 10;
int err;
int ticket;
double stop;
double prof;
int start()
{
int TotalOrders = 0;
for (int i=0; i <= OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if (OrderSymbol() == Symbol())
TotalOrders++;
}
if (TotalOrders<1)
{
ticket=OrderSend(Symbol(), OP_BUY, lots, Ask, 3, 0, 0, NULL,LimeGreen);
stop=(Ask-stopsize*Point);
prof=(Ask+profsize*Point);
OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue);
}
err=GetLastError();
// Comment("This is a test ", err, " ", stop, " ", prof);
Comment(" ");
}Experimente assim (testei-o agora e funciona) :
extern double profsize = 10;
int err;
int ticket;
double stop;
double prof;
int init() { return(0); }
int deinit() { return(0); }
int start()
{
int TotalOrders = 0;
for (int i=0; i <= OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if (OrderSymbol() == Symbol())
TotalOrders++;
}
if (TotalOrders<1)
{
ticket=OrderSend(Symbol(), OP_BUY, lots, Ask, 3, 0, 0, NULL,LimeGreen);
stop=(Ask-stopsize*Point*MathPow(10,Digits%2));
prof=(Ask+profsize*Point*MathPow(10,Digits%2));
OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue);
}
err=GetLastError();
// Comment("This is a test ", err, " ", stop, " ", prof);
Comment(" ");
}caros mladen e mr. tools pls,
é possível criar uma ea que dá sinal baseado em certas condições como os sinais de 3 ou 4 indicadores que atendem a condições pré-definidas.
Por exemplo
quero que a ea sinalize uma galinha de compra:
ema 8 cross ema 21
qqe acima de 0
non lag ma é verde
e a vela está acima da nuvem de ichimoku
a EA não deve abrir negócios, mas apenas dar o sinal quando as condições estabelecidas forem cumpridas
Obrigado, Mladen.
Eu já experimentei.
mas ele ainda abre os lotes com $0,1
Eu querotamanhos de lotes abertos em uma porcentagem do saldo daminha conta.
EX:o saldo da conta tem $500.
abre um lote com 5%, depois conta automaticamente e abre os lotes de $0,25, TP=10 SL=20.
LotSizeSlot1 = AccountBalance() * (RiskSlot1 / 100)
LotSizeSlot1 = $500*(5%/100)
LotSizeSlot1 = $ 0,25
Depois abre automaticamente lotes de $0,25 e TP=10 SL=20.
Como criá-lo?
Obrigado.
Obrigado, Mladen.
Eu tentei.
mas ele ainda abre os lotes com $0,1
Quero abrir oslotes com um percentual do saldo da minha conta.
EX:o saldo da conta tem $500.
abrir um lote com 5%, depois conta automaticamente e abrir os lotes de $0,25, TP=10 SL=20.
LotSizeSlot1 = AccountBalance() * (RiskSlot1 / 100)
LotSizeSlot1 = $500*(5%/100)
LotSizeSlot1 = $ 0,25
Depois abre automaticamente lotes de $0,25 e TP=10 SL=20.
Como criá-lo?
Obrigado.Como no anexo