MetaTrader 5 / Sistemi Esperti

Breakout Strategy with Prop Firm Helper Functions - sistema esperto per MetaTrader 5

27
(13)

Ciao a tutti,

Questo è un aggiornamento della"Simple Yet Effective Breakout Strategy". In questo codice, ho aggiunto alcune funzioni di aiuto per le sfide di prop firm.

In generale, per superare una sfida prop firm, è necessario soddisfare tre criteri principali:

  • Obiettivo di profitto
  • Non violare la perdita massima giornaliera
  • Non violare la perdita massima

In questo codice ho incluso due funzioni che controllano il "profitto target" e la "perdita massima giornaliera quasi violata" per uscire automaticamente da tutte le posizioni e cancellare tutti gli ordini pendenti. Per quanto riguarda la "perdita massima", dipende dalla vostra strategia e dalla gestione del rischio, quindi non sarà menzionata in questo script MQL5.

//+------------------------------------------------------------------+ //| Funzioni di aiuto alla società di distribuzione| //+------------------------------------------------------------------+ // Cancellare tutti gli ordini pendenti e uscire da tutte le posizioni 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);    } } // Verificare se è stato raggiunto l'obiettivo di profitto bool isPassed() {    return AccountInfoDouble(ACCOUNT_EQUITY) > PASS_CRITERIA; } // Verifica se stiamo per violare la perdita massima giornaliera 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 corrente    double current_balance = AccountInfoDouble(ACCOUNT_BALANCE);       // Ottenere le operazioni chiuse di oggi 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)       {          // Ottenere il datetime dell'accordo          MqlDateTime deal_time;          TimeToStruct(HistoryDealGetInteger(ticket, DEAL_TIME), deal_time);          // Controllare l'ora dell'accordo          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; }

I parametri da specificare sono:

input string dd = "-------------PROP FIRM CHALLENGE-----------------"; input bool   isChallenge = false; input double PASS_CRITERIA = 110100.; input double DAILY_LOSS_LIMIT = 4500.;

Spero che troviate dei valori in questo script.


Tradotto dall’inglese da MetaQuotes Ltd.
Codice originale https://www.mql5.com/en/code/49713