MQL4'te Fibonacci seviyeleri

 
Hepinize iyi günler! Soru ortaya çıktı - Fibonacci Seviyeleri nesnesini oluştururken, her bir seviye farklı bir renk yapılabilir mi ve bir Uzman Danışman için bir sinyal değeri nasıl ayrı bir seviyeye atanabilir? Şimdiden teşekkürler! Saygılarımla, Eugene!
 
EA'da hemen değerlerini hesaplamak daha iyidir
 

Bir fonksiyonda bu şekilde mi yazılabilir? Ama renk bireysel seviyelerde değişmiyor, belki bir yerde bir hata var ya da başka bir şey eklenmesi gerekiyor ???

int fibo(tarihsaat X1, çift Y1, tarihsaat X2, çift Y2)

{

ObjectCreate("Fibo", OBJ_FIBO , 0, 0, 0, 0, 0); // Bir Fibonacci Levels nesnesi oluşturun

ObjectSet("Fibo",OBJPROP_COLOR,clrRed); // çapraz renk

//ObjectSet("Fibo",OBJPROP_LEVELCOLOR,clrBlue); // seviyelerin rengi aynı

//ObjectSetInteger(0,"Fibo",OBJPROP_BACK,true);//--- önde (yanlış) veya arkada (doğru) göster


ObjectSet("Fibo",OBJPROP_FIBOLEVELS,13); //Nesne seviyelerinin sayısını ayarla


ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+0,0.000);//Her nesne seviyesinin değerlerini ayarlayın

ObjectSetDouble(0,"Fibo",OBJPROP_LEVELVALUE,0,0.000);

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELCOLOR,0,clrGreen); // seviye rengi

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELSTYLE,0,STYLE_SOLID);//Kesintisiz çizgi

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELWIDTH,0,1); //--- seviye kalınlığı

ObjectSetFiboDescription("Fibo",0,"0.000");


ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+1,0.146);

ObjectSetDouble(0,"Fibo",OBJPROP_LEVELVALUE,1,0.146);

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELCOLOR,1,clrGreen); // seviye rengi

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELSTYLE,1,STYLE_SOLID);//Düz çizgi

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELWIDTH,1,1); //--- seviye kalınlığı

ObjectSetFiboDescription("Fibo",1,"0.146");


ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+2,0.236);

ObjectSetDouble(0,"Fibo",OBJPROP_LEVELVALUE,2,0.236);

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELCOLOR,2,clrGreen); // seviye rengi

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELSTYLE,2,STYLE_SOLID);//Kesintisiz çizgi

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELWIDTH,2,1); //--- seviye kalınlığı

ObjectSetFiboDescription("Fibo",2,"0.236");


ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+3,0.382);

ObjectSetDouble(0,"Fibo",OBJPROP_LEVELVALUE,3,0.382);

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELCOLOR,3,clrGreen); // seviye rengi

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELSTYLE,3,STYLE_SOLID);//Kesintisiz çizgi

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELWIDTH,3,1); //--- seviye kalınlığı

ObjectSetFiboDescription("Fibo",3,"0.382");



ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+4,0.5);

ObjectSetDouble(0,"Fibo",OBJPROP_LEVELVALUE,4,0.5);

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELCOLOR,4,clrGreen); // seviye rengi

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELSTYLE,4,STYLE_SOLID);//Düz çizgi

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELWIDTH,4,1); //--- seviye kalınlığı

ObjectSetFiboDescription("Fibo",4,"0.5");


ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+5,0.618);

ObjectSetDouble(0,"Fibo",OBJPROP_LEVELVALUE,5,0.618);

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELCOLOR,5,clrGreen); // seviye rengi

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELSTYLE,5,STYLE_SOLID);//Düz çizgi

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELWIDTH,5,1); //--- seviye kalınlığı

ObjectSetFiboDescription("Fibo",5,"0.618");


ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+6,0.764);

ObjectSetDouble(0,"Fibo",OBJPROP_LEVELVALUE,6,0.764);

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELCOLOR,6,clrGreen); // seviye rengi

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELSTYLE,6,STYLE_SOLID);//Kesintisiz çizgi

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELWIDTH,6,1); //--- seviye kalınlığı

ObjectSetFiboDescription("Fibo",6,"0.764");


ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+7,1);

ObjectSetDouble(0,"Fibo",OBJPROP_LEVELVALUE,7,1);

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELCOLOR,7,clrGreen); // seviye rengi

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELSTYLE,7,STYLE_SOLID);//Düz çizgi

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELWIDTH,7,1); //--- seviye kalınlığı

ObjectSetFiboDescription("Fibo",7,"1");


ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+8,1.236);

ObjectSetDouble(0,"Fibo",OBJPROP_LEVELVALUE,8,1.236);

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELCOLOR,8,clrGreen); // seviye rengi

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELSTYLE,8,STYLE_SOLID);//Düz çizgi

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELWIDTH,8,1); //--- seviye kalınlığı

ObjectSetFiboDescription("Fibo",8,"1.236");


ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+9,1.618);

ObjectSetDouble(0,"Fibo",OBJPROP_LEVELVALUE,9,1.618);

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELCOLOR,9,clrGreen); // seviye rengi

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELSTYLE,9,STYLE_SOLID);//Düz çizgi

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELWIDTH,9,1); //--- seviye kalınlığı

ObjectSetFiboDescription("Fibo",9,"1.618");


ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+10,-0.236);

ObjectSetDouble(0,"Fibo",OBJPROP_LEVELVALUE,10,-0.236);

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELCOLOR,10,clrBlue); // seviye rengi

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELSTYLE,10,STYLE_SOLID);//Düz çizgi

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELWIDTH,10,1); //--- seviye kalınlığı

ObjectSetFiboDescription("Fibo",10,"-0.236");


ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+11,-0,618);

ObjectSetDouble(0,"Fibo",OBJPROP_LEVELVALUE,11,-0.618);

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELCOLOR,11,clrBlue); // seviye rengi

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELSTYLE,11,STYLE_SOLID);//Düz çizgi

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELWIDTH,11,1); //--- seviye kalınlığı

ObjectSetFiboDescription("Fibo",11,"-0.618");


ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+12,-1);

ObjectSetDouble(0,"Fibo",OBJPROP_LEVELVALUE,12,-1);

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELCOLOR,12,clrBlue); // seviye rengi

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELSTYLE,12,STYLE_SOLID);//Düz çizgi

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELWIDTH,12,1); //--- seviye kalınlığı

ObjectSetFiboDescription("Fibo",12,"-1");


ObjectMove("Fibo", 1, X1, Y1);

ObjectMove("Fibo",0, X2, Y2);

dönüş(0);

}


 
int fFiboLevels(string Prefix,int Number
              ,int Bar1,double Price1
              ,int Bar2,double Price2
              ,int Bar3,double Price3
              ,color Цвет,color ЦветОтката
              ,int Видимость=0,int Толщина=1
              ,int УровнейПродолжения=6,int УровнейОтката=5
              ,int Стиль=STYLE_SOLID,int СтильУровня=STYLE_DOT
              ,bool Луч=false,bool Фон=false){
   int Error;
   string Name;
   datetime Time1=Time[Bar1],
            Time2=Time[Bar2],
            Time3=Time[Bar3];
   if( Bar1<=Bar2 || Bar2<=Bar3 || Bar3<1
    || Price1<Zero || Price2<Zero || Price3<Zero
    || Price3-MathMax(Price1,Price2)>Zero
    || MathMin(Price1,Price2)-Price3>Zero ) return(MyError);
   Name=Prefix+"Targets ";
   if( Number>0 ) Name=Name+Number;
   if( ObjectFind(Name)>=0 ) {
      if( !ObjectDelete(Name) ) {
         Error=GetLastError();
         PlaySound("alert.wav");
         Print("***** "+Name+" не создан, ошибка удаления "+Error);
         return(Error);
   }  }
   if( ObjectCreate(Name,OBJ_EXPANSION,0,Time1,Price1,Time2,Price2,Time3,Price3) ){
      if( !ObjectSet(Name, OBJPROP_FIBOLEVELS, УровнейПродолжения)
       || !ObjectSet(Name, OBJPROP_COLOR, Цвет)
       || !ObjectSet(Name, OBJPROP_STYLE, Стиль)
       || !ObjectSet(Name, OBJPROP_WIDTH, Толщина)
       || !ObjectSet(Name, OBJPROP_TIMEFRAMES, Видимость)
       || !ObjectSet(Name, OBJPROP_LEVELCOLOR, Цвет)
       || !ObjectSet(Name, OBJPROP_LEVELSTYLE, СтильУровня)
       || !ObjectSet(Name, OBJPROP_RAY, Луч)
       || !ObjectSet(Name, OBJPROP_BACK, Фон)
       || !ObjectSet(Name, OBJPROP_FIRSTLEVEL+0, 1)
       || !ObjectSet(Name, OBJPROP_FIRSTLEVEL+1, 1.618)
       || !ObjectSet(Name, OBJPROP_FIRSTLEVEL+2, 2.618)
       || !ObjectSet(Name, OBJPROP_FIRSTLEVEL+3, 4.236)
       || !ObjectSet(Name, OBJPROP_FIRSTLEVEL+4, 6.854)
       || !ObjectSet(Name, OBJPROP_FIRSTLEVEL+5, 11.09) ){
         Error=GetLastError();
         PlaySound("alert.wav");
         Print("****  "+Name+" - ошибка модификации параметров "+Error);
   }  }
   else {
      Error=GetLastError();
      PlaySound("alert.wav");
      Print("***** "+Name+" не создан, ошибка "+Error);
   }
   Name=Prefix+"Recoils ";
   if( Number>0 ) Name=Name+Number;
   if( ObjectFind(Name)>=0 ) {
      if( !ObjectDelete(Name) ) {
         Error=GetLastError();
         PlaySound("alert.wav");
         Print("***** "+Name+" не создан, ошибка удаления "+Error);
         return(Error);
   }  }
   if( ObjectCreate(Name,OBJ_FIBO,0,Time1,Price1,Time2,Price2) ){
      if( !ObjectSet(Name, OBJPROP_FIBOLEVELS, УровнейОтката)
       || !ObjectSet(Name, OBJPROP_COLOR, Цвет)
       || !ObjectSet(Name, OBJPROP_STYLE, Стиль)
       || !ObjectSet(Name, OBJPROP_TIMEFRAMES, Видимость)
       || !ObjectSet(Name, OBJPROP_LEVELCOLOR, ЦветОтката)
       || !ObjectSet(Name, OBJPROP_LEVELSTYLE, СтильУровня)
       || !ObjectSet(Name, OBJPROP_RAY, false)
       || !ObjectSet(Name, OBJPROP_BACK, Фон)
       || !ObjectSet(Name, OBJPROP_FIRSTLEVEL+0, 0)
       || !ObjectSet(Name, OBJPROP_FIRSTLEVEL+1, 0.236)
       || !ObjectSet(Name, OBJPROP_FIRSTLEVEL+2, 0.382)
       || !ObjectSet(Name, OBJPROP_FIRSTLEVEL+3, 0.618)
       || !ObjectSet(Name, OBJPROP_FIRSTLEVEL+4, 1) ){
         Error=GetLastError();
         PlaySound("alert.wav");
         Print("****  "+Name+" - ошибка модификации параметров "+Error);
   }  }
   else {
      Error=GetLastError();
      PlaySound("alert.wav");
      Print("***** "+Name+" не создан, ошибка "+Error);
   }
   return(Error);
}
 
jekk :

Bir fonksiyonda bu şekilde mi yazılabilir? Ama renk bireysel seviyelerde değişmiyor, belki bir yerde bir hata var ya da başka bir şey eklenmesi gerekiyor ???

Bir göstergeye veya danışmana mı ihtiyacınız var? Bir danışman için, sadece bu seviyelerin değerlerinin hesaplanması yeterliyse, güzellik ve renk hiç gerekli değildir.

 
Bir danışman için - Bir sinyal değeri atamak için her seviyeyi ayırmak için hangi işlevin kullanılabileceğini anlamak istiyorum. ZigZag üzerinde düşünerek, koordinatları buluruz - danışman Fibonacci seviyelerini çizer ve her seviyeden geri çekilir (yayılmadan biraz daha fazla) ve daha paralel seviyeler reçete eder - bunları bir emir açma kararları verirken temel olarak alırız.
 
jekk :
Bir danışman için - Bir sinyal değeri atamak için her seviyeyi ayırmak için hangi işlevin kullanılabileceğini anlamak istiyorum. ZigZag üzerinde düşünerek, koordinatları buluruz - danışman Fibonacci seviyelerini çizer ve her seviyeden geri çekilir (yayılmadan biraz daha fazla) ve daha paralel seviyeler reçete eder - bunları bir emir açma kararları verirken temel olarak alırız.

OBJ_FIBO için renk tüm seviyeler için aynıdır. Çok sıkıysa, farklı renklerde basit OBJ_TRENDLINE çizgilerle fibolar çizin.
 
jekk :
Bir danışman için - Bir sinyal değeri atamak için her seviyeyi ayırmak için hangi işlevin kullanılabileceğini anlamak istiyorum. ZigZag üzerinde düşünerek, koordinatları buluruz - danışman Fibonacci seviyelerini çizer ve her seviyeden geri çekilir (yayılmadan biraz daha fazla) ve daha paralel seviyeler reçete eder - bunları bir emir açma kararları verirken temel olarak alırız.

Hiçbir şeyi ayırmaya gerek yok, bir formül alın ve her seviyeyi doğrudan EA'da hesaplayın, elde edilen değerlerle çalışın, neden renk ve çizgiler?
 
evillive :

Bir göstergeye veya danışmana mı ihtiyacınız var? Bir danışman için, sadece bu seviyelerin değerlerinin hesaplanması yeterliyse, güzellik ve renk hiç gerekli değildir.

görsel kısım her zaman açıklığa kavuşturmak için mevcut olmalıdır (en azından başlangıçta, kesinlikle)
 
evillive :

Hiçbir şeyi ayırmaya gerek yok, bir formül alın ve her seviyeyi doğrudan EA'da hesaplayın, elde edilen değerlerle çalışın, neden renk ve çizgiler?

Formül neye benziyor, bir örnek gösterebilir misiniz?
 
jekk :

Formül neye benziyor, bir örnek gösterebilir misiniz?

Pekala, buna bir formül demek zor: minimum ve maksimum fiyatları alıyoruz -% 0 ve %100 ve bunları seviyelere ayırıyoruz, değerleri her yerde yazıyor - % 23.6,% 38.2,% 50,% 61.8 , %161,8 (veya 0,236, 0,382 , 0,5, 0,618, 1,618, vb. bölü 0,618, 3 haneye yuvarlanır).

1.3254 ve 1.3896 fiyatları için şöyle bir şey:

Düz geri
%161.80 Düzey: 1.4293 %0.0 Seviye: 1.3896
%100,0 Düzey: 1.3896 %23.60 Seviye: 1.3744
%61.8 Düzey: 1.3651 %38.2 Düzey: 1.3651
%50.0 Seviyesi: 1.3575 %50.0 Seviyesi: 1.3575
%38.2 Düzey: 1.3499 %61.8 Düzey: 1.3499
%23,6 Seviye:
1.3406 %100,0 Düzey: 1.3254
%0.0 Seviye: 1.3254 %161.8 Düzey: 1.2857


yani (Fiyat(100%)-Fiyat(0))*Seviye(binde biri olarak) + Doğrudan hesaplama için Fiyat(0) ve Fiyat(100%) - (Fiyat(100%)-Fiyat(0)) * Düzey (binde) - ters hesaplama için.

Her bir değer için, paletten seçim yapabileceğiniz herhangi bir renkle kendi ayrı çizginizi çizebilirsiniz.