Boa tarde, amigos!
Sou novo por aqui e estou aprendendo agora a programar EAs...
Estou esbarrando num problema, preciso limitar a quantidade de operações no dia tanto em quantidade máxima de trades, quanto em quantidade máxima de loss e quantiade máxima de gains.
Ex> quero fazer no máximo 15 trades no dia, sendo que desses 15, se eu tiver 10 gains eu paro (não necessariamente seguidos) ou se eu tiver 5 loss eu paro (não necessariamente seguidos).
Consegui desenrolar uma função para para limitar a quantidade total de trades no dia, porém não consigo achar função que me traga a quantidade de gains ou losses no dia...
se alguém souber e puder ajudar...segue o que eu consegui até agora
datetime date = StringToTime(TimeToString(candles[0].time,TIME_DATE));
HistorySelect(date,TimeCurrent());
HistoryDealsTotal();
bool limit_trade = HistoryDealsTotal() < 15;
if(trade_mode == NORMAL && limit_trade)
{
if(newbar && !PositionSelect(_Symbol))
{
int total_orders = OrdersTotal();
for(int i=(total_orders-1);i>=0;i--)
{
ulong ticket = OrderGetTicket(i);
Cancel_Order(ticket);
}
Pending_buy();
Pending_sell();
}
}
Abraço
Utilizando o OnTradeTransaction você consegue obter trade a trade encerrado se foi positivo ou negativo. Tem vários exemplos de como utilizá-lo aqui no fórum ou lendo https://www.mql5.com/pt/docs/event_handlers/ontradetransaction você saberá como fazer.
Também pode seguir o princípio de: Se SaldoAtual é >= SaldoAnterior, então é uma operação positiva, senão é uma operação negativa. E isso você pode verificar com HistoryDealGetDouble em conjunto com o HistorySelect, podendo chamá-lo a qualquer momento independente do OnTradeTransaction.
Por fim quanto a quantidade de traders você consegue com o HistoryDealsTotal().

- www.mql5.com
Utilizando o OnTradeTransaction você consegue obter trade a trade encerrado se foi positivo ou negativo. Tem vários exemplos de como utilizá-lo aqui no fórum ou lendo https://www.mql5.com/pt/docs/event_handlers/ontradetransaction você saberá como fazer.
Também pode seguir o princípio de: Se SaldoAtual é >= SaldoAnterior, então é uma operação positiva, senão é uma operação negativa. E isso você pode verificar com HistoryDealGetDouble em conjunto com o HistorySelect, podendo chamá-lo a qualquer momento independente do OnTradeTransaction.
Por fim quanto a quantidade de traders você consegue com o HistoryDealsTotal().
Muito obrigado...Vou testar mais tarde e passo um retorno...
Utilizando o OnTradeTransaction você consegue obter trade a trade encerrado se foi positivo ou negativo. Tem vários exemplos de como utilizá-lo aqui no fórum ou lendo https://www.mql5.com/pt/docs/event_handlers/ontradetransaction você saberá como fazer.
Também pode seguir o princípio de: Se SaldoAtual é >= SaldoAnterior, então é uma operação positiva, senão é uma operação negativa. E isso você pode verificar com HistoryDealGetDouble em conjunto com o HistorySelect, podendo chamá-lo a qualquer momento independente do OnTradeTransaction.
Por fim quanto a quantidade de traders você consegue com o HistoryDealsTotal().
Finalmente consegui rsrs depois de tentar de tudo segui o conceito do saldoAtual e saldoAnterior. Obrigado.
De nada Sousa, que bom que consegui ajudar em algo.
Abraços e sucesso.

- 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
Boa tarde, amigos!
Sou novo por aqui e estou aprendendo agora a programar EAs...
Estou esbarrando num problema, preciso limitar a quantidade de operações no dia tanto em quantidade máxima de trades, quanto em quantidade máxima de loss e quantiade máxima de gains.
Ex> quero fazer no máximo 15 trades no dia, sendo que desses 15, se eu tiver 10 gains eu paro (não necessariamente seguidos) ou se eu tiver 5 loss eu paro (não necessariamente seguidos).
Consegui desenrolar uma função para para limitar a quantidade total de trades no dia, porém não consigo achar função que me traga a quantidade de gains ou losses no dia...
se alguém souber e puder ajudar...segue o que eu consegui até agora
datetime date = StringToTime(TimeToString(candles[0].time,TIME_DATE));
HistorySelect(date,TimeCurrent());
HistoryDealsTotal();
bool limit_trade = HistoryDealsTotal() < 15;
if(trade_mode == NORMAL && limit_trade)
{
if(newbar && !PositionSelect(_Symbol))
{
int total_orders = OrdersTotal();
for(int i=(total_orders-1);i>=0;i--)
{
ulong ticket = OrderGetTicket(i);
Cancel_Order(ticket);
}
Pending_buy();
Pending_sell();
}
}
Abraço