Gestión Automática de Órdenes Pendientes con RSI en MetaTrader 4

Mike 2014.08.12 22:46 125 0 0
Archivos adjuntos

¿Cómo funciona?

  1. Órdenes pendientes automáticas basadas en RSI;
  2. Menor riesgo durante el fin de semana y restaurar la posición la próxima semana;
  3. Envío de información útil por correo.

Recomendaciones:

1. Configura testmode en verdadero para backtests y en falso para el modo real:

extern bool testmode = false;//true: para backtest

2. Si estás en modo de prueba, establece solo uno de los símbolos de operación, por ejemplo:

extern string tradesymbol1 = "EURUSDm_802_2802_1602_200_860";
extern string tradesymbol2 = "";
extern string tradesymbol3 = "";
extern string tradesymbol4 = "";
extern string tradesymbol5 = "";
extern string tradesymbol6 = "";

Si estás en modo de cuenta real, establece testmode en falso y configura los símbolos de la siguiente manera (usa "," para separar símbolos y "_" para separar parámetros de un símbolo):

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

EURUSDm_802_2802_1602_200_860 significa:

  • Símbolo: EURUSDm(m significa mi cuenta mini de Exness, posiblemente debas modificar para tu propio símbolo)
  • Pips pendientes: 802 (gap pendiente)
  • Pips adicionales de fin de semana: 2802 (ampliar gap adicional durante el fin de semana)
  • Pips de cancelación: 1602 (cuando el gap exceda este número de pips, cierra la orden pendiente)
  • Trailing stop loss: 200 (trailing stop loss)
  • Toma de ganancias: 860 (toma de ganancias virtual)

3. Si deseas eliminar órdenes pendientes durante el fin de semana, establece weekenddelete en verdadero; si deseas ampliar el gap pendiente y restaurarlo la próxima semana, establece en falso.

extern bool weekenddelete = false;//true: eliminar, false: modificar

4. Horarios de inicio y fin del modo de fin de semana (5 significa viernes, 7 significa domingo; la hora está en GMT, posiblemente debas ajustarla a tu hora local; los parámetros predeterminados funcionan bien en horario de Beijing):

//hora de finalización del trading el viernes
extern int weekendbeginday = 5;
extern string weekendbegintime = "20:30";//viernes 20:30
extern int weekendendday = 7;
extern string weekendendtime = "23:30";//domingo 20:30

5. Todos los símbolos (pueden no ser símbolos de trading) para los cuales deseas recibir un aviso del valor de RSI (mayor a 70 o menor a 30) y reportes periódicos. Obviamente, debes modificar el AUDJPYm si tu cuenta no es mini.

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. Configuración de RSI:

//rsi
extern int rsitimeframe = PERIOD_H4;
extern int rsiperiod = 14;
extern ENUM_APPLIED_PRICE rsiappliedprice = PRICE_CLOSE;
extern int rsishift = 0;
extern double rsiupperline = 70;
extern double rsilowerline = 30;

7. Usa magicweekendexpiration para identificar el modo de fin de semana. Si alguien tiene una mejor manera, por favor avísame.

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

8. Otros:

Si la modificación al modo de fin de semana falla, el EA enviará un correo y tratará hasta MAX_MODIFY_TRY_TIME (100 por defecto) veces hasta tener éxito.

No se aplica stop loss, y si una orden de poca pérdida (mínima de compra o máxima de venta) de un símbolo excede los pips pendientes, el EA pendeará otra orden del mismo símbolo.

En modo de prueba, si el equity es menor al 95% del balance, el EA registrará el estado en archivos de advertencia.

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

Si has encontrado algún error o tienes sugerencias, por favor házmelo saber.

Lista
Comentarios 0