Idea di: Vladimir Gribachev.
Codice MQL5 di: Vladimir Karputov.
Ciao trader! Oggi parliamo di un EA (Expert Advisor) che non utilizza indicatori personalizzati; le posizioni vengono aperte in modo pseudocasuale. Questo sistema di trading è in grado di mostrarti le statistiche attuali in due lingue:

Il trailing modifica lo Stop Loss delle posizioni aperte. In caso di perdita, i lotti aumentano utilizzando la strategia Martingale. Come monitorare le perdite? Nel OnTradeTransaction, catturiamo la transazione DEAL_REASON_SL, il segno che lo Stop Loss è stato attivato:
//+------------------------------------------------------------------+ //| Funzione TradeTransaction | //+------------------------------------------------------------------+ void OnTradeTransaction(const MqlTradeTransaction &trans, const MqlTradeRequest &request, const MqlTradeResult &result) { //--- ottieni il tipo di transazione come valore enumerato ENUM_TRADE_TRANSACTION_TYPE type=trans.type; //--- se la transazione è il risultato di un'aggiunta alla cronologia if(type==TRADE_TRANSACTION_DEAL_ADD) { long deal_ticket =0; long deal_order =0; long deal_time =0; long deal_time_msc =0; long deal_type =-1; long deal_entry =-1; long deal_magic =0; long deal_reason =-1; long deal_position_id =0; double deal_volume =0.0; double deal_price =0.0; double deal_commission =0.0; double deal_swap =0.0; double deal_profit =0.0; string deal_symbol =""; string deal_comment =""; string deal_external_id =""; if(HistoryDealSelect(trans.deal)) { deal_ticket =HistoryDealGetInteger(trans.deal,DEAL_TICKET); deal_order =HistoryDealGetInteger(trans.deal,DEAL_ORDER); deal_time =HistoryDealGetInteger(trans.deal,DEAL_TIME); deal_time_msc =HistoryDealGetInteger(trans.deal,DEAL_TIME_MSC); deal_type =HistoryDealGetInteger(trans.deal,DEAL_TYPE); deal_entry =HistoryDealGetInteger(trans.deal,DEAL_ENTRY); deal_magic =HistoryDealGetInteger(trans.deal,DEAL_MAGIC); deal_reason =HistoryDealGetInteger(trans.deal,DEAL_REASON); deal_position_id =HistoryDealGetInteger(trans.deal,DEAL_POSITION_ID); deal_volume =HistoryDealGetDouble(trans.deal,DEAL_VOLUME); deal_price =HistoryDealGetDouble(trans.deal,DEAL_PRICE); deal_commission =HistoryDealGetDouble(trans.deal,DEAL_COMMISSION); deal_swap =HistoryDealGetDouble(trans.deal,DEAL_SWAP); deal_profit =HistoryDealGetDouble(trans.deal,DEAL_PROFIT); deal_symbol =HistoryDealGetString(trans.deal,DEAL_SYMBOL); deal_comment =HistoryDealGetString(trans.deal,DEAL_COMMENT); deal_external_id =HistoryDealGetString(trans.deal,DEAL_EXTERNAL_ID); } else return; if(deal_symbol==m_symbol.Name() && deal_magic==m_magic) if(deal_entry==DEAL_ENTRY_OUT) { PrevBars=0; if(deal_reason==DEAL_REASON_SL && deal_commission+deal_swap+deal_profit<0.0) last_lots_sl=deal_volume; else last_lots_sl=0.0; } } }
Parametri di ingresso
- Stop Loss - Valore di Stop Loss;
- Take Profit - Valore di Take Profit;
- Trailing Stop - Valore di trailing;
- Trailing Step - Passo del trailing;
- Lots - Dimensione dei lotti impostata manualmente (se Lots è maggiore di zero, Risk deve essere uguale a zero);
- Risk - Dimensione dei lotti calcolata automaticamente (se Risk è maggiore di zero, Lots deve essere uguale a zero);
- Martingale - Rapporto di incremento dei lotti, se la posizione precedente è stata chiusa dallo Stop Loss e il profitto ottenuto è negativo;
- Max lots - Massima dimensione della posizione; se questa dimensione viene superata, l'EA termina la sua operazione in modo anomalo;
- magic number - Identificativo unico per l'EA.
In seguito, il test è stato interrotto (l'EA è stato scaricato dal grafico forzatamente), poiché il lotto di riferimento ha superato il parametro Max lots:

Post correlati
- Utilità Market Watch Panel: il tuo alleato in MetaTrader 4
- X-liquidex: Il Miglior EA per Trading di Volatilità e Breakout su MetaTrader 4
- Expert Advisor Basato sulla Teoria della Probabilità per Forex su MetaTrader 5
- MQL5 Wizard: Strategia di Trading con Dark Cloud Cover/Piercing Line e RSI
- MQL5 Wizard: Creare Trading Signals con Morning/Evening Stars e MFI per MetaTrader 5