Ordini Automatici e Gestione con RSI per MetaTrader 4

Mike 2014.08.12 22:46 42 0 0
Allegato

Introduzione

Se sei un trader che utilizza MetaTrader 4, sai quanto sia importante avere strategie solide per gestire gli ordini. Oggi parleremo dell'utilizzo dell'RSI (Indice di Forza Relativa) per impostare ordini pendenti in modo automatico, riducendo il rischio nel weekend e ripristinando le posizioni la settimana successiva.

Funzionalità Principali

  • Ordini pendenti automatici tramite RSI;
  • Riduzione del rischio durante il weekend e ripristino delle posizioni la settimana successiva;
  • Invio di informazioni utili via email.

Consigli Utili

1. Imposta testmode: usa true per il backtest e false per la modalità reale:

externbool testmode = false;// true: per backtest

2. Imposta il simbolo di trading: se sei in modalità test, imposta solo uno dei simboli di trading, ad esempio:

externstring tradesymbol1 = "EURUSDm_802_2802_1602_200_860";
externstring tradesymbol2 = "";
externstring tradesymbol3 = "";
externstring tradesymbol4 = "";
externstring tradesymbol5 = "";
externstring tradesymbol6 = "";

In modalità reale, imposta testmode false e configura i simboli di trading come segue (usa "," per separare i simboli e "_" per separare i parametri di un simbolo):

externstring tradesymbol1 = "EURUSDm_802_2802_1602_200_860,USDCHFm_506_2606_1506_120_600";
externstring tradesymbol2 = "USDJPYm_460_2802_1302_100_320";
externstring tradesymbol3 = "";
externstring tradesymbol4 = "";
externstring tradesymbol5 = "";
externstring tradesymbol6 = "";

3. Gestione degli ordini pendenti nel weekend: se desideri eliminare gli ordini pendenti durante il weekend, imposta weekenddelete=true, altrimenti, se vuoi allargare il gap e ripristinarlo la settimana successiva, imposta weekenddelete=false.

externbool weekenddelete = false;// true: elimina, false: modifica

4. Orari di inizio e fine della modalità weekend: (5 significa venerdì, 7 significa domenica; l'ora è in GMT, potresti doverla adattare al tuo fuso orario locale):

// Orario di fine trading il venerdìexternint weekendbeginday = 5;
externstring weekendbegintime = "20:30";// venerdì 20:30externint weekendendday = 7;
externstring weekendendtime = "23:30";// domenica 20:30

5. Simboli per l'invio di email: tutti i simboli (potrebbero non essere simboli di trading) per i quali desideri ricevere notifiche sul valore dell'RSI (>70 o dovresti modificare l'AUDJPYm se il tuo account non è un mini account.

string symbolsstr1 = "AUDJPYm,AUDCADm,AUDCHFm,AUDNZDm,AUDSGDm,AUDUSDm,CADCHFm,CADHKDm,CADJPYm,CHFJPYm,CHFPLNm,CHFSGDm,EURAUDm,EURBRLm,EURCADm,EURCHFm,EURDKKm,EURGBPm,EURHKDm,EURHUFm,EURJPYm,EURMXNm";
string symbolsstr2 = "GBPCHFm,GBPJPYm,GBPNZDm,GBPUSDm,HKDJPYm,HUFJPYm,MXNJPYm,NZDCADm,NZDCHFm,NZDJPYm,NZDSGDm,NZDUSDm,SGDJPYm,USDBRLm,USDCADm,USDCHFm,USDCZKm,USDDKKm,USDHKDm,USDHUFm,USDJPYm,USDMXNm";
string symbolsstr3 = "EURNOKm,EURNZDm,EURPLNm,EURRUBm,EURSEKm,EURSGDm,EURTRYm,EURUSDm,EURZARm,GBPAUDm,GBPCADm,USDNOKm,USDPLNm,USDRONm,USDRUBm,USDSEKm,USDSGDm,USDTRYm,USDZARm,XAGUSDm,XAUUSDm,ZARJPYm";
long sendmininterval = 3600;

6. Configurazione RSI:

// RSIexternint rsitimeframe = PERIOD_H4;
externint rsiperiod = 14;
externENUM_APPLIED_PRICE rsiappliedprice = PRICE_CLOSE;
externint rsishift = 0;
externdouble rsiupperline = 70;
externdouble rsilowerline = 30;

7. Identificazione della modalità weekend: utilizza magicweekendexpiration per identificare la modalità weekend. Se qualcuno ha un modo migliore, per favore fammi sapere!

int magicweekendexpiration = 1577836800;// 2020-1-1 0:0:0 intvalue:1577836800

8. Altri Dettagli:

Se la modifica alla modalità weekend non riesce, l'EA invierà un'email e tenterà MAX_MODIFY_TRY_TIME (100 di default) volte fino a quando non avrà successo.

Non è applicato alcuno stop loss, e se un ordine a perdita ridotta (minimo acquisto o massimo vendita) di un simbolo supera il valore di pendingpips, l'EA penderebbe un altro ordine dello stesso simbolo.

In modalità test, se l'equity è inferiore al 95% del bilancio, l'EA scriverà lo stato in un file di avviso.

if(((AccountEquity()/AccountBalance()) 0.95))
        {
            WriteToWarningFile();
        }

Se hai trovato bug o hai suggerimenti, ti prego di farmelo sapere!

Elenco
Commento 0