이것이 함수로 작성될 수 있는 방법입니까? 그러나 색상은 개별 수준에서 변경되지 않습니다. 어딘가에 오류가 있거나 다른 것을 추가해야 할 수 있습니다 ???
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); }
이것이 함수로 작성될 수 있는 방법입니까? 그러나 색상은 개별 수준에서 변경되지 않습니다. 어딘가에 오류가 있거나 다른 것을 추가해야 할 수도 있습니다 ???
지표나 조언자가 필요하십니까? 고문의 경우 이러한 수준의 값 계산만으로 충분하며 아름다움과 색상은 전혀 필요하지 않습니다.
조언자의 경우 - 신호 값을 할당하기 위해 각 레벨을 분리하는 데 어떤 기능을 사용할 수 있는지 알고 싶습니다. 지그재그에 대해 생각하면서 우리는 좌표를 찾습니다. 고문은 피보나치 수준을 그리고 각 수준에서 후퇴하고(스프레드보다 약간 높음) 더 많은 평행 수준을 처방합니다. 우리는 그것들을 주문을 열기 위한 결정을 내리는 기준으로 삼습니다.
OBJ_FIBO의 경우 색상은 모든 레벨에서 동일합니다. 너무 빡빡하면 다양한 색상의 단순한 OBJ_TRENDLINE 선으로 fibo를 그립니다.
조언자의 경우 - 신호 값을 할당하기 위해 각 레벨을 분리하는 데 어떤 기능을 사용할 수 있는지 알고 싶습니다. 지그재그에 대해 생각하면서 우리는 좌표를 찾습니다. 고문은 피보나치 수준을 그리고 각 수준에서 후퇴하고(스프레드보다 약간 높음) 더 많은 평행 수준을 처방합니다. 우리는 그것들을 주문을 열기 위한 결정을 내리는 기준으로 삼습니다.
아무것도 분리할 필요가 없습니다. 공식을 취하고 EA에서 직접 각 레벨을 계산하고, 얻은 값으로 작업합니다. 왜 색상과 선이 전혀 필요하지 않습니까?
지표나 조언자가 필요하십니까? 고문의 경우 이러한 수준의 값 계산만으로 충분하며 아름다움과 색상은 전혀 필요하지 않습니다.
아무것도 분리할 필요가 없습니다. 공식을 취하고 EA에서 직접 각 레벨을 계산하고, 얻은 값으로 작업합니다. 왜 색상과 선이 전혀 필요하지 않습니까?
공식은 어떻게 생겼습니까? 예를 들어 주시겠습니까?
공식은 어떻게 생겼습니까? 예를 보여 주시겠습니까?
글쎄, 그것을 공식이라고 부르기는 어렵습니다. 우리는 최소 및 최대 가격 (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) - 역계산용.
각 값에 대해 팔레트에서 선택할 색상으로 별도의 선을 그릴 수 있습니다.