"MQL5'i kullanarak trendler ve grafik formasyonları nasıl tespit edilir?" makalesi için tartışma - sayfa 2

 

Lütfen bu forumda sadece İngilizce mesaj gönderin.

Gerekirse otomatik çeviri aracını kullanabilirsiniz.

Teşekkürler.
 
J M çift alt ) konfigürasyonların tespiti ile ilgili olarak, 4 farklı ve kesin çizgi çizebilen (grafikte az çok net bir şekilde bir M çizen) bir kod önerme olasılığı yok mu? Fiyatlar değiştikçe yeniden çizilen çizgiler yerine, ki bu kalıpları tespit etmek söz konusu olduğunda hiç de iyi bir şey değildir .

Örneğin, ikili üst kısım gibi:

1. İlk yükseliş bacağını çizecek olan ilk çizgi. Ve hat, bir sonraki rota değişiklikleriyle daha fazla ilerlemeden son halini alıyor...

2. İlk düşüş düzeltmesinin izini sürecek olan bir ikincisi, aynı zamanda potansiyel bir M formasyonunun ilk tepesinin potansiyel oluşumuna işaret edecektir.

3. Üçüncüsü, yükseliş toparlanmasının izini sürer (ikinci bir yükseliş dürtüsü) ve tüccarı geri dönüşün yakınlığı konusunda uyarır...

4. Ve son olarak, figür gerçekten oluştuğunda çizilecek bir arka çizgi...

Sanırım endişemi anladınız.

Bu farklı izlemeleri yapabilen bir kod mümkün değil mi? TEŞEKKÜRLER

Yorumunuz için teşekkürler.

Kalıpları tespit etmenin kalıp formuna bağlı olarak zor olabileceğini biliyorum çünkü kabul edilen birçok varyasyon var ve kodunuzu hedeflere ve bahsettiklerinize göre geliştirmeniz gerektiğini görebilirsiniz.

Bence mantıklı bir şekilde tanımlayabildiğiniz her şeyi kodlayabilirsiniz.

Teşekkürler

 
Mohamed Abdelmaaboud #:

Yorumunuz için teşekkürler.

Kalıpları tespit etmenin kalıp formuna bağlı olarak zor olabileceğini biliyorum çünkü kabul edilen birçok farklılık var ve kodunuzu hedeflere ve bahsettiklerinize göre geliştirmeniz gerektiğini görebilirsiniz.

Bence mantıklı bir şekilde tanımlayabildiğiniz her şeyi kodlayabilirsiniz.

Teşekkürler

Tamam. Teşekkürler.

Moderatör tarafından İngilizceye çevrilmiştir.

Burası İngilizce forumdur. Lütfen sadece İngilizce yazın.

 
Makaleni okuduğuma çok memnun oldum, Mohamed.
Sonuçları bir arada görmek için kodları birleştirme cüretini gösterdim (umarım alınmazsınız): Olası bir EA'nın oluşturulmasına yönelik adımlar atmaya devam etmek için düşünebildiğim şey bu.
Farklı grafik durumlarına emirleri uygulamaya kim teşvik edilir?

Saygılarımla.

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

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

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

// TREND BULUCU
   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,"-");        
}
 
Her tikte grafik nesneler oluşturmak iyi bir fikir değildir.
 
Çok güzel bir katkı, tebrikler, çok teşekkürler!
 
Oldukça net ve görünür, aynı zamanda ilginç
 

Merhaba Mohamed, makaleni ve kodunu okudum. Bana çok yardımcı oldu.


Anlamadığım tek bir şey var. "getmove" fonksiyonunu nereden alıyorsunuz? MTQL'de aramaya çalıştım.

Yeni başlıyorum, eğer cevap kolaysa soru için özür dilerim.

Eugene