기고글 토론 "MQL5를 사용하여 트렌드 및 차트 패턴을 감지하는 방법" - 페이지 2

 

이 포럼에서는 영어로만 글을 작성해 주세요.

필요한 경우 자동 번역 도구를 사용할 수 있습니다.

감사합니다.
 
J M 이중 하단 )의 구성 감지와 관련하여 4 개의 서로 다른 결정적인 선을 그릴 수있는 코드를 제안 할 가능성이 없습니까 (그래프에 M을 다소 명확하게 그리기)? 가격이 변함에 따라 다시 그려지는 선이 아니라 패턴을 발견 할 때 전혀 좋은 것은 아닙니다 .

예를 들어 더블 탑의 경우입니다:

첫 번째 선은 첫 번째 강세 구간을 그립니다. 그리고 이 선은 다음 코스 변경으로 더 이상 움직이지 않고 최종적으로 유지됩니다...

2. 두 번째 선은 첫 번째 약세 조정을 추적하는 동시에 잠재적 M 패턴의 첫 번째 고점을 형성할 가능성을 나타냅니다.

3. 세 번째는 강세 회복(두 번째 강세 충동)을 추적하고 트레이더에게 수익이 임박했음을 알려줍니다...

4. 그리고 마지막으로, 그림이 실제로 형성되면 그려질 백 라인...

글쎄요, 제 우려를 이해하신 것 같습니다.

이 다른 트레이싱을 할 수있는 코드가 가능하지 않습니까? 고마워요

의견 주셔서 감사합니다.

허용되는 변수가 많기 때문에 패턴 형태에 따라 패턴을 감지하는 것이 어려울 수 있으며 목표와 언급 한 내용에 따라 코드를 개발해야 할 수도 있습니다.

제 생각에는 논리적으로 설명할 수 있는 것이라면 무엇이든 코딩할 수 있다고 생각합니다.

고마워요

 
Mohamed Abdelmaaboud #:

의견을 보내주셔서 감사합니다.

패턴 형태에 따라 허용되는 차이가 많기 때문에 패턴을 감지하는 것이 어려울 수 있으며, 목표와 언급하신 내용에 따라 코드를 개발해야 할 수도 있습니다.

제 생각에는 논리적으로 설명할 수 있는 것이라면 무엇이든 코딩할 수 있다고 생각합니다.

고마워요

네, 감사합니다

중재자가 영어로 번역했습니다.

이 포럼은 영어 포럼입니다. 영어로만 작성해 주세요.

 
모하메드 님의 글을 읽게 되어 기쁩니다.
저는 (기분 나쁘게 생각하지 않으셨으면 좋겠습니다만) 코드를 통합하여 결과를 한데 묶어 보았습니다: 가능한 EA를 만들기 위한 조치를 계속 취하는 것이 제가 생각할 수 있는 방법입니다.
다른 그래픽 상태에 대한 주문을 구현하는 것이 권장되는 사람은 누구입니까?

감사합니다.

//+------------------------------------------------------------------+
//|TrendDTDB.mq5 |
//+------------------------------------------------------------------+

input int checkBars= 20;
   int high1, high2, low1, low2;
   double highVal1, highVal2, lowVal1, lowVal2;

void OnInit()
{
   PonEtiquetas();
}


void OnTick()
{
   high1=getmove(MODE_HIGH,checkBars,0);
   high2=getmove(MODE_HIGH,checkBars,high1+1);
   highVal1=NormalizeDouble(iHigh(_Symbol,_Period,high1),5);
   highVal2=NormalizeDouble(iHigh(_Symbol,_Period,high2),5);
   
   low1=getmove(MODE_LOW,checkBars,0);
   low2=getmove(MODE_LOW,checkBars,low1+1);
   lowVal1=NormalizeDouble(iLow(_Symbol,_Period,low1),5);
   lowVal2=NormalizeDouble(iLow(_Symbol,_Period,low2),5);

// 도블 테크노
   if(highVal1<=highVal2&&lowVal1>lowVal2){ObjectSetString((int)_Symbol,"LS0",OBJPROP_TEXT,0,"Potencial DT-DOBLE TECHO"); DibujaArriba("DTP",clrGreen);}
   else if(highVal1<=highVal2&&lowVal1<lowVal2){ObjectSetString((int)_Symbol,"LS0",OBJPROP_TEXT,0,"DT-DOBLE TECHO");DibujaArriba("DT",clrGreen);}
        else{ObjectSetString((int)_Symbol,"LS0",OBJPROP_TEXT,0,"."); ObjectsDeleteAll(0,"DT",0,-1);}

//도블 수엘로
   if(lowVal1>=lowVal2&&highVal1<highVal2){ObjectSetString((int)_Symbol,"LS1",OBJPROP_TEXT,0,"Potencial DS-DOBLE SUELO"); DibujaAbajo("DSP",clrRed);}
   else if(lowVal1>=lowVal2&&highVal1>highVal2){ObjectSetString((int)_Symbol,"LS1",OBJPROP_TEXT,0,"DT-DOBLE TECHO");DibujaArriba("DS",clrGreen);}
        else{ObjectSetString((int)_Symbol,"LS1",OBJPROP_TEXT,0,"."); ObjectsDeleteAll(0,"DS",0,-1);}

// 트렌드 파인더
   if(lowVal1>lowVal2&&highVal1>highVal2){ObjectSetString((int)_Symbol,"LS2",OBJPROP_TEXT,0,"UP-Tendencia ALCISTA");DibujaArriba("T",clrGreen);}
   else if(highVal1<highVal2&&lowVal1<lowVal2){ObjectSetString((int)_Symbol,"LS2",OBJPROP_TEXT,0,"DOWN-Tendencia BAJISTA");DibujaAbajo("T",clrRed);}
        else{ObjectSetString((int)_Symbol,"LS2",OBJPROP_TEXT,0,"SW-Tendencia LATERAL");  ObjectsDeleteAll(0,"T",0,-1);}
      
}


int getmove(int move, int count, int startPos)
{
   if(move!=MODE_HIGH && move!=MODE_LOW)
      return (-1);
   int currentBar=startPos;
   int moveReturned=getNextMove(move,count*2+1,currentBar-count);
   while(moveReturned!=currentBar)
     {
      currentBar=getNextMove(move,count,currentBar+1);
      moveReturned=getNextMove(move,count*2+1,currentBar-count);
     }
   return(currentBar);
}
  
int getNextMove(int move, int count, int startPos)
{
   if(startPos<0)
     {
      count +=startPos;
      startPos =0;
     }
   return((move==MODE_HIGH)?
          iHighest(Symbol(),Period(),(ENUM_SERIESMODE)move,count,startPos):
          iLowest(Symbol(),Period(),(ENUM_SERIESMODE)move,count,startPos));
}
  
void DibujaArriba(string Nombre, int mColor)
{ 
   ObjectDelete(0,Nombre);
   ObjectCreate(0,Nombre,OBJ_TREND,0,iTime(Symbol(),Period(),high2),iHigh(Symbol(),Period(),high2),iTime(Symbol(),Period(),high1),iHigh(Symbol(),Period(),high1));
   ObjectSetInteger(0,Nombre,OBJPROP_COLOR,mColor);
   ObjectSetInteger(0,Nombre,OBJPROP_WIDTH,1);
   ObjectSetInteger(0,Nombre,OBJPROP_RAY_RIGHT,true);

}

void DibujaAbajo(string Nombre, int mColor)
{ 
   ObjectDelete(0,Nombre);
   ObjectCreate(0,Nombre,OBJ_TREND,0,iTime(Symbol(),Period(),low2),iLow(Symbol(),Period(),low2),iTime(Symbol(),Period(),low1),iLow(Symbol(),Period(),low1));
   ObjectSetInteger(0,Nombre,OBJPROP_COLOR,mColor);
   ObjectSetInteger(0,Nombre,OBJPROP_WIDTH,1);
   ObjectSetInteger(0,Nombre,OBJPROP_RAY_RIGHT,true);
}

void PonEtiquetas()
{ 
   ObjectCreate((int)_Symbol,"LS0", OBJ_LABEL, 0, 0, 0);
   ObjectSetString(0,"LS0",OBJPROP_FONT,"Arial");
   ObjectSetInteger(0,"LS0",OBJPROP_FONTSIZE,25); 
   ObjectSetInteger(0,"LS0",OBJPROP_COLOR,clrGreen);    
   ObjectSetInteger(0,"LS0", OBJPROP_CORNER, 4);   
   ObjectSetInteger(0,"LS0", OBJPROP_XDISTANCE, 800);
   ObjectSetInteger(0,"LS0", OBJPROP_YDISTANCE, 50);
   ObjectSetString((int)_Symbol,"LS0",OBJPROP_TEXT,0,"-");  
   
   ObjectCreate((int)_Symbol,"LS1", OBJ_LABEL, 0, 0, 0);
   ObjectSetString(0,"LS1",OBJPROP_FONT,"Arial");
   ObjectSetInteger(0,"LS1",OBJPROP_FONTSIZE,25); 
   ObjectSetInteger(0,"LS1",OBJPROP_COLOR,clrRed);    
   ObjectSetInteger(0,"LS1", OBJPROP_CORNER, 4);   
   ObjectSetInteger(0,"LS1", OBJPROP_XDISTANCE, 800);
   ObjectSetInteger(0,"LS1", OBJPROP_YDISTANCE, 90);
   ObjectSetString((int)_Symbol,"LS1",OBJPROP_TEXT,0,"-");  
   
   ObjectCreate((int)_Symbol,"LS2", OBJ_LABEL, 0, 0, 0);
   ObjectSetString(0,"LS2",OBJPROP_FONT,"Arial");
   ObjectSetInteger(0,"LS2",OBJPROP_FONTSIZE,25); 
   ObjectSetInteger(0,"LS2",OBJPROP_COLOR,clrWhiteSmoke);    
   ObjectSetInteger(0,"LS2", OBJPROP_CORNER, 4);   
   ObjectSetInteger(0,"LS2", OBJPROP_XDISTANCE, 800);
   ObjectSetInteger(0,"LS2", OBJPROP_YDISTANCE, 130);
   ObjectSetString((int)_Symbol,"LS2",OBJPROP_TEXT,0,"-");        
}
 
모든 틱에 그래픽 개체를 만드는 것은 좋은 생각이 아닙니다.
 
아주 좋은 기여, 축하합니다, 정말 감사합니다!
 
매우 명확하고 눈에 잘 띄는 .뿐만 아니라 흥미 롭습니다.
 

안녕하세요, 모하메드 님의 글과 코드를 잘 읽었습니다. 많은 도움이 되었습니다.


제가 이해하지 못하는 것이 한 가지 있습니다. "getmove" 함수는 어디서 구할 수 있나요? MTQL에서 검색을 시도했습니다.

이제 막 시작했기 때문에 대답이 쉽다면 질문해서 죄송합니다.

Eugene