[ARCHIVE] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 5. - 페이지 297

 
hoz :


이상형은 없다! 그냥 일반적인 관점에서 말하자면, 나는 누가 어떻게 쓰는가를 봅니다. 때로는 채택할 수 있는 몇 가지 트릭을 찾습니다. 때로는 코드를 전혀 읽을 수 없는 경우가 있습니다. 예를 들어 tarasBY처럼. 내가 할 수 있는 한, 그것은 읽지 않을 것입니다. 그것은 읽기, 세그먼트에서 이해할 수 있는 것, 그리고 bam! 또한 무화과가 아니라 명확하지 않습니다. 그리고 너무 많은 장소.

친구들의 요청으로 룰을 디컴파일했는데 tarasBY를 코드로 사용하는 것보다 이해하기 쉽습니다. 이것은 정상일 수도 있지만 많은 다운로더가 이를 이해할 수 있을지는 의문입니다. 너무 발전하여 이해하기 어려운 사람들은 다운로드하지 않을 것입니다 ... 그러면 질문이 생깁니다. 왜 거기에 게시합니까? :)

나도 안 써! 맹목적으로 무언가를 시도하는 이유는 모든 것이 무엇인지, 왜 그런지 명확해야합니다. 그리고 출판물은 광고용이며 모든 것이 명확하면 다운로드하고 아무 것도 주문하지 않습니다.
 
tara :
시간은 그리니치 표준시로 측정됩니다.
서버보다 1시간 정도 적은 시간이 있지만 여전히 중부 유럽에 따라 살고 있습니다. 그리고 서버가 GMT라면 3시간은 더 있어야 합니다. 자러 갔다. 폭발 없는 굿나잇!
 

네, 자고 있어요. 잘 자.

카탈루냐어로 뭐라고 합니까?

 
부에나 나이트! Pero ahora ya es madrugada! 하지만 지금은 밤이 늦었습니다!
 
GaryKa :
별말씀을요
예, 두 자연 로그의 비율이 있습니다. 이제 "대수의 밑수 바꾸기"의 공식을 살펴보십시오. 즉, 결과는 이 표현식입니다.
bd_LOTSTEP에 대한 밑이 10인 로그와 동일합니다. MQL에는 10진 로그에 대한 별도의 함수가 없으므로 이 변환을 사용합니다.


그는 같은 것에 대해 말했다. Kondovy my language ... 프로그래머가 수학을 두려워하지 않거나 이것이 코드 읽기로부터 보호하는 것 같습니다 (농담). 저는 잘 모르겠습니다. 제 개인적인 의견은 수학이 wild if 대신 switch...case와 같은 방식으로 알고리즘을 단순화한다는 것입니다.
 
rigonich :

SetVLine() 표시;
 
좋은 하루입니다. 어드바이저에 커스텀 인디케이터 를 삽입하는 방법을 알아내려고 노력했습니다. 컴파일은 잘되지만 완전히 작성됩니다.

잘못된 데이터, 오류가 무엇인지 알려주십시오. "저작권"을 제외한 모든 코드를 삽입하십시오.

외부 intPeriodP=12;
외부 정수 TimeFrame=0;
더블 P_up0,P_up1,FrApPrise;
//+----------------------------------------------- --------------------+
//| 전문가 초기화 기능 |
//+----------------------------------------------- --------------------+
정수 초기화()
{
//----

//----
반환(0);
}
//+----------------------------------------------- --------------------+
//| 전문가 초기화 해제 기능 |
//+----------------------------------------------- --------------------+
정수 초기화()
{
//----

//----
반환(0);
}
//+----------------------------------------------- --------------------+
//| 전문가 시작 기능 |
//+----------------------------------------------- --------------------+
정수 시작()
{
//----

P_up0=iCustom(Symbol(),Period(),"가격 채널",PeriodP,0,0);
P_up1=iCustom(Symbol(),Period(),"reserve-xrust",FrApPrise,0,0);
{Comment("가격 채널 표시=",P_up0,"\n","xrust display=",P_up1);}
//----
반환(0);
}



두 가지 지표를 사용

1)https://www.mql5.com/ru/code/8908

터키 가격 channel.mq4

2)https://www.mql5.com/ru/code/8318

칠면조 Fractal_Level_Xrust_V2.mq4

제발 도와주세요, 1은 얼마나 보여주지만, 두 번째는 보여주고 싶지 않습니까?
 
gyfto :

그는 같은 것에 대해 말했다. Kondovy my language ... 프로그래머가 수학을 두려워하지 않거나 이것이 코드 읽기로부터 보호하는 것 같습니다 (농담). 저는 잘 모르겠습니다. 제 개인적인 의견은 수학이 wild if 대신 switch...case와 같은 방식으로 알고리즘을 단순화한다는 것입니다.

그 코드에는 한 가지 결함이 있습니다. 다음은 컨텍스트 에서 제외되었습니다.


요점은 그 표현이

 MathCeil ( MathAbs ( MathLog ( 0.25 ) / MathLog ( 10 ))) = 1

따라서 로트 값은 소수점 이하 한 자리까지 반올림됩니다.


그러나 계속 읽으십시오. 도움이 될 수 있습니다.

 

내 질문에 대한 설명에 약간 추가했습니다. 크런치 표시기를 다시 수정했습니다. 여기에 코드가 있습니다.

#property copyright "#Copyright © 2008, XrustSolution.#"
#속성 링크 "#xrust.ucoz.net#"

#속성 표시기_차트_창
extern int TimeFrame=0;//If=0이면 현재


extern string FrApNam="Ap";//업 프랙탈에 해당하는 라인 이름
extern string FrDnNam="Dn";//다운 프랙탈에 해당하는 라인 이름

//------------------------------------------------ ------------------------------+
이중 FrPrise;
이중 FrApPrise=0,FrDnPrise=0;

//+----------------------------------------------- ------------------------------+
무효 초기화(){

if(TimeFrame==0){TimeFrame=Period();}
IndicatorShortName("Factal_Level_Xrust"+TimeFrame);
FrApNam=StringConcatenate(FrApNam,TimeFrame);
FrDnNam=StringConcatenate(FrDnNam,TimeFrame);
반품;}
무효 deinit(){
개체 삭제(FrDnName);
개체 삭제(FrApName);
논평(" ");
반품;}
//+----------------------------------------------- ------------------------------+
정수 시작()
{
int counted_bars=IndicatorCounted();
정수 제한;
이중 온도;
정수 i,j,k;
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
한도=막대 개수 계산된 막대기;
//------------------------------------------------ ------------------------------+

선형();
LineDn();
문자열 FAP=DoubleToStr((FrApPrise),숫자);
문자열 FDP=DoubleToStr((FrDnPrise),숫자);
int diap=MathRound((FrApPrise-FrDnPrise)/포인트);
{Comment("TimeFrame="+TimeFrame+
"\nAppPrise111="+FAP+
"\nDnPrise="+FDP+
"\n프랙탈 채널 ="
+dap+"포인트");}

리턴(0);
}
//------------------------------------------------ ------------------------------+
// 가격이 변경된 경우 이름으로 수평선을 다시 그립니다. |
//------------------------------------------------ ------------------------------+
무효 LineDn(){
FrPrise=NormalizeDouble(FindNearFractal(0,TimeFrame,MODE_LOWER),MarketInfo(Symbol(),MODE_DIGITS));
FrPrise=NormalizeDouble(FrPrise,MarketInfo(Symbol(),MODE_DIGITS));
//댓글(FrPrise);
if(ObjectFind(FrDnNam)==0){
if(ObjectGet(FrDnNam,OBJPROP_PRICE1)==FrPrise){반환;}}
FrDnPrise=FrPrise;
개체 삭제(FrDnName);

창 다시 그리기();
반품;}
//------------------------------------------------ ------------------------------+
// 가격이 변경된 경우 이름으로 수평선을 다시 그립니다. |
//------------------------------------------------ ------------------------------+
무효 LineAp(){
FrPrise=NormalizeDouble(FindNearFractal(0,TimeFrame,MODE_UPPER),MarketInfo(Symbol(),MODE_DIGITS));
FrPrise=NormalizeDouble(FrPrise,MarketInfo(Symbol(),MODE_DIGITS));
if(ObjectFind(FrApNam)==0){
if(ObjectGet(FrApNam,OBJPROP_PRICE1)==FrPrise){반환;}}
FrApPrise=FrPrise;
개체 삭제(FrApName);

창 다시 그리기();
반품;}
//------------------------------------------------ ------------------------------+
// 김 존경하고 존경합니다 !!! |
//+----------------------------------------------- ------------------------------+
//| 저자 : Kim Igor V. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------- ------------------------------+
//| 버전 : 2006년 7월 10일 |
//| 설명 : 가장 가까운 프랙탈을 검색합니다. 가격 수준을 반환합니다. |
//+----------------------------------------------- ------------------------------+
//| 옵션: |
//| sy - 기기 이름("" 또는 NULL - 현재 기호) |
//| tf - 기간( 0 - 현재 TF) |
//| 모드 - 프랙탈 유형(MODE_LOWER|MODE_UPPER) |
//+----------------------------------------------- ------------------------------+
이중 FindNearFractal(문자열 sy="0", int tf=0, int 모드=MODE_LOWER) {
if (sy=="" || sy=="0") sy=Symbol();
이중 f=0;
int d=MarketInfo(sy, MODE_DIGITS), s;
if (d==0) if (StringFind(sy, "JPY")<0) d=4; 그렇지 않으면 d=2;

(s=2; s<100; s++) {
f=iFractals(sy, tf, 모드, s);
if (f!=0) return(NormalizeDouble(f, d));
}
Print("FindNearFractal(): 프랙탈을 찾을 수 없습니다");
리턴(0);
}

차트에 선이 필요하지 않고 두 개의 숫자(이 정신 지표 중 하나)만 있으면 됩니다.

 
palomnik :

내 질문에 대한 설명에 약간 추가했습니다. 크런치 표시기를 다시 수정했습니다. 여기에 코드가 있습니다.

대답을 원하면 신발을 읽는 사람들을 존중하십시오.

코드는 SRC 버튼 을 사용하여 삽입해야 합니다. 다른 서식 도구 중에서 메시지의 편집 필드 위에 있습니다.