Respuesta

¡Compartamos aquí las funciones MQL4 personalizadas de SQ!

10 respuestas

Karish

Customer, bbp_participant, community, sq-ultimate, 443 replies.

Visitar el perfil

hace 8 años #114883

Hola amigos usuarios de SQ,

porque pocos de nosotros venimos de la prospectiva de programación MQL4 tenemos nuestras propias ideas de cómo mejorar las funcionalidades MQL4 del SQ original,

asi que.., queria compartir algunos de mis "add-ons" que he implementado en los archivos originales MQL4 de SQ..

ademas quiero que todos los que hayan modificado de alguna manera sus archivos MQL4 de SQ compartan sus modificaciones aqui con todos tambien 🙂 .

 

Empezaré compartiendo algunas de las mías... ¡diviértete!:

 

 

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

¢ BACKTEST MUCHO MÁS RÁPIDO CUANDO SE UTILIZA MT4 (SIN MODO VISUAL):

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Abra su archivo "Main.tpl" e inserte la siguiente línea de código en algún lugar debajo de "int start() {" y encima de "drawStats();":

if(IsTesting()&&IsVisualMode()==false){ObjectsDeleteAll();} //Elimina todos los objetos para un backtesting MT4 más rápido..

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

 

 

 

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

¢:

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Busque "MaxSlippage = 3;" dentro del archivo "PrintParameters.inc", luego debajo de esa línea inserte la siguiente línea de código:

extern double MaxSpread = 1.5; // << introduce aquí tu margen máximo en PIPs

Busque "void openPosition" dentro del archivo "MT4Functions.inc", luego debajo de "if(sqIsTradeAllowed() == 1) {" inserte la siguiente paz de código:

         cadena OrderTypeString;
         if(orderType==OP_BUY) OrderTypeString="#BUY";
         if(orderType==OP_SELL) OrderTypeString="#SELL";
         if(orderType==OP_BUYLIMIT) OrderTypeString="#BUY_LIMIT";
         if(orderType==OP_SELLLIMIT) OrderTypeString="#SELL_LIMIT";
         if(orderType==OP_BUYSTOP) OrderTypeString="#BUY_STOP";
         if(orderType==OP_SELLSTOP) OrderTypeString="#SELL_STOP";
         //
         int orderStartPointInTime = GetTickCount();
         if(orderType==OP_BUY||orderType==OP_SELL){if(DoubleToStr((Ask - Bid)*gPointPow, 1)>DoubleToStr(MaxSpread, 1)){Log("#ERROR!: Order's ("+OrderTypeString+") Spread was too high, - (Current Spread: ("+DoubleToStr((Ask - Bid)*gPointPow, 1)+")>("+DoubleToStr(MaxSpread, 1)+" Maximum), Delayed.");Sleep(500);return(0);}}}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

 

 

 

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

¢ Determinar si la orden se cerró por Stoploss/Takeprofit LOG NOTIFIER:

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

Abra su archivo "Main.tpl" e inserte la siguiente línea de código en algún lugar debajo de "int start() {" y encima de "drawStats();":

Order_Closure_OfSLTP_Notifier();

Abra su archivo "CustomCodeMT4,mq4" e inserte la siguiente paz de código en algún lugar bajo el resto del código existente que ya está allí ..:

void Cierre_de_pedido_del_Notificador_SLTP()
{
   for(int i=TotalPedidosHistoria()-1;i>=0;i--){
   if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true&&OrderSymbol()==Symbol()){
   if(PedidoNúmeroMágico()==NúmeroMágico){
   if(TimeCurrent()-OrderCloseTime()==0) //<=OrderTakeProfit()){Log("#Order: ("+OrderTypeString+" [Ticket: "+OrderTicket()+"]) was Closed By TP.");}
            if(OrderType()==OP_BUY&&OrderClosePrice()<=OrderStopLoss()){Log("#Order: ("+OrderTypeString+" [Ticket: "+OrderTicket()+"]) fue cerrada por SL.");}
            //
            if(OrderType()==OP_SELL&&OrderClosePrice()=OrderStopLoss()){Log("#Order: ("+OrderTypeString+" [Ticket: "+OrderTicket()+"]) fue cerrada por SL.");}
         //
      //________________________________________________________
   }}}}
}

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

 

0

Karish

Customer, bbp_participant, community, sq-ultimate, 443 replies.

Visitar el perfil

hace 8 años #135833

Por favor, si alguien tiene un BreakEven & TrailingStop por TICKS por favor comparta..,

Gracias...

0

Karish

Customer, bbp_participant, community, sq-ultimate, 443 replies.

Visitar el perfil

hace 8 años #135874

Por favor, si alguien tiene un BreakEven & TrailingStop por TICKS por favor comparta..,

Gracias...

¿Alguien?

0

stearno

Cliente, bbp_participant, comunidad, 379 respuestas.

Visitar el perfil

hace 8 años #135903

Karish,

Lo siento por una pregunta tan simple. ¿Dónde está el "Main.tpl"?  

0

Karish

Customer, bbp_participant, community, sq-ultimate, 443 replies.

Visitar el perfil

hace 8 años #135904

Karish,

Lo siento por una pregunta tan simple. ¿Dónde está el "Main.tpl"?  

Todos los archivos ubicados dentro de la carpeta "SQ\code",

el "Main.tpl" ubicado dentro de la carpeta "SQ\code\Mql_MT4".

 

hay un Main.tpl dentro de la carpeta "SQ\code\Mql_MT4_BarOpen" tambien, pero yo no uso la funcion "BarOpen".., solo basada en Tick, asi que lo referencio a la carpeta "SQ\code\Mql_MT4".

0

stearno

Cliente, bbp_participant, comunidad, 379 respuestas.

Visitar el perfil

hace 8 años #135905

Gracias.

0

hankeys

Cliente, bbp_participante, comunidad, sq-último, 487 respuestas.

Visitar el perfil

hace 7 años #141012

¿Alguien ha hecho modificaciones en el código MQL4 de SQ para pasar por el proceso de validación en MQL Market? Estoy atascado en este problema https://www.mql5.com/en/articles/2555#invalid_lot

Quieres ser un algotrader rentable? Empezamos a utilizar el software StrateQuant a principios de 2014. Por ahora tenemos un gran know-how para la construcción de EAs para todos los tipos posibles de los mercados. Compartimos estos conocimientos, aplicaciones, herramientas y también todas las estrategias finales con traders reales. Si quieres unirte a nosotros, rellena el formulario FORMULARIO.

0

daveng

Customer, bbp_participant, community, 93 replies.

Visitar el perfil

hace 7 años #141066

Sí, es parte de los requisitos MQL para comprobar el tamaño del lote para asegurarse de que se mantiene dentro del rango de tamaño de lote mínimo y máximo del corredor. Y también es necesario comprobar el paso del lote.

Puedes usar el siguiente código (para MT4) que he modificado del código original de MQL:

============================================================================

bool CheckLotSizeValue(doble volumen)
{
//- volumen mínimo permitido para las operaciones comerciales
   if(volumen<volumen_min)
   {
      Print("El volumen del tamaño de lote es inferior al mínimo permitido. El tamaño de lote mínimo permitido es ",min_volumen);
      return(false);
   }

//- volumen máximo permitido de operaciones comerciales
   if(volumen>volumen_máx)
   {
      Print("El volumen del tamaño del lote es mayor que el máximo permitido. El tamaño de lote máximo permitido es ",max_volumen);
      return(false);
   }

//- obtener el paso mínimo de cambio de volumen
   int ratio=(int)MathRound(volumen/volumen_paso);
   if(MathAbs(ratio*volumen_paso-volumen)>0.0000001)
   {
      PrintFormat("El volumen del tamaño del lote no es múltiplo del paso mínimo SYMBOL_VOLUME_STEP=%.2f, el volumen correcto más cercano es %.2f",volumen_paso,ratio*volumen_paso);
      return(false);
   }
   
   return(true);
}

 

========================================================

 

Y luego insértalos en la sección "Init":

 

min_volumen=MarketInfo(Symbol(),MODE_MINLOT);
max_volume=MarketInfo(Symbol(),MODE_MAXLOT);
volume_step=MarketInfo(Symbol(),MODE_LOTSTEP);

 

========================================================

 

Y también inserta el comando de llamada a función en tu sección "inicio":

 

   if(!CheckLotSizeValue(LotSize))return;

 

Normalmente necesitará insertar esto justo al principio para que su EA compruebe primero el tamaño del lote antes de pasar al resto de los códigos...

=========================================================

 

Y esto es sólo uno de los controles, hay un buen número de otros controles que MQL administrador esperaría que usted ponga en, así que incluye la comprobación de margen libre, control de nivel de parada, el nivel de congelación de verificación, orden pendiente de verificación límite, lote de verificación límite de volumen, y Ordermodify error 1 de verificación. Básicamente todos estos se mencionan en el artículo MQL.

Además, no hay que olvidar que todos los parámetros externos deben tener una función de comprobación para comprobar el valor de cada parámetro, de modo que cuando un usuario introduzca un valor no válido, el EA muestre automáticamente un error en el diario para alertar al usuario y detener el EA.

 

Saludos,

Dave

 

0

hankeys

Cliente, bbp_participante, comunidad, sq-último, 487 respuestas.

Visitar el perfil

hace 6 años #143499

¿alguien es capaz de hacer la modificación personalizada MQL de código MQ4 a la SQ, por lo que el tamaño de lote approriate va a la derecha de SQ para el código de la estrategia? Así que si tengo en SQ tamaño de lote 0,08 se pondrá este tamaño justo después de hacer clic en generar código MQ4? si tengo que cambiar esto en 100 + strs su muy molesto

Quieres ser un algotrader rentable? Empezamos a utilizar el software StrateQuant a principios de 2014. Por ahora tenemos un gran know-how para la construcción de EAs para todos los tipos posibles de los mercados. Compartimos estos conocimientos, aplicaciones, herramientas y también todas las estrategias finales con traders reales. Si quieres unirte a nosotros, rellena el formulario FORMULARIO.

0

daveng

Customer, bbp_participant, community, 93 replies.

Visitar el perfil

hace 6 años #143502

¿alguien es capaz de hacer la modificación personalizada MQL de código MQ4 a la SQ, por lo que el tamaño de lote approriate va a la derecha de SQ para el código de la estrategia? Así que si tengo en SQ tamaño de lote 0,08 se pondrá este tamaño justo después de hacer clic en generar código MQ4? si tengo que cambiar esto en 100 + strs su muy molesto

Si te refieres a cambiar manualmente el valor por defecto del tamaño del lote en los códigos, es fácil.

En los códigos, busque "extern double Lots = 0.1;" que suele encontrarse en la parte superior de los códigos, y luego cambie manualmente el valor a "0.08".

Guárdelo, y entonces cada vez que ejecute el EA estará usando un tamaño de lote por defecto de "0.08".

Pero si tiene 100 EAs, tendrá que hacerlo manualmente para cada EA. No sé si hay alguna manera fácil de cambiar esto en masa.

 

Saludos,

Dave

0

hankeys

Cliente, bbp_participante, comunidad, sq-último, 487 respuestas.

Visitar el perfil

hace 6 años #143503

Este consejo es inútil, sé cómo hacerlo manualmente, sé cómo hacerlo juntos para 100 + strs en un solo clic si el tamaño del lote es el mismo valor - pero para mí cada estrategia de comercio diferente tamaño del lote, que ya se utiliza en SQ y se almacena en el archivo STR. y quiero manera simple de cómo poner este valor exacto derecho al código MQL

 

si no podemos escribir algo como esto discutido - custom MQL funkction

 

podemos ejecutar algún script (R, python, lo que sea) - que buscará el tamaño de lote en el archivo STR y lo pondrá automáticamente en el archivo MQ4

Quieres ser un algotrader rentable? Empezamos a utilizar el software StrateQuant a principios de 2014. Por ahora tenemos un gran know-how para la construcción de EAs para todos los tipos posibles de los mercados. Compartimos estos conocimientos, aplicaciones, herramientas y también todas las estrategias finales con traders reales. Si quieres unirte a nosotros, rellena el formulario FORMULARIO.

0

Viendo 10 respuestas - de la 1 a la 10 (de un total de 10)