Duda expert multi-divisa

 

Hola a todos,

 

He estado mirando como hacer que un expert sea multi-divisa pero no he conseguido sacar mucho en limpio.

Si yo tengo un expert que quiero que funcione en varias divisas y tengo los mismos parámetros para todos los pares, pregunta.

 

¿Debo usar el método OnTick()? o debería usar otro.

Y si solo se puede tener una posición de compra o de venta, nunca las dos a la vez, en un robot multi-divisa ¿te puede tener en un par una operacion de compra y en otro par una de venta a la vez? o en este caso es mejor que use un expert para cada par.  

 

 Un saludo y gracias.

 
Buenas preguntas...

Primero en MT5 suyceden esas cosas que dices: "que no se puede hacer el hedging" porque no se puede tener dos oepraciones en la misma divisa con sentidos opuestos ya que la segunda anularia o compensaria la primera. Eso es debido a la normativa USA. Nada más. No es invento de Meta Quotes ni de nadie. Es absoluto cumplimiento de la normativa.

Si quieres hacer hedging: abrir posiciones contrapuestas para aprovechar las oscilaciones que normalmente se producen en los movimientos de las cotizaciones de un instrumento aplicando Eliot que preve cinco fase en un trend de subida dos de los cuales son correctivos de la tendencia principal. Idem en bajada pues tienes que usar MT4 que si lo permite.

El ONTICK es el método más preciso, sin lugar a dudas en cuanto tienes el pulso del mercado pero es un arma de doble filo: tienes que saber emplearlo porque sino regalarás dinero a medio mundo.... y yo que no soy tonto me meto en la cola. Aunque sea el último.

Por el resto claro que habiendo abierto posiciones en una divisa puedes abrir otra en otras divisas sea en MT4 que MT5. Lo que en MT5 no puedes hacer es hedging o sea abrir una BUY y luego sin que la BUY se haya cerrado abrir una SELL.... se te van a cerrar ambas compensando una con la otra. PIERDES TU y GANA LA BANCA.  MATEMATICO.

De todos modos para hacer EA necesitas:
a. ESTUDIARTE bien el manual del lenguaje
b: HACER ESPERIMENTOS con tanta paciencia y prudencia en cuentas demo, con diferentes broker porque puede que tu estrategia sea buena pero no es adapta a las condiciones que aplica tu broker, con diferentes TIME FRAME porque hay momentos de mercado convulsos que puedes sacar ganancias en el scalping en pocos minutos pero en otros tienes que adaptarte a diferentes TIME FRAME para aprovechar la tendencia a medio plazo (varios días o  semana) eso lo puedes controlar tu mismo viendo el andamiento del USDJPY de la semana pasada y la presente (se cierra hoy 28/08/2015) donde en el M1 y hasta el H1 se ve movimiento pero no es clara la tendencia pero si te situas en D1 ves que en cuatro velas (o sea cuatro días) la cotización cayo masa de 800 (OCHOCIENTOS) pips. Eso significa que si pones una orden de 10 lotes al inicio de la tendencia.... al final, el día 24/08/2015 te levantas con más de 50 K.
c. Cuando te parezca que funciona... PONLO EN UNA "MICRO CUENTA REAL" DE TAN SOLO 10 EUROS porque las cuentas reales tienen parametros operativos diferentes de las cuentas DEMO. Normalmente en éstas últimas los spread, los margenes, etc son mas relajados que en cuenta real.  Si te pones en micro cuenta arriesgas de perder tu capital que es de tan solo 10 euros y no de miles. Luego analizas que ha pasado y tentas de ponerle remedio... así llegarás a perder algunos cientos antes de empezar a ganar algo pero de todos modos no será una fortuna.
d. TODO ES MEJORABLE por lo que te recomiendo bajarte todos los EA sorgentes que puedas y leerlos y aprender de como han programado otros, las soluciones que han encontrado a diferentes problemas como el money management y cosillas por el estilo. Hay burradas enormes pero también alguna que otra genialidad. Busca torrents con mq4 hay varios con miles de expertos, indicadores y script que hacen hasta el puchero. cierto que hay tantisimos que ni siquiera pasan el paso de compilación porque llenos de errores o incompletos pero encontrarás ideas y sugerimientos para hacer tus propios indicadores y expertos...

De todos modos si tienes necesidad de ayuda, porque por lo general la gente cuando se pone en ésto es porque necesita MONEY y ve en el forex una salida contactame por SKYPE: jdboss

 
De todos modos OPTIMO EL PSEUDONIMO....

imaginate que me estaba cagando encima de estar enseñandole o explicandole algo de este mundo a CRISTO.

Joooder....

CRISTO tengo que mandarte una foto de una vecina que está rebuena a ver si hablas con tu padre, tu madres o quién sea para que interceda y no se haga la dificil.

jajajajaja ERA UNA BROMA. No te enojes que sino me mandas al infierno.

 

Hola, gracias por contestar y escribir el  a b c  y d, gracias por tomarte la molestia de escribir los puntos. Ya te mande la invitación por Skype. 

La broma sin problema, se lleva bien ser el hijo de Dios.

 

Completo por aquí lo que me faltaba por decir.

Tengo una estrategia ya, es semi-automática, las aperturas las hace el programa automáticamente pero la gestión se hace a mano. Es una estrategia a 4H y he podido comprobar que una vez abierto la posición pues es mas eficaz tratarla a mano ya con los objetivos bien claros antes que la gestione la maquina. Igual hace una o dos operaciones al mes y como son gráficos de 4h pues es mas fácil seguirla. Por supuesto la primera idea es operar con microlotes y ver que tal funciona en real a diferencia de la cuenta demo.

 

Resumiendo que cada operación en un mismo experto-multidivisa va a ser independiente de un par con los demas. Vale, bien gracias.

 

En mql5, la correcta gestión multidivisa se hace con OnChartEvent() y un indicador que genere evento (que llame a OnChartEvent() cada vez que se produzca un tick en una moneda, y almacenando en variables tipo matriz todo aquello que debe indivividualizarse para cada divisa. Si TP vale 300 puntos en cualquier moneda, no es problema, pero si a cada moneda se le asigna un valor distinto, tendrás que usar arrTP[] con la dimensión "número de símbolos" - 1.

En mql4 la gestión de OnChartEvent hay que organizarla desde OnTimer()

 
Cristo:

Hola a todos,

 

He estado mirando como hacer que un expert sea multi-divisa pero no he conseguido sacar mucho en limpio.

Si yo tengo un expert que quiero que funcione en varias divisas y tengo los mismos parámetros para todos los pares, pregunta.

 

¿Debo usar el método OnTick()? o debería usar otro.

Y si solo se puede tener una posición de compra o de venta, nunca las dos a la vez, en un robot multi-divisa ¿te puede tener en un par una operacion de compra y en otro par una de venta a la vez? o en este caso es mejor que use un expert para cada par.  

 

 Un saludo y gracias.

Yo lo hago desde OnTick, y sí puedes tener abiertas todas las operaciones que quieras da igual si es una operación por símbolo o cobertura con varias operaciones.

Sería algo así:

void OnTick(){
   for(int s=0;s<SymbolsTotal(true);s++){  // Loop para escanear todos los símbolos en el MarketWatch.
      string SName=SymbolName(s,true);     // Identificador del símbolo.
      if(ManageAll==false){SName=_Symbol;} // Condición para operar uno solo (ManageAll==false).
      // Tu código...

También he visto quien lo configura desde OnInit pero no he comprobado su funcionalidad.

 
En un comentario de 2015 dice "no puedes... abrir una BUY y luego sin que la BUY se haya cerrado abrir una SELL... por normativa". Sin embargo, en una cuenta en ******** compruebo que sí es posible. ¿Cambió la normativa, es solo para brokers en USA... o el amigo que dijo esto estaba equivocado?
 
David Diez #:

Yo lo hago desde OnTick, y sí puedes tener abiertas todas las operaciones que quieras da igual si es una operación por símbolo o cobertura con varias operaciones.

Sería algo así:

También he visto quien lo configura desde OnInit pero no he comprobado su funcionalidad.

Es incorrecto llamar al asesor experto en la función OnTick().

El evento NewTick se genera solo para los expertos cuando llega un nuevo tick del símbolo a cuyo gráfico está fijado el experto.

Podrías tener problemas al desarrollar la estrategia, ya que los símbolos reciben ticks en diferentes momentos y esto podría afectar la sincronización de los datos.

Por esta razón, es recomendable usar la función OnTimer() en su lugar. Esta función se ejecuta a intervalos de tiempo regulares, lo que te permitirá controlar cuándo se actualizan los datos de los diferentes símbolos y asegurarte de que todos estén sincronizados.

Además, con la función OnTimer(), puedes ajustar la frecuencia de actualización de los datos en función de tus necesidades, lo que te permitirá optimizar el rendimiento de tu asesor experto y evitar problemas de sobrecarga del sistema.

Documentación para MQL5: Programas de MQL5 / Eventos de terminal de cliente
Documentación para MQL5: Programas de MQL5 / Eventos de terminal de cliente
  • www.mql5.com
Eventos de terminal de cliente - Programas de MQL5 - Manual de referencia de MQL5 - manual de usuario para el lenguaje del trading algorítmico/automático para MetaTrader 5