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

 
Chiripaha :

: )))))))) 네, 그러죠. 나는 모든 비난을 받아들입니다! - 다시 한 번 사과드립니다. - 이것은 모두 고도로 발달 된 (특별 연습)의 비용입니다.

창의적, 비유적, 시적 등 측면 - 결국 사람은 창의적이고 합리적이라는 두 개의 반구가 있습니다. 내 잘못은 이것을 보고 수정하지 않은 것입니다.

따라서 귀하의 모든 주장은 주소에 있으며 저는 유죄입니다.

하지만 문제는 여전히 미해결...

결국 어떻게 해결할 것인가?

내가 뭔가를 놓쳤다고 생각한다면 명확히 해주세요. 피드백 기술("듣기" 기능)을 이해하지만 아직 해결책을 보지 못했습니다.

예를 들어 Ask = 1.20667 값에서 Double 형식으로 반올림하지 않고 소수점 이하 세 번째 자리까지 원하는 숫자를 얻는 방법은 무엇입니까? - "StrToDouble(DoubleToStr(Ask,3)) = 1.2100 // 1.2100은 결과 결과입니다(즉, 반올림)"와 같은 솔루션이 작동하지 않았습니다.

관용과 이해에 미리 감사드립니다.

DoubleToStr(Ask,3) != DoubleToStr(Ask, Digits ) !!! - 봤어야 했다.

그리고 솔루션은 파일에 있습니다(이것은 테스트 스크립트입니다).

파일:
test_ind.mq4  2 kb
 
alsu :

나는 당신의 코드를 보았다 .... 당신은 너무 혼란스러워)))

나는 우리가 메모리에 저장하기에 충분하기 때문에(또는 현재 막대가 HST로 작성되어야 하기 때문에 저장하지 않아도 됩니다. 그렇지 않으면 차트가 업데이트되지 않음) 현재 막대는 6개의 TOHLCV 숫자이며 틱이 도착하면 필요에 따라 업데이트하고 지정된 조건(TimeCurrent()-O>1)에 따라 막대를 잘라냅니다.

그런 식으로 코드를 다시 작업해 보세요. 8배 줄어들 것입니다. 보장합니다(테스트됨:)


이와 같이? 알고리즘을 재설계하고, 누산기를 제거하고, 전문가로 전환하고, 강세-약세에 눈금 그라데이션을 추가하고, 다른 알고리즘을 사용하여 캔들 테일을 추가하고, 모든 것을 주석 처리했습니다. 아직 확인할 사항이 없고, 주말에는 진드기가 없습니다. 볼륨과 관련하여 - 그것은 FileFlush 에 있었던 것 같으며 버퍼와도 작동합니다. 미래를 위해 FileSeek와 FileFlush 사이에 무언가를 넣으겠다고 맹세했습니다 ...
파일:
elz.jp.mq4  23 kb
 
IgRU4ek :

DoubleToStr(Ask,3) != DoubleToStr(Ask, Digits ) !!! - 봤어야 했다.

그리고 솔루션은 파일에 있습니다(이것은 테스트 스크립트입니다).


매우 감사합니다.

나는 여전히 메커니즘을 이해하지 못합니다. 내 버전에서 작동하지 않는 이유와 "DoubleToStr(Ask,3) != DoubleToStr(Ask, Digits )" - 분명히 기능의 모든 기능이 참조에 공개된 것은 아닙니다. 도서.

귀하의 기능을 분해했습니다. 해결 과정을 이해했습니다. 그러나 프로그래밍 언어의 기능 집합이 각 사용자에 대해 이러한 일반적인 기능을 스스로 생성하지 않고 일반적인 작업을 해결하는 역할을 하기 때문에 보다 "단순한" 솔루션이 있어야 한다고 확신했습니다. DoubleToStr()이 이 문제를 해결한다고 순진하게 가정했습니다. - 나는 그 적용의 의미를 이해하지 못합니다(뉘앙스는 무엇입니까). 나는 프로그래머가 아니라 그러한 세부 사항에 "도달"하는 일반 사용자입니다. 이 경우 제작 제품을 사용하는 경우 모든 시간을 프로그래밍 세부 사항에 할애합니다.

다시 한번 감사합니다. 이제 모든 것을 코드에 넣으려고 합니다. 모든 것이 작동하기를 바랍니다.

 
Chiripaha :

매우 감사합니다.

나는 여전히 메커니즘을 이해하지 못합니다. 내 버전에서 작동하지 않는 이유와 "DoubleToStr(Ask,3) != DoubleToStr(Ask, Digits )" - 분명히 기능의 모든 기능이 참조에 공개된 것은 아닙니다. 도서.

귀하의 기능을 분해했습니다. 해결 과정을 이해했습니다. 그러나 프로그래밍 언어의 기능 집합이 각 사용자에 대해 이러한 일반적인 기능을 스스로 생성하지 않고 일반적인 작업을 해결하는 역할을 하기 때문에 보다 "단순한" 솔루션이 있어야 한다고 확신했습니다. DoubleToStr()이 이 문제를 해결한다고 순진하게 가정했습니다. - 나는 그 적용의 의미를 이해하지 못합니다(뉘앙스는 무엇입니까). 나는 프로그래머가 아니라 그러한 세부 사항에 "도달"하는 일반 사용자입니다. 이 경우 제작 제품을 사용하는 경우 모든 시간을 프로그래밍 세부 사항에 할애합니다.

다시 한번 감사합니다. 이제 모든 것을 코드에 넣으려고 합니다. 모든 것이 작동하기를 바랍니다.

DoubleToStr()은 두 단계로 숫자를 변환합니다. 먼저 (수학 규칙에 따라) 숫자를 원하는 부호로 반올림한 다음 문자열로 변환합니다.
 

당신의 경우를 위해 시도하십시오

이중 x = MathFloor (y*1000)/1000;

 
IgRU4ek :
DoubleToStr()은 두 단계로 숫자를 변환합니다. 먼저 (수학 규칙에 따라) 숫자를 원하는 부호로 반올림한 다음 문자열로 변환합니다.


설명 감사합니다. 물론 저는 이것을 모르고 이 경우 StrToDouble()에서 죄를 지었습니다. 그러나 설명 후에 나는 이제 둘 다 라운드한다고 가정합니다.

반올림하는 이유 - 명확하지 않습니다. 왜냐하면 반올림이 필요한 경우 이 경우 먼저 k-스레드 반올림 기능(필요한 경우)을 사용하는 것이 좋습니다. 동일한 정규화입니다. 그러면 반올림이 있거나 없는 가능성이 있습니다. 그래서 추가 힙이 나옵니다. 또한 이미 존재하는 숫자를 다른 유형으로 만들어야 할 때 반올림하는 이유가 명확하지 않습니다. (번호) 이미 받았는데 왜 추가로 칠하세요.

 
Roger :

당신의 경우를 위해 시도하십시오

더블 x = MathFloor(y*1000)/1000;


정확히! 멋진 결정입니다. 전에 그를 만난 적이 있지만 내 경우에는 뭔가를 놓쳤습니다. 정말 고마워요, 알렉산더! 이제 2개의 솔루션이 있습니다! : )) (만화 "Prostokvashino")
 

그런 이론적인 질문. 종가 는 틱의 관점에서 볼 때 캔들 마지막 틱의 매수인가 매도인가? 입찰가가 Close[0]으로 작성되면 슬라이더의 견적이 회의록과 동일하다는 것을 알았습니다.

생각과 생각... 이론상 입찰...

 
Zhunko :
많은 실수. 예를 보고 유추할 수 있습니까?


기본적으로 같은 것입니다. 내가 알기로는 교과서에 이에 대한 내용이 전혀 없지만 이상하게도 전문가와 도서관을 연결하는 수단으로만 포함하면 된다.

포함은 함수를 가져오고 가져올 함수를 선언합니다. 선언 사이에 부호가 있습니다 .

여기에 포함 및 라이브러리를 작성했습니다(하나의 기능이 있지만 실제로는 테스트용입니다).

여기에 포함:

 //+------------------------------------------------------------------+
//|                                       HozIncludeToScalper_M1.mqh |
//|                                                              hoz |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "hoz"
#property link       ""

#import "Scalper_M1_lbr.ex4"

//+-------------------------------------------------------------------------------------+
//| Получаем машку с заданными параметрами                                              |
//+-------------------------------------------------------------------------------------+
double GetMA( int typeOfMA);

// Очередная функция

// Очередная функция

// Очередная функция

#import

모든 필요한(특정 올빼미가 사용하는) 함수가 선언되면 끝에 #import 를 넣습니다.

다음은 라이브러리 자체입니다.

 //+-------------------------------------------------------------------------------------+
//|                                                                  Scalper_M1_lbr.mq4 |
//|                                                                                 hoz |
//|                                                                                     |
//+-------------------------------------------------------------------------------------+
#property copyright "hoz"
#property link       ""
#property library

//+-------------------------------------------------------------------------------------+
//| Получаем машку с заданными параметрами                                              |
//+-------------------------------------------------------------------------------------+
double GetMA( int typeOfMA)
{
   switch (typeOfMA)
   {
       case 1 :       return ( iMA ( NULL , i_fastMATF, i_fastMAPeriod, i_fastMAShift, i_fastMAMethod, i_fastMAApplied, i_fastMAIndex));
       case 2 :       return ( iMA ( NULL , i_slowMATF, i_slowMAPeriod, i_slowMAShift, i_slowMAMethod, i_slowMAApplied, i_slowMAIndex));
       case 3 :       return ( iMA ( NULL , i_filtrMATF, i_filtrMAPeriod, i_filtrMAShift, i_filtrMAMethod, i_filtrMAApplied, i_filtrMAIndex));
   }
}

컴파일조차 되지 않습니다.

'i_fastMATF' - variable not defined     E:\Insall'd soft's\Forex\MetaTraderForProgramming\experts\libraries\Scalper_M1_lbr.mq4 (17, 38)
'i_fastMAPeriod' - variable not defined E:\Insall'd soft's\Forex\MetaTraderForProgramming\experts\libraries\Scalper_M1_lbr.mq4 (17, 50)
'i_fastMAShift' - variable not defined  E:\Insall'd soft's\Forex\MetaTraderForProgramming\experts\libraries\Scalper_M1_lbr.mq4 (17, 66)
'i_fastMAMethod' - variable not defined E:\Insall'd soft's\Forex\MetaTraderForProgramming\experts\libraries\Scalper_M1_lbr.mq4 (17, 81)
'i_fastMAApplied' - variable not defined        E:\Insall'd soft's\Forex\MetaTraderForProgramming\experts\libraries\Scalper_M1_lbr.mq4 (17, 97)
'i_fastMAIndex' - variable not defined  E:\Insall'd soft's\Forex\MetaTraderForProgramming\experts\libraries\Scalper_M1_lbr.mq4 (17, 114)
'i_slowMATF' - variable not defined     E:\Insall'd soft's\Forex\MetaTraderForProgramming\experts\libraries\Scalper_M1_lbr.mq4 (18, 38)
'i_slowMAPeriod' - variable not defined E:\Insall'd soft's\Forex\MetaTraderForProgramming\experts\libraries\Scalper_M1_lbr.mq4 (18, 50)
'i_slowMAShift' - variable not defined  E:\Insall'd soft's\Forex\MetaTraderForProgramming\experts\libraries\Scalper_M1_lbr.mq4 (18, 66)
'i_slowMAMethod' - variable not defined E:\Insall'd soft's\Forex\MetaTraderForProgramming\experts\libraries\Scalper_M1_lbr.mq4 (18, 81)
'i_slowMAApplied' - variable not defined        E:\Insall'd soft's\Forex\MetaTraderForProgramming\experts\libraries\Scalper_M1_lbr.mq4 (18, 97)
'i_slowMAIndex' - variable not defined  E:\Insall'd soft's\Forex\MetaTraderForProgramming\experts\libraries\Scalper_M1_lbr.mq4 (18, 114)
'i_filtrMATF' - variable not defined    E:\Insall'd soft's\Forex\MetaTraderForProgramming\experts\libraries\Scalper_M1_lbr.mq4 (19, 38)
'i_filtrMAPeriod' - variable not defined        E:\Insall'd soft's\Forex\MetaTraderForProgramming\experts\libraries\Scalper_M1_lbr.mq4 (19, 51)
'i_filtrMAShift' - variable not defined E:\Insall'd soft's\Forex\MetaTraderForProgramming\experts\libraries\Scalper_M1_lbr.mq4 (19, 68)
'i_filtrMAMethod' - variable not defined        E:\Insall'd soft's\Forex\MetaTraderForProgramming\experts\libraries\Scalper_M1_lbr.mq4 (19, 84)
'i_filtrMAApplied' - variable not defined       E:\Insall'd soft's\Forex\MetaTraderForProgramming\experts\libraries\Scalper_M1_lbr.mq4 (19, 101)
'i_filtrMAIndex' - variable not defined E:\Insall'd soft's\Forex\MetaTraderForProgramming\experts\libraries\Scalper_M1_lbr.mq4 (19, 119)
18 ошибок, 0 предупреждений     

라이브러리에 선언된 것이 없고 오류도 없지만 어떤 이유에서인지 알 수 있습니다. 별차이를 못찾았다..

 

Viktor, 함수에 많은 변수가 있고 그 중 아무 것도 선언되지 않았습니다.

컴파일러는 다음과 같이 말했습니다.

정의되지 않은 변수

변수가 선언되지 않았습니다. 이렇게 18개가 있습니다.

==============

기능의 디자인으로 보아 고도로 전문화되어 있다. 왜 도서관에 가져가? 또한 각 막대의 주기에서 호출될 가능성이 큽니다.

속도와 최적화에 대해 말씀하셨습니다. 매우 느린 코드를 만들고 있습니다. MQL4에서는 루프에 함수를 배치할 필요가 없습니다. 루프에서 함수 호출이 적을수록 코드가 더 빠르게 실행됩니다.

==============

오래 전에 MQL4로 쓰기 시작했을 때 통화 지수의 첫 번째 지표를 썼습니다. 문자열로 작업하는 기능도 있습니다 ... 킥, 무슨 일이 있었습니까 ... TF를 전환하는 데 5 분이 걸렸습니다.

그런 다음 그는 앉아서 생각하고 모든 기능을 제거하고 사이클 블록에서 바로 열었습니다. 문자열 작업을 제거하고 식별자로 대체했습니다. 미리 계산할 수 있는 것과 변하지 않는 것은 모두 계산(최적화)했다. 코드를 전문가에게 옮겼습니다. 그 결과 TF 전환 시 가장 어려웠던 재계산은 15초였다. 그런 다음 계산을 DLL로 전송했습니다. 이제 약 5초.

사유: