Participe de nossa página de fãs
Coloque um link para ele, e permita que outras pessoas também o avaliem
Avalie seu funcionamento no terminal MetaTrader 5
- Visualizações:
- 77
- Avaliação:
- Publicado:
-
Precisa de um robô ou indicador baseado nesse código? Solicite-o no Freelance Ir para Freelance
Olá a todos,
Esta é uma atualização da"Simple Yet Effective Breakout Strategy". Nesse código, adicionei algumas funções auxiliares para os desafios da empresa de suporte.
Em geral, para passar em um desafio de prop firm, você precisa atender a três critérios principais:
- Meta de lucro
- Não violar a perda máxima diária
- Não violar a perda máxima
Nesse código, incluí duas funções para verificar "Lucro alvo" e "Quase violando a perda máxima diária" para sair automaticamente de todas as posições e excluir todas as ordens pendentes. A "perda máxima" realmente depende de sua estratégia e do gerenciamento de risco, portanto, não será mencionada neste script MQL5.
//+------------------------------------------------------------------+ //| Funções auxiliares da firma de propaganda| //+------------------------------------------------------------------+ // Excluir todas as ordens pendentes e sair de todas as posições void ClearAll(string message) { Comment(message); for (int i = OrdersTotal() - 1; i >= 0; i--) { ulong orderTicket = OrderGetTicket(i); if (OrderSelect(orderTicket)) { trade.OrderDelete(orderTicket); } } for (int i = PositionsTotal() - 1; i >= 0; i--) { ulong posTicket = PositionGetTicket(i); trade.PositionClose(posTicket); } } // Verificar se a meta de lucro foi atingida bool isPassed() { return AccountInfoDouble(ACCOUNT_EQUITY) > PASS_CRITERIA; } // Verificar se estamos prestes a violar a perda máxima diária bool isDailyLimit() { MqlDateTime date_time; TimeToStruct(TimeCurrent(), date_time); int current_day = date_time.day, current_month = date_time.mon, current_year = date_time.year; // Saldo atual double current_balance = AccountInfoDouble(ACCOUNT_BALANCE); // Obter as negociações fechadas de hoje PL HistorySelect(0, TimeCurrent()); int orders = HistoryDealsTotal(); double PL = 0.0; for (int i = orders - 1; i >= 0; i--) { ulong ticket=HistoryDealGetTicket(i); if(ticket==0) { Print("HistoryDealGetTicket failed, no trade history"); break; } double profit = HistoryDealGetDouble(ticket,DEAL_PROFIT); if (profit != 0) { // Obter data e hora do negócio MqlDateTime deal_time; TimeToStruct(HistoryDealGetInteger(ticket, DEAL_TIME), deal_time); // Verificar a hora da transação if (deal_time.day == current_day && deal_time.mon == current_month && deal_time.year == current_year) { PL += profit; } else break; } } double starting_balance = current_balance - PL; double current_equity = AccountInfoDouble(ACCOUNT_EQUITY); return current_equity < starting_balance - DAILY_LOSS_LIMIT; }
Os parâmetros que precisamos especificar são:
input string dd = "-------------PROP FIRM CHALLENGE-----------------"; input bool isChallenge = false; input double PASS_CRITERIA = 110100.; input double DAILY_LOSS_LIMIT = 4500.;
Espero que você encontre valores neste script.
Traduzido do inglês pela MetaQuotes Ltd.
Publicação original: https://www.mql5.com/en/code/49713
Consultor especialista em teoria de probabilidade para Forex
Consultor de Teoria da Probabilidade
Babi Ngepet
Compartilho meu código para o consultor especialista babi ngepet
Click on the market chart to create a price alert
Essa é a primeira vez que isso acontece no MetaTrader 5. Agora você pode clicar no gráfico para criar alertas de preço.
Count consecutive no. of bull or bear bars
Código de amostra para contar o número consecutivo de barras de alta ou de baixa.