기고글 토론 "MQL5를 사용하여 트렌드 및 차트 패턴을 감지하는 방법" - 페이지 2 12 새 코멘트 Alain Verleyen 2023.04.20 14:17 #11 이 포럼에서는 영어로만 글을 작성해 주세요. 필요한 경우 자동 번역 도구를 사용할 수 있습니다. 감사합니다. Mohamed Abdelmaaboud 2023.04.20 15:39 #12 J M 이중 하단 )의 구성 감지와 관련하여 4 개의 서로 다른 결정적인 선을 그릴 수있는 코드를 제안 할 가능성이 없습니까 (그래프에 M을 다소 명확하게 그리기)? 가격이 변함에 따라 다시 그려지는 선이 아니라 패턴을 발견 할 때 전혀 좋은 것은 아닙니다 . 예를 들어 더블 탑의 경우입니다: 첫 번째 선은 첫 번째 강세 구간을 그립니다. 그리고 이 선은 다음 코스 변경으로 더 이상 움직이지 않고 최종적으로 유지됩니다... 2. 두 번째 선은 첫 번째 약세 조정을 추적하는 동시에 잠재적 M 패턴의 첫 번째 고점을 형성할 가능성을 나타냅니다. 3. 세 번째는 강세 회복(두 번째 강세 충동)을 추적하고 트레이더에게 수익이 임박했음을 알려줍니다... 4. 그리고 마지막으로, 그림이 실제로 형성되면 그려질 백 라인... 글쎄요, 제 우려를 이해하신 것 같습니다. 이 다른 트레이싱을 할 수있는 코드가 가능하지 않습니까? 고마워요 의견 주셔서 감사합니다. 허용되는 변수가 많기 때문에 패턴 형태에 따라 패턴을 감지하는 것이 어려울 수 있으며 목표와 언급 한 내용에 따라 코드를 개발해야 할 수도 있습니다. 제 생각에는 논리적으로 설명할 수 있는 것이라면 무엇이든 코딩할 수 있다고 생각합니다. 고마워요 J M 2023.04.20 16:34 #13 Mohamed Abdelmaaboud #:의견을 보내주셔서 감사합니다. 패턴 형태에 따라 허용되는 차이가 많기 때문에 패턴을 감지하는 것이 어려울 수 있으며, 목표와 언급하신 내용에 따라 코드를 개발해야 할 수도 있습니다. 제 생각에는 논리적으로 설명할 수 있는 것이라면 무엇이든 코딩할 수 있다고 생각합니다. 고마워요 네, 감사합니다 중재자가 영어로 번역했습니다. 이 포럼은 영어 포럼입니다. 영어로만 작성해 주세요. Juan Luis De Frutos Blanco 2023.04.20 20:49 #14 모하메드 님의 글을 읽게 되어 기쁩니다. 저는 (기분 나쁘게 생각하지 않으셨으면 좋겠습니다만) 코드를 통합하여 결과를 한데 묶어 보았습니다: 가능한 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,"-"); } JRandomTrader 2023.09.27 10:06 #15 모든 틱에 그래픽 개체를 만드는 것은 좋은 생각이 아닙니다. Aitor Esteban Yague 2023.10.04 17:25 #16 아주 좋은 기여, 축하합니다, 정말 감사합니다! Hilario Miguel Ofarril Gonzalez 2023.10.06 07:51 #17 매우 명확하고 눈에 잘 띄는 .뿐만 아니라 흥미 롭습니다. Echo1Zulu1 2024.08.25 00:09 #18 안녕하세요, 모하메드 님의 글과 코드를 잘 읽었습니다. 많은 도움이 되었습니다. 제가 이해하지 못하는 것이 한 가지 있습니다. "getmove" 함수는 어디서 구할 수 있나요? MTQL에서 검색을 시도했습니다. 이제 막 시작했기 때문에 대답이 쉽다면 질문해서 죄송합니다. Eugene 12 새 코멘트 트레이딩 기회를 놓치고 있어요: 무료 트레이딩 앱 복사용 8,000 이상의 시그널 금융 시장 개척을 위한 경제 뉴스 등록 로그인 공백없는 라틴 문자 비밀번호가 이 이메일로 전송될 것입니다 오류 발생됨 Google으로 로그인 웹사이트 정책 및 이용약관에 동의합니다. 계정이 없으시면, 가입하십시오 MQL5.com 웹사이트에 로그인을 하기 위해 쿠키를 허용하십시오. 브라우저에서 필요한 설정을 활성화하시지 않으면, 로그인할 수 없습니다. 사용자명/비밀번호를 잊으셨습니까? Google으로 로그인
이 포럼에서는 영어로만 글을 작성해 주세요.
필요한 경우 자동 번역 도구를 사용할 수 있습니다.
감사합니다.예를 들어 더블 탑의 경우입니다:
첫 번째 선은 첫 번째 강세 구간을 그립니다. 그리고 이 선은 다음 코스 변경으로 더 이상 움직이지 않고 최종적으로 유지됩니다...
2. 두 번째 선은 첫 번째 약세 조정을 추적하는 동시에 잠재적 M 패턴의 첫 번째 고점을 형성할 가능성을 나타냅니다.
3. 세 번째는 강세 회복(두 번째 강세 충동)을 추적하고 트레이더에게 수익이 임박했음을 알려줍니다...
4. 그리고 마지막으로, 그림이 실제로 형성되면 그려질 백 라인...
글쎄요, 제 우려를 이해하신 것 같습니다.
이 다른 트레이싱을 할 수있는 코드가 가능하지 않습니까? 고마워요
의견 주셔서 감사합니다.
허용되는 변수가 많기 때문에 패턴 형태에 따라 패턴을 감지하는 것이 어려울 수 있으며 목표와 언급 한 내용에 따라 코드를 개발해야 할 수도 있습니다.
제 생각에는 논리적으로 설명할 수 있는 것이라면 무엇이든 코딩할 수 있다고 생각합니다.
고마워요
의견을 보내주셔서 감사합니다.
패턴 형태에 따라 허용되는 차이가 많기 때문에 패턴을 감지하는 것이 어려울 수 있으며, 목표와 언급하신 내용에 따라 코드를 개발해야 할 수도 있습니다.
제 생각에는 논리적으로 설명할 수 있는 것이라면 무엇이든 코딩할 수 있다고 생각합니다.
고마워요
네, 감사합니다
중재자가 영어로 번역했습니다.
이 포럼은 영어 포럼입니다. 영어로만 작성해 주세요.
감사합니다.
안녕하세요, 모하메드 님의 글과 코드를 잘 읽었습니다. 많은 도움이 되었습니다.
제가 이해하지 못하는 것이 한 가지 있습니다. "getmove" 함수는 어디서 구할 수 있나요? MTQL에서 검색을 시도했습니다.
이제 막 시작했기 때문에 대답이 쉽다면 질문해서 죄송합니다.
Eugene