Pon "Me gusta" y sigue las noticias
Deje un enlace a él, ¡qué los demás también lo valoren!
Evalúe su trabajo en el terminal MetaTrader 5
- Visualizaciones:
- 308
- Ranking:
- Publicado:
-
¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa
Hola a todos,
Esta es una actualización de la"Simple pero Efectiva Estrategia Breakout". En este código, he añadido algunas funciones de ayuda para los desafíos prop firm.
Generalmente, para pasar un desafío de prop firm, usted necesita satisfacer tres criterios principales:
- Beneficio objetivo
- No violar la pérdida máxima diaria
- No violar la pérdida máxima
En este código, he incluido dos funciones que comprueban "Beneficio objetivo" y "Casi violando la pérdida máxima diaria" para salir automáticamente de todas las posiciones y eliminar todas las órdenes pendientes. Para la "pérdida máxima" realmente depende de tu estrategia y gestión del riesgo por lo que no se mencionará en este Script MQL5.
//+------------------------------------------------------------------+ //| Funciones de ayuda de la empresa de utilería| //+------------------------------------------------------------------+ // Borrar todas las órdenes pendientes y salir de todas las posiciones 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); } } // Comprobar si hemos alcanzado el objetivo de beneficio bool isPassed() { return AccountInfoDouble(ACCOUNT_EQUITY) > PASS_CRITERIA; } // Comprobar si estamos a punto de violar la pérdida máxima diaria 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 actual double current_balance = AccountInfoDouble(ACCOUNT_BALANCE); // Obtener las operaciones cerradas de hoy 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) { // Obtener fecha y hora del acuerdo MqlDateTime deal_time; TimeToStruct(HistoryDealGetInteger(ticket, DEAL_TIME), deal_time); // Comprobar la hora de reparto 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; }
Los parámetros que necesitamos especificar son:
input string dd = "-------------PROP FIRM CHALLENGE-----------------"; input bool isChallenge = false; input double PASS_CRITERIA = 110100.; input double DAILY_LOSS_LIMIT = 4500.;
Espero que encuentres valores en este script.
Traducción del inglés realizada por MetaQuotes Ltd.
Artículo original: https://www.mql5.com/en/code/49713
Asesor Experto en Teoría de la Probabilidad para Forex
Asesor de Teoría de la Probabilidad
Babi Ngepet
Comparto mi código para asesor experto babi ngepet
Click on the market chart to create a price alert
Esta es una primicia para MetaTrader 5. Ahora puede hacer clic en el gráfico para crear alertas de precios.
Count consecutive no. of bull or bear bars
Código de ejemplo para contar el número consecutivo de barras alcistas o bajistas.