코딩하는 방법? - 페이지 346

 

안녕, mladen, 이 표시기에 소리 경고를 추가해 주시겠습니까? 많은 감사

파일:
patterns.ex4  45 kb
 

믈라덴이나 코더,

그림과 같은 mql4 컨테이너 상자를 만드는 방법은 무엇입니까? Obj_label ?

파일:
infoboard.png  204 kb
 
Kale :

확실히 이 표시기는 특히 지그재그와 결합할 때 유용합니다.

EA 코딩을 시작하기에 아주 좋습니다.


케일 :

확실히 이 표시기는 특히 지그재그와 결합할 때 유용합니다.

EA 코딩을 시작하기에 아주 좋습니다.


소스 파일 .mql4를 게시해 주시겠습니까?

감사해요

 
//+--------------------------------------------------------------------------+
//|                                                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);
}

안녕

나는 3ma 교차 경고 표시기가 있습니다. 이 inidcaotr 교차 ma는 경고를 가져옵니다. 3ma 표시기에 코드(candel 가격 터치)를 추가하고 싶습니다. 가격 터치 ma1 ma2 ma3 알림을 내 gsm으로 보냅니다 . 어떻게 해야 합니까? 도와주셔서 감사합니다 ...sory 내 나쁜 영어

 

게시물에 코드를 포함하려면 SRC 버튼을 사용하세요.


 

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

Mq4 youtube 코딩 수업 - 비디오 스레드

 
Forexlist :

도와주세요 - 일요일 계정 잔액

안녕,

나는 어제부터 Account Balance Sunday(시장 성공 오프닝)가 공개된 이후로 나의 모든 주의 캐시를 수정하려고 노력하고 있습니다.

나는 시장에서 일요일의 EA 계정 잔액을 실행하기 위해 가져와야 합니다. 자산 관리자를 올바르게 여는 데 성공합니다.

이중 usedacc = 0;

...

if (usedacc == 0 | | DayOfWeek() == 0) usedacc = 계정 잔액();

...

그냥 작동하지 않습니다

내가 최선을 다해 도와줄 수 있는 사람이 있을지도 몰라

나쁜 영어 죄송합니다

안녕하세요.. 위의 질문에 대한 답변이나 답변을 받으셨습니까?

일요일 잔액을 픽업하려고 합니다.


감사해요

 

MTL4에서 +Di 및 -Di를 포함하여 ADX를 코딩하는 방법에 대한 도움이 필요합니다. 감사합니다.

오픈 및 클로즈드 거래를 사용하는 방법

<모더에 의해 결합된 2개의 게시물>

 
Asobeds : MTL4에서 +Di 및 -Di를 포함하여 ADX를 코딩하는 방법에 대한 도움이 필요합니다. 감사합니다.
Asobed : 및 사용 방법 거래를 열고 닫습니다
  1. 여러 게시물을 작성하지 마십시오. 게시물을 수정 합니다.
    메시지 편집기

  2. 무엇을 도와? 당신은 문제를 말한 것이 아니라 원하는 것을 말했습니다. 귀하의 시도를 보여 주고( CODE 버튼 사용) 문제 의 성격을 설명하십시오.
    무료 도움말 없음 2017.04.21

    또는 누군가에게 지불하십시오. 모든 페이지의 맨 위에는 Freelance 링크가 있습니다.
    스크립트 작성을 위한 채용 - 일반 - MQL5 프로그래밍 포럼 2018.05.12

  3. 아마도 당신은 매뉴얼을 읽어야 할 것입니다. iADX - MQL4 참조

  4. MT4: 코딩 배우 십시오 .
    MT5: 코딩 배우기 시작 합니다 .
    MQL4/5를 배우지 않으면 우리가 의사 소통할 수 있는 공통 언어가 없습니다. 우리가 당신에게 필요한 것을 말하면, 당신은 그것을 코딩할 수 없습니다. 우리가 당신에게 코드를 준다면 당신은 그것을 당신의 코드에 통합하는 방법을 모릅니다.