MQL4의 피보나치 수준

 
모두에게 좋은 하루! 문제가 생겼습니다. 피보나치 레벨 개체를 생성할 때 각 개별 레벨을 다른 색상으로 만들 수 있고 어떻게 Expert Advisor의 신호 값을 별도의 레벨에 할당할 수 있습니까? 미리 감사드립니다! 진심으로, 유진!
 
EA에서 즉시 값을 계산하는 것이 좋습니다
 

이것이 함수로 작성될 수 있는 방법입니까? 그러나 색상은 개별 수준에서 변경되지 않습니다. 어딘가에 오류가 있거나 다른 것을 추가해야 할 수 있습니다 ???

int fibo(날짜 시간 X1, 더블 Y1, 날짜 시간 X2, 더블 Y2)

{

ObjectCreate("피보", OBJ_FIBO , 0, 0, 0, 0, 0); // 피보나치 레벨 객체 생성

ObjectSet("피보",OBJPROP_COLOR,clrRed); // 대각선 색상

//ObjectSet("피보",OBJPROP_LEVELCOLOR,clrBlue); // 레벨의 색상은 동일합니다.

//ObjectSetInteger(0,"Fibo",OBJPROP_BACK,true);//--- 앞(false) 또는 뒤(true)에 표시


ObjectSet("피보",OBJPROP_FIBOLEVELS,13); //객체 레벨 수 설정


ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+0,0.000);//객체 레벨별 값 설정

ObjectSetDouble(0,"피보",OBJPROP_LEVELVALUE,0,0.000);

ObjectSetInteger(0,"피보",OBJPROP_LEVELCOLOR,0,clrGreen); // 레벨 색상

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELSTYLE,0,STYLE_SOLID);//실선

ObjectSetInteger(0,"피보",OBJPROP_LEVELWIDTH,0,1); //--- 레벨 두께

ObjectSetFiboDescription("피보",0,"0.000");


ObjectSet("피보",OBJPROP_FIRSTLEVEL+1,0.146);

ObjectSetDouble(0,"피보",OBJPROP_LEVELVALUE,1,0.146);

ObjectSetInteger(0,"피보",OBJPROP_LEVELCOLOR,1,clrGreen); // 레벨 색상

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELSTYLE,1,STYLE_SOLID);//실선

ObjectSetInteger(0,"피보",OBJPROP_LEVELWIDTH,1,1); //--- 레벨 두께

ObjectSetFiboDescription("피보",1,"0.146");


ObjectSet("피보",OBJPROP_FIRSTLEVEL+2,0.236);

ObjectSetDouble(0,"피보",OBJPROP_LEVELVALUE,2,0.236);

ObjectSetInteger(0,"피보",OBJPROP_LEVELCOLOR,2,clrGreen); // 레벨 색상

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELSTYLE,2,STYLE_SOLID);//실선

ObjectSetInteger(0,"피보",OBJPROP_LEVELWIDTH,2,1); //--- 레벨 두께

ObjectSetFiboDescription("피보",2,"0.236");


ObjectSet("피보",OBJPROP_FIRSTLEVEL+3,0.382);

ObjectSetDouble(0,"피보",OBJPROP_LEVELVALUE,3,0.382);

ObjectSetInteger(0,"피보",OBJPROP_LEVELCOLOR,3,clrGreen); // 레벨 색상

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELSTYLE,3,STYLE_SOLID);//실선

ObjectSetInteger(0,"피보",OBJPROP_LEVELWIDTH,3,1); //--- 레벨 두께

ObjectSetFiboDescription("피보",3,"0.382");



ObjectSet("피보",OBJPROP_FIRSTLEVEL+4,0.5);

ObjectSetDouble(0,"피보",OBJPROP_LEVELVALUE,4,0.5);

ObjectSetInteger(0,"피보",OBJPROP_LEVELCOLOR,4,clrGreen); // 레벨 색상

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELSTYLE,4,STYLE_SOLID);//실선

ObjectSetInteger(0,"피보",OBJPROP_LEVELWIDTH,4,1); //--- 레벨 두께

ObjectSetFiboDescription("피보",4,"0.5");


ObjectSet("피보",OBJPROP_FIRSTLEVEL+5,0.618);

ObjectSetDouble(0,"피보",OBJPROP_LEVELVALUE,5,0.618);

ObjectSetInteger(0,"피보",OBJPROP_LEVELCOLOR,5,clrGreen); // 레벨 색상

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELSTYLE,5,STYLE_SOLID);//실선

ObjectSetInteger(0,"피보",OBJPROP_LEVELWIDTH,5,1); //--- 레벨 두께

ObjectSetFiboDescription("피보",5,"0.618");


ObjectSet("피보",OBJPROP_FIRSTLEVEL+6,0.764);

ObjectSetDouble(0,"피보",OBJPROP_LEVELVALUE,6,0.764);

ObjectSetInteger(0,"피보",OBJPROP_LEVELCOLOR,6,clrGreen); // 레벨 색상

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELSTYLE,6,STYLE_SOLID);//실선

ObjectSetInteger(0,"피보",OBJPROP_LEVELWIDTH,6,1); //--- 레벨 두께

ObjectSetFiboDescription("피보",6,"0.764");


ObjectSet("피보",OBJPROP_FIRSTLEVEL+7,1);

ObjectSetDouble(0,"피보",OBJPROP_LEVELVALUE,7,1);

ObjectSetInteger(0,"피보",OBJPROP_LEVELCOLOR,7,clrGreen); // 레벨 색상

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELSTYLE,7,STYLE_SOLID);//실선

ObjectSetInteger(0,"피보",OBJPROP_LEVELWIDTH,7,1); //--- 레벨 두께

ObjectSetFiboDescription("피보",7,"1");


ObjectSet("피보",OBJPROP_FIRSTLEVEL+8,1.236);

ObjectSetDouble(0,"피보",OBJPROP_LEVELVALUE,8,1.236);

ObjectSetInteger(0,"피보",OBJPROP_LEVELCOLOR,8,clrGreen); // 레벨 색상

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELSTYLE,8,STYLE_SOLID);//실선

ObjectSetInteger(0,"피보",OBJPROP_LEVELWIDTH,8,1); //--- 레벨 두께

ObjectSetFiboDescription("피보",8,"1.236");


ObjectSet("피보",OBJPROP_FIRSTLEVEL+9,1.618);

ObjectSetDouble(0,"피보",OBJPROP_LEVELVALUE,9,1.618);

ObjectSetInteger(0,"피보",OBJPROP_LEVELCOLOR,9,clrGreen); // 레벨 색상

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELSTYLE,9,STYLE_SOLID);//실선

ObjectSetInteger(0,"피보",OBJPROP_LEVELWIDTH,9,1); //--- 레벨 두께

ObjectSetFiboDescription("피보",9,"1.618");


ObjectSet("피보",OBJPROP_FIRSTLEVEL+10,-0.236);

ObjectSetDouble(0,"피보",OBJPROP_LEVELVALUE,10,-0.236);

ObjectSetInteger(0,"피보",OBJPROP_LEVELCOLOR,10,clrBlue); // 레벨 색상

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELSTYLE,10,STYLE_SOLID);//실선

ObjectSetInteger(0,"피보",OBJPROP_LEVELWIDTH,10,1); //--- 레벨 두께

ObjectSetFiboDescription("피보",10,"-0.236");


ObjectSet("피보",OBJPROP_FIRSTLEVEL+11,-0.618);

ObjectSetDouble(0,"피보",OBJPROP_LEVELVALUE,11,-0.618);

ObjectSetInteger(0,"피보",OBJPROP_LEVELCOLOR,11,clrBlue); // 레벨 색상

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELSTYLE,11,STYLE_SOLID);//실선

ObjectSetInteger(0,"피보",OBJPROP_LEVELWIDTH,11,1); //--- 레벨 두께

ObjectSetFiboDescription("피보",11,"-0.618");


ObjectSet("피보",OBJPROP_FIRSTLEVEL+12,-1);

ObjectSetDouble(0,"피보",OBJPROP_LEVELVALUE,12,-1);

ObjectSetInteger(0,"피보",OBJPROP_LEVELCOLOR,12,clrBlue); // 레벨 색상

ObjectSetInteger(0,"Fibo",OBJPROP_LEVELSTYLE,12,STYLE_SOLID);//실선

ObjectSetInteger(0,"피보",OBJPROP_LEVELWIDTH,12,1); //--- 레벨 두께

ObjectSetFiboDescription("피보",12,"-1");


ObjectMove("피보", 1, X1, Y1);

ObjectMove("피보",0, X2, Y2);

반환(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 :

이것이 함수로 작성될 수 있는 방법입니까? 그러나 색상은 개별 수준에서 변경되지 않습니다. 어딘가에 오류가 있거나 다른 것을 추가해야 할 수도 있습니다 ???

지표나 조언자가 필요하십니까? 고문의 경우 이러한 수준의 값 계산만으로 충분하며 아름다움과 색상은 전혀 필요하지 않습니다.

 
조언자의 경우 - 신호 값을 할당하기 위해 각 레벨을 분리하는 데 어떤 기능을 사용할 수 있는지 알고 싶습니다. 지그재그에 대해 생각하면서 우리는 좌표를 찾습니다. 고문은 피보나치 수준 을 그리고 각 수준에서 후퇴하고(스프레드보다 약간 높음) 더 많은 평행 수준을 처방합니다. 우리는 그것들을 주문을 열기 위한 결정을 내리는 기준으로 삼습니다.
 
jekk :
조언자의 경우 - 신호 값을 할당하기 위해 각 레벨을 분리하는 데 어떤 기능을 사용할 수 있는지 알고 싶습니다. 지그재그에 대해 생각하면서 우리는 좌표를 찾습니다. 고문은 피보나치 수준을 그리고 각 수준에서 후퇴하고(스프레드보다 약간 높음) 더 많은 평행 수준을 처방합니다. 우리는 그것들을 주문을 열기 위한 결정을 내리는 기준으로 삼습니다.

OBJ_FIBO의 경우 색상은 모든 레벨에서 동일합니다. 너무 빡빡하면 다양한 색상의 단순한 OBJ_TRENDLINE 선으로 fibo를 그립니다.
 
jekk :
조언자의 경우 - 신호 값을 할당하기 위해 각 레벨을 분리하는 데 어떤 기능을 사용할 수 있는지 알고 싶습니다. 지그재그에 대해 생각하면서 우리는 좌표를 찾습니다. 고문은 피보나치 수준을 그리고 각 수준에서 후퇴하고(스프레드보다 약간 높음) 더 많은 평행 수준을 처방합니다. 우리는 그것들을 주문을 열기 위한 결정을 내리는 기준으로 삼습니다.

아무것도 분리할 필요가 없습니다. 공식을 취하고 EA에서 직접 각 레벨을 계산하고, 얻은 값으로 작업합니다. 왜 색상과 선이 전혀 필요하지 않습니까?
 
evillive :

지표나 조언자가 필요하십니까? 고문의 경우 이러한 수준의 값 계산만으로 충분하며 아름다움과 색상은 전혀 필요하지 않습니다.

시각적 부분은 명확하게 하기 위해 항상 존재해야 합니다(적어도 처음에는 확실히).
 
evillive :

아무것도 분리할 필요가 없습니다. 공식을 취하고 EA에서 직접 각 레벨을 계산하고, 얻은 값으로 작업합니다. 왜 색상과 선이 전혀 필요하지 않습니까?

공식은 어떻게 생겼습니까? 예를 들어 주시겠습니까?
 
jekk :

공식은 어떻게 생겼습니까? 예를 보여 주시겠습니까?

글쎄, 그것을 공식이라고 부르기는 어렵습니다. 우리는 최소 및 최대 가격 (0% 및 100%)을 취하여 레벨로 나누고 값은 도처에 기록됩니다( 23.6%, 38.2%, 50%, 61.8%). , 161.8%(또는 0.236, 0.382, 0.5, 0.618, 1.618 등을 0.618로 나눈 값을 3자리로 반올림)

가격 1.3254 및 1.3896의 경우 다음과 같습니다.

똑바로
161.80% 레벨: 1.4293 0.0% 수준: 1.3896
100.0% 수준: 1.3896 23.60% 레벨: 1.3744
61.8% 레벨: 1.3651 38.2% 레벨: 1.3651
50.0% 레벨: 1.3575 50.0% 레벨: 1.3575
38.2% 레벨: 1.3499 61.8% 레벨: 1.3499
23.6% 레벨:
1.3406 100.0% 수준: 1.3254
0.0% 수준: 1.3254 161.8% 레벨: 1.2857


즉, (가격(100%)-가격(0%))*수준(단위: 천분의 일) + 가격(0%) 직접 계산 및 가격(100%) - (가격(100%)-가격(0%)) * 레벨(1000분의 1) - 역계산용.

각 값에 대해 팔레트에서 선택할 색상으로 별도의 선을 그릴 수 있습니다.

사유: