¿Cómo codificar? - página 346

 

Hola, mladen, ¿puedo pedirte que añadas alertas sonoras a este indicador, por favor? Muchas gracias

Archivos adjuntos:
patterns.ex4  45 kb
 

Mladen o codificadores,

¿Cómo crear en mql4 cajas contenedoras como las de la imagen? ¿Obj_label?

Archivos adjuntos:
infoboard.png  204 kb
 
Kale:

Definitivamente este indicador es útil, especialmente cuando se combina con el zigzag.

Muy buen comienzo para la codificación de ea.


Kale:

Definitivamente este indicador es útil, especialmente cuando se combina con zigzag.

Muy buen comienzo para la codificación de ea.


¿Podría publicar el archivo fuente .mql4?

Gracias

 
//+--------------------------------------------------------------------------+
//|                                                3 MA Cross with alert.mq4 |
//|                                                                   mladen |
//+--------------------------------------------------------------------------+
#property copyright "mladen"
#property link        "mladenfx@gmail.com"

#property indicator_chart_window
#property indicator_buffers 9
#property indicator_color1 Aqua
#property indicator_color2 Orange
#property indicator_color3 DodgerBlue
#property indicator_color4 Red
#property indicator_color5 Blue
#property indicator_color6 FireBrick
#property indicator_color7 Blue
#property indicator_color8 LimeGreen
#property indicator_color9 Red
#property indicator_width1 2
#property indicator_width2 2
#property indicator_width3 2
#property indicator_width4 2
#property indicator_width5 2
#property indicator_width6 2
#property indicator_width7 2
#property indicator_width8 2
#property indicator_width9 2


//
//
//
//
//

extern string TimeFrame        = "Current time frame" ;
extern int     FasterMA         = 10 ; //5;
extern int     FasterShift      = 0 ;
extern ENUM_MA_METHOD      FasterMode  = 1 ;
extern ENUM_APPLIED_PRICE FasterPrice = PRICE_CLOSE ;
extern int     MediumMA         = 20 ;
extern int     MediumShift      = 0 ;
extern ENUM_MA_METHOD      MediumMode  = 1 ;
extern ENUM_APPLIED_PRICE MediumPrice = PRICE_CLOSE ;
extern int     SlowerMA         = 40 ; //34;
extern int     SlowerShift      = 0 ;
extern ENUM_MA_METHOD      SlowerMode  = 1 ;
extern ENUM_APPLIED_PRICE SlowerPrice = PRICE_CLOSE ;
extern bool    showMAs          = true ;
extern bool    alertsOn         = false ;
extern bool    alertsOnCurrent  = true ;
extern bool    alertsOnFastCrossMiddle = true ;
extern bool    alertsOnFastCrossSlow   = true ;
extern bool    alertsOnMiddleCrossSlow = true ;
extern bool    alertsMessage    = true ;
extern bool    alertsSound      = false ;
extern bool    alertsNotify     = false ;
extern bool    alertsEmail      = false ;
extern bool    showarrows_ms    = false ; //true;
extern bool    showarrows_fs    = true ;
extern bool    showarrows_fm    = true ;
extern int     arrowUpCode_ms    = 159 ;
extern int     arrowDownCode_ms  = 159 ;
extern int     arrowUpCode_fs    = 233 ;
extern int     arrowDownCode_fs  = 234 ;
extern int     arrowUpCode_fm    = 116 ;
extern int     arrowDownCode_fm  = 116 ;
extern bool    Interpolate      = true ;



extern bool    ArrowsOnFirstBar = false ;
extern double arrowsFMGap      = 0.50 ;
extern double arrowsFSGap      = 0.75 ;
extern double arrowsMSGap      = 1.00 ;

//
//
//
//
//

double CrossfmUp[];
double CrossfmDn[];
double CrossfsUp[];
double CrossfsDn[];
double CrossmsUp[];
double CrossmsDn[];
double ma1[];
double ma2[];
double ma3[];
double trendfm[];
double trendfs[];
double trendms[];

//
//
//
//
//

string indicatorFileName;
bool    returnBars;
int     timeFrame;

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//
//
//
//
//

int init()
{
   IndicatorBuffers ( 12 );
   //SetIndexBuffer(0,CrossmsUp);                    SetIndexStyle(0, DRAW_ARROW); SetIndexArrow(0,arrowUpCode)  ;
   SetIndexBuffer ( 0 ,CrossmsUp);   if (showarrows_ms) { SetIndexStyle ( 0 , DRAW_ARROW ); SetIndexArrow ( 0 ,arrowUpCode_ms)  ; } else SetIndexStyle ( 0 , DRAW_NONE );
   //SetIndexBuffer(1,CrossmsDn);                    SetIndexStyle(1, DRAW_ARROW); SetIndexArrow(1,arrowDownCode);
   SetIndexBuffer ( 1 ,CrossmsDn);   if (showarrows_ms) { SetIndexStyle ( 1 , DRAW_ARROW ); SetIndexArrow ( 1 ,arrowDownCode_ms); } else SetIndexStyle ( 1 , DRAW_NONE );
   //SetIndexBuffer(2,CrossfsUp);                    SetIndexStyle(2, DRAW_ARROW); SetIndexArrow(2,arrowUpCode)  ;
   SetIndexBuffer ( 2 ,CrossfsUp);   if (showarrows_fs) { SetIndexStyle ( 2 , DRAW_ARROW ); SetIndexArrow ( 2 ,arrowUpCode_fs)  ; } else SetIndexStyle ( 2 , DRAW_NONE );
   //SetIndexBuffer(3,CrossfsDn);                    SetIndexStyle(3, DRAW_ARROW); SetIndexArrow(3,arrowDownCode);
   SetIndexBuffer ( 3 ,CrossfsDn);   if (showarrows_fs) { SetIndexStyle ( 3 , DRAW_ARROW ); SetIndexArrow ( 3 ,arrowDownCode_fs); } else SetIndexStyle ( 3 , DRAW_NONE );
   //SetIndexBuffer(4,CrossfmUp);                    SetIndexStyle(4, DRAW_ARROW); SetIndexArrow(4,arrowUpCode)  ;
   SetIndexBuffer ( 4 ,CrossfmUp);   if (showarrows_fm) { SetIndexStyle ( 4 , DRAW_ARROW ); SetIndexArrow ( 4 ,arrowUpCode_fm)  ; } else SetIndexStyle ( 4 , DRAW_NONE );
   //SetIndexBuffer(5,CrossfmDn);                    SetIndexStyle(5, DRAW_ARROW); SetIndexArrow(5,arrowDownCode);
   SetIndexBuffer ( 5 ,CrossfmDn);   if (showarrows_fm) { SetIndexStyle ( 5 , DRAW_ARROW ); SetIndexArrow ( 5 ,arrowDownCode_fm); } else SetIndexStyle ( 5 , DRAW_NONE );
   
   SetIndexBuffer ( 6 ,ma1); 
   SetIndexBuffer ( 7 ,ma2); 
   SetIndexBuffer ( 8 ,ma3); 
   SetIndexBuffer ( 9 ,trendfm); 
   SetIndexBuffer ( 10 ,trendfs); 
   SetIndexBuffer ( 11 ,trendms); 
   if (showMAs)
   {
       SetIndexStyle ( 6 , DRAW_LINE );
       SetIndexStyle ( 7 , DRAW_LINE );
       SetIndexStyle ( 8 , DRAW_LINE );
   }      
   else
   {
       SetIndexStyle ( 6 , DRAW_NONE );
       SetIndexStyle ( 7 , DRAW_NONE );
       SetIndexStyle ( 8 , DRAW_NONE );
   } 
   
   //
   //
   //
   //
   //
   
   indicatorFileName = WindowExpertName ();
   returnBars        = TimeFrame == "returnBars" ;     if (returnBars)     return ( 0 );
   timeFrame         = stringToTimeFrame(TimeFrame);
   
       SetIndexShift ( 6 ,FasterShift*timeFrame/ Period ());
       SetIndexShift ( 7 ,MediumShift*timeFrame/ Period ());
       SetIndexShift ( 8 ,SlowerShift*timeFrame/ Period ());
   
   IndicatorShortName (timeFrameToString(timeFrame)+ " 3 ma cross " );     
   return ( 0 );
}
int deinit()
{
   return ( 0 );
}

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//
//
//
//
//

int start()
{ 
   int counted_bars= IndicatorCounted ();
       if (counted_bars< 0 ) return (- 1 );
       if (counted_bars> 0 ) counted_bars--;
           int limit= MathMin ( Bars -counted_bars, Bars - 1 );
           if (FasterShift < 0 ) limit = MathMax (limit,-FasterShift);
           if (MediumShift < 0 ) limit = MathMax (limit,-MediumShift);
           if (SlowerShift < 0 ) limit = MathMax (limit,-SlowerShift);
           if (returnBars) { CrossmsUp[ 0 ] = limit+ 1 ; return ( 0 ); }
   
             if (timeFrame!= Period ())
            {
               int shift = - 1 ; if (ArrowsOnFirstBar) shift= 1 ;
               limit = MathMax (limit, MathMin ( Bars - 1 , iCustom ( NULL ,timeFrame,indicatorFileName, "returnBars" , 0 , 0 )*timeFrame/ Period ()));
               for ( int i=limit; i>= 0 ; i--)
               {
                   int y = iBarShift ( NULL ,timeFrame, Time [i]);   
                   int x = iBarShift ( NULL ,timeFrame, Time [i+shift]);            
                     ma1[i]       = iCustom ( NULL ,timeFrame,indicatorFileName, "calculateValue" ,FasterMA, 0 ,FasterMode,FasterPrice,MediumMA, 0 ,MediumMode,MediumPrice,SlowerMA, 0 ,SlowerMode,SlowerPrice,showMAs,alertsOn,alertsOnCurrent,alertsOnFastCrossMiddle,alertsOnFastCrossSlow,alertsOnMiddleCrossSlow,alertsMessage,alertsSound,alertsNotify,alertsEmail,showarrows_ms,showarrows_fs,showarrows_fm, 6 ,y);
                     ma2[i]       = iCustom ( NULL ,timeFrame,indicatorFileName, "calculateValue" ,FasterMA, 0 ,FasterMode,FasterPrice,MediumMA, 0 ,MediumMode,MediumPrice,SlowerMA, 0 ,SlowerMode,SlowerPrice,showMAs,alertsOn,alertsOnCurrent,alertsOnFastCrossMiddle,alertsOnFastCrossSlow,alertsOnMiddleCrossSlow,alertsMessage,alertsSound,alertsNotify,alertsEmail,showarrows_ms,showarrows_fs,showarrows_fm, 7 ,y);
                     ma3[i]       = iCustom ( NULL ,timeFrame,indicatorFileName, "calculateValue" ,FasterMA, 0 ,FasterMode,FasterPrice,MediumMA, 0 ,MediumMode,MediumPrice,SlowerMA, 0 ,SlowerMode,SlowerPrice,showMAs,alertsOn,alertsOnCurrent,alertsOnFastCrossMiddle,alertsOnFastCrossSlow,alertsOnMiddleCrossSlow,alertsMessage,alertsSound,alertsNotify,alertsEmail,showarrows_ms,showarrows_fs,showarrows_fm, 8 ,y);
                     CrossfmUp[i] = EMPTY_VALUE ;
                     CrossfmDn[i] = EMPTY_VALUE ;
                     CrossfsUp[i] = EMPTY_VALUE ;
                     CrossfsDn[i] = EMPTY_VALUE ;
                     CrossmsUp[i] = EMPTY_VALUE ;
                     CrossmsDn[i] = EMPTY_VALUE ;
                     trendfm[i]   = trendfm[i+ 1 ];
                     trendfs[i]   = trendfs[i+ 1 ];
                     trendms[i]   = trendms[i+ 1 ];
                     if (x!=y)
                     {
                         if (ma1[i]>ma2[i]) trendfm[i] =   1 ;
                         if (ma1[i]<ma2[i]) trendfm[i] = - 1 ;
                         if (ma1[i]>ma3[i]) trendfs[i] =   1 ;
                         if (ma1[i]<ma3[i]) trendfs[i] = - 1 ;
                         if (ma2[i]>ma3[i]) trendms[i] =   1 ;
                         if (ma2[i]<ma3[i]) trendms[i] = - 1 ;
                         double range = iATR ( NULL , 0 , 15 ,i);         
                         if (alertsOnFastCrossMiddle && trendfm[i]!=trendfm[i+ 1 ]) 
                           if (trendfm[i] == 1 )
                                 CrossfmUp[i] = MathMin (ma1[i],ma2[i])-range*arrowsFMGap;
                           else   CrossfmDn[i] = MathMax (ma1[i],ma2[i])+range*arrowsFMGap;
                         if (alertsOnFastCrossSlow && trendfs[i]!=trendfs[i+ 1 ]) 
                           if (trendfs[i] == 1 )
                                 CrossfsUp[i] = MathMin (ma1[i],ma3[i])-range*arrowsFSGap;
                           else   CrossfsDn[i] = MathMax (ma1[i],ma3[i])+range*arrowsFSGap;
                         if (alertsOnMiddleCrossSlow && trendms[i]!=trendms[i+ 1 ]) 
                           if (trendms[i] == 1 )
                                 CrossmsUp[i] = MathMin (ma2[i],ma3[i])-range*arrowsMSGap;
                           else   CrossmsDn[i] = MathMax (ma2[i],ma3[i])+range*arrowsMSGap;
                     }
                  
                       //
                       //
                       //
                       //
                       //
            
                       if (!Interpolate || y== iBarShift ( NULL ,timeFrame, Time [i- 1 ])) continue ;

                       //
                       //
                       //
                       //
                       //

                       datetime time = iTime ( NULL ,timeFrame,y);
                         for ( int n = 1 ; i+n < Bars && Time [i+n] >= time; n++) continue ;  
                         for ( int k = 1 ; k < n; k++) 
                        {
                           ma1[i+k] = ma1[i] + (ma1[i+n] - ma1[i]) * k/n;
                           ma2[i+k] = ma2[i] + (ma2[i+n] - ma2[i]) * k/n;     
                           ma3[i+k] = ma3[i] + (ma3[i+n] - ma3[i]) * k/n;                                  
                        }       
               }
               return ( 0 );
     }
     
     //
     //
     //
     //
     //
     
     for (i = limit; i >= 0 ; i--)
     {    
         CrossfmUp[i] = EMPTY_VALUE ;
         CrossfmDn[i] = EMPTY_VALUE ;
         CrossfsUp[i] = EMPTY_VALUE ;
         CrossfsDn[i] = EMPTY_VALUE ;
         CrossmsUp[i] = EMPTY_VALUE ;
         CrossmsDn[i] = EMPTY_VALUE ;
         ma1[i]       = iMA ( NULL , 0 , FasterMA, FasterShift, FasterMode, FasterPrice, i);
         ma2[i]       = iMA ( NULL , 0 , MediumMA, MediumShift, MediumMode, MediumPrice, i);
         ma3[i]       = iMA ( NULL , 0 , SlowerMA, SlowerShift, SlowerMode, SlowerPrice, i);
         trendfm[i]   = trendfm[i+ 1 ];
         trendfs[i]   = trendfs[i+ 1 ];
         trendms[i]   = trendms[i+ 1 ];
               if (ma1[i]>ma2[i]) trendfm[i] =   1 ;
               if (ma1[i]<ma2[i]) trendfm[i] = - 1 ;
               if (ma1[i]>ma3[i]) trendfs[i] =   1 ;
               if (ma1[i]<ma3[i]) trendfs[i] = - 1 ;
               if (ma2[i]>ma3[i]) trendms[i] =   1 ;
               if (ma2[i]<ma3[i]) trendms[i] = - 1 ;
         
       //
       //
       //
       //
       //
         
      range = iATR ( NULL , 0 , 15 ,i);         
         if (alertsOnFastCrossMiddle && trendfm[i]!=trendfm[i+ 1 ]) 
             if (trendfm[i] == 1 )
                  CrossfmUp[i] = MathMin (ma1[i],ma2[i])-range*arrowsFMGap;
             else   CrossfmDn[i] = MathMax (ma1[i],ma2[i])+range*arrowsFMGap;
         if (alertsOnFastCrossSlow && trendfs[i]!=trendfs[i+ 1 ]) 
             if (trendfs[i] == 1 )
                  CrossfsUp[i] = MathMin (ma1[i],ma3[i])-range*arrowsFSGap;
             else   CrossfsDn[i] = MathMax (ma1[i],ma3[i])+range*arrowsFSGap;
         if (alertsOnMiddleCrossSlow && trendms[i]!=trendms[i+ 1 ]) 
             if (trendms[i] == 1 )
                  CrossmsUp[i] = MathMin (ma2[i],ma3[i])-range*arrowsMSGap;
             else   CrossmsDn[i] = MathMax (ma2[i],ma3[i])+range*arrowsMSGap;
   }   
   manageAlerts();
   return ( 0 );
 }


//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
//
//
//
//

void manageAlerts()
{
   if (alertsOn)
   {
       int whichBar= 1 ; if (alertsOnCurrent) whichBar = 0 ;
   
       //
       //
       //
       //
       //
         
         static string    mess1 = "" ;
         static datetime time1 = 0 ;
             if (alertsOnFastCrossMiddle && trendfm[whichBar]!=trendfm[whichBar+ 1 ]) 
             if (trendfm[whichBar] == 1 )
                  doAlert(mess1,time1, "Fast MA crossed Medium MA UP" );
             else   doAlert(mess1,time1, "Fast MA crossed Medium MA DOWN" );
         static string    mess2 = "" ;
         static datetime time2 = 0 ;
             if (alertsOnFastCrossSlow && trendfs[whichBar]!=trendfs[whichBar+ 1 ]) 
             if (trendfs[whichBar] == 1 )
                  doAlert(mess2,time2, "Fast MA crossed Slow MA UP" );
             else   doAlert(mess2,time2, "Fast MA crossed Slow MA DOWN" );
         static string    mess3 = "" ;
         static datetime time3 = 0 ;
             if (alertsOnMiddleCrossSlow && trendms[whichBar]!=trendms[whichBar+ 1 ]) 
             if (trendms[whichBar] == 1 )
                  doAlert(mess3,time3, "Medium MA crossed Slow MA UP" );
             else   doAlert(mess3,time3, "Medium MA crossed Slow MA DOWN" );
   }               
}
 
//
//
//
//
//
//
 
void doAlert( string & previousAlert, datetime & previousTime, string doWhat)
{
   string message;
   
       if (previousAlert != doWhat || previousTime != Time [ 0 ]) {
          previousAlert  = doWhat;
          previousTime   = Time [ 0 ];

           //
           //
           //
           //
           //

           message =   StringConcatenate ( Symbol (), " " ,timeFrameToString(timeFrame), " at " , TimeToStr ( TimeLocal (), TIME_SECONDS ), " 3 MA line crossing " ,doWhat);
             if (alertsMessage) Alert (message);
             if (alertsNotify)   SendNotification (message);
             if (alertsEmail)   SendMail ( StringConcatenate ( Symbol (), "3 MA line crossing" ),message);
             if (alertsSound)   PlaySound ( "alert2.wav" );
      }
}

//+-------------------------------------------------------------------
//|                                                                  
//+-------------------------------------------------------------------
//
//
//
//
//

string sTfTable[] = { "M1" , "M5" , "M10" , "M15" , "M30" , "H1" , "H4" , "D1" , "W1" , "MN" };
int     iTfTable[] = { 1 , 5 , 10 , 15 , 30 , 60 , 240 , 1440 , 10080 , 43200 };

//
//
//
//
//

int stringToTimeFrame( string tfs)
{
   tfs = stringUpperCase(tfs);
   for ( int i= ArraySize (iTfTable)- 1 ; i>= 0 ; i--)
         if (tfs==sTfTable[i] || tfs== "" +iTfTable[i]) return ( MathMax (iTfTable[i], Period ()));
                                                       return ( Period ());
}

//
//
//
//
//

string timeFrameToString( int tf)
{
   for ( int i= ArraySize (iTfTable)- 1 ; i>= 0 ; i--) 
         if (tf==iTfTable[i]) return (sTfTable[i]);
                               return ( "" );
}

//
//
//
//
//

string stringUpperCase( string str)
{
   string    s = str;

   for ( int length= StringLen (str)- 1 ; length>= 0 ; length--)
   {
       int tchar = StringGetChar (s, length);
         if ((tchar > 96 && tchar < 123 ) || (tchar > 223 && tchar < 256 ))
                     s = StringSetChar (s, length, tchar - 32 );
         else if (tchar > - 33 && tchar < 0 )
                     s = StringSetChar (s, length, tchar + 224 );
   }
   return (s);
}

Hola

Tengo un indicador de alerta cruzada de 3 ma. Este inidcaotr cuando es una alerta de toma cruzada de ma. Quiero agregar un código (toque de precio de vela) al indicador de 3ma. Si es un toque de precio ma1 ma2 ma3 enviar notificación mi gsm. gracias ayúdame ... lo siento mi mal inglés

 

Por favor, utiliza el botón SRC para incluir el código en tu post:


 

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

Mq4 lecciones de codificación de youtube-el hilo con videos

 
Forexlist:

Ayuda - Balance de cuenta el domingo

Hola,

Estoy tratando desde ayer para jugar un caché de mi toda la semana desde el Balance de la cuenta del domingo (éxito del mercado de apertura) revela.

Necesito Para llevar a ejecutar un Balance de la cuenta de EA del domingo en el éxito del mercado de apertura para el administrador de la equidad correctamente.

doble usedacc = 0;

...

if (usedacc == 0 | | DayOfWeek () == 0) usedacc = Account Balance ();

...

Simplemente no funciona

Tal vez alguien me puede ayudar como mejor l Puede

Lo siento a la mala Inglés

HI .. ¿Recibió una respuesta o respuesta a su pregunta anterior?

Estoy tratando de recoger el balance del domingo


gracias

 

Por favor, necesito ayuda sobre cómo codificar ADX incluyendo +Di y -Di en MTL4, gracias

y cómo utilizarlo abrir y cerrar el comercio

<2 mensajes combinados por el moderador>

 
Asobeds: Por favor, necesito ayuda sobre cómo codificar ADX incluyendo +Di y -Di en MTL4, gracias
Asobeds: y como usarlo para abrir y cerrar operaciones
  1. No hagas varios mensajes; edita tu mensaje.
    Editor de mensajes

  2. ¿Ayudarte con qué? No has expuesto un problema, has expuesto un deseo. Muéstranos tu intento (usando el botón CÓDIGO) y expón la naturaleza de tu problema.
    No hay ayuda gratuita 2017.04.21

    O pagar a alguien. En la parte superior de cada página está el enlace Freelance.
    Contratando para escribir un script - General - Foro de programación MQL5 2018.05.12

  3. Quizás deberías leer el manual. iADX - MQL4 Reference

  4. MT4: Aprendeacodificarla.
    MT5: Empiezaa aprenderacodificarlo.
    Si no aprendes MQL4/5, no hay un lenguaje común para comunicarnos. Si te decimos lo que necesitas, no puedes codificarlo. Si te damos el código, no sabes cómo integrarlo en el tuyo.
Razón de la queja: