Mt4 지원 종료. - 페이지 44

 
Реter Konow :

이제 말해 보세요. 작업을 완료했습니까?

예, 당신(모든 Peter와 상대방)은 잘못된 편에서 왔습니다! 이 방법으로 작업을 완료할 수 있습니다.

이제 어셈블러가 와서 컴퓨터 리소스를 훨씬 더 적게 사용하면서 모든 작업을 훨씬 더 효율적으로 수행할 수 있다고 말할 것입니다!

하지만 그게 무슨 소용이 있겠습니까?

제 생각에는 속도나 컴퓨터 메모리가 충분하지 않을 때만 효율성을 생각해야 합니다. 그것들이 충분할 때 시스템을 유지하고 수정하기 쉬운 것이 훨씬 더 중요합니다. 프로그램의 속도와 사용된 메모리에 약간의 피해를 주기도 합니다.

러시아어 이름은 전혀 귀찮게하지 않습니다. 나를 귀찮게하는 유일한 것은 변수 유형별로 유형을 즉시 이해할 수 있도록 접두사에 익숙하다는 것입니다. 그리고 러시아어 또는 영어 식별자 - 차이가 작습니다(1C - 러시아어가 많음).

하지만 무엇보다 당연히 디버거를 자발적으로 포기한 것에 놀랐습니다. 일종의 마조히즘일 뿐... 디버거가 없을 때 이해할 수 있습니다(한 때는 과거 데이터에 대한 디버깅이 없었습니다) - 피하고 디버그 메시지를 발행하고 로그를 작성해야 합니다... 하지만 디버거가 있다면 , 그것으로 작업하는 것이 완전하고 더 편리하고 더 효율적입니다!

 
George Merts :

예, 당신(모든 Peter와 상대방)은 잘못된 편에서 왔습니다! 이 방법으로 작업을 완료할 수 있습니다.

이제 어셈블러가 와서 컴퓨터 리소스를 훨씬 더 적게 사용하면서 모든 것을 훨씬 더 효율적으로 수행할 수 있다고 말할 것입니다!

하지만 그게 무슨 소용이 있겠습니까?

제 생각에는 속도나 컴퓨터 메모리가 충분하지 않을 때만 효율성을 생각해야 합니다. 그것들이 충분할 때 시스템을 유지하고 수정하기 쉬운 것이 훨씬 더 중요합니다. 프로그램의 속도와 사용된 메모리에 약간의 피해를 주기도 합니다.

러시아어 이름은 전혀 귀찮게하지 않습니다. 나를 귀찮게하는 유일한 것은 변수 유형별로 유형을 즉시 이해할 수 있도록 접두사에 익숙하다는 것입니다. 그리고 러시아어 또는 영어 식별자 - 차이가 작습니다(1C - 러시아어가 많음).

하지만 무엇보다 당연히 디버거를 자발적으로 포기한 것에 놀랐습니다. 일종의 마조히즘일 뿐... 디버거가 없을 때 이해할 수 있습니다(한 때는 과거 데이터에 대한 디버깅이 없었습니다) - 피하고 디버그 메시지를 발행하고 로그를 작성해야 합니다... 하지만 디버거가 있다면 , 그것으로 작업하는 것이 완전하고 더 편리하고 더 효율적입니다!

George, 나는 디버거를 사용하는 방법을 몰랐습니다. 왜 필요한지도 몰랐고 관심도 없었습니다. 따라서 여기에는 마조히즘이 없습니다. 그리고 지금은 너무 늦었습니다.
 

피터, 당신은 작업을 변경했습니다. 귀하의 솔루션은 때때로 필요하지만 매우 드물게 이 형식이 아니라 유사합니다.

더 자주, 또 다른 작업은 프로그램의 다른 위치에서 새 막대의 모양을 추적하는 것입니다. 따라서 함수에 기호와 시간 프레임을 전달하고 배열에서 찾는 것은 전혀 적합한 솔루션이 아닙니다. isNewBar 함수에는 정적 변수가 있으므로 각 기간 기호에 대해 함수의 복사본을 만들어야 합니다. 참조로 함수에 마지막으로 변수를 전달할 수 있습니다.

그러나 OOP에는 이상적인 옵션이 있습니다. 각 기호에 대해 별도의 개체가 생성됩니다.

isNewBar 함수가 전혀 필요하지 않다고 생각하지 않는다면 할 일이 없기 때문에 순전히 손실입니다.

 
Dmitry Fedoseev :

피터, 당신은 작업을 변경했습니다. 귀하의 솔루션이 때때로 필요하지만 매우 드물게 이 형식이 아니라 유사합니다.

더 자주, 또 다른 작업은 프로그램의 다른 위치에서 새 막대의 모양을 추적하는 것입니다. 따라서 함수에 기호와 시간 프레임을 전달하고 배열에서 찾는 것은 전혀 적합한 솔루션이 아닙니다. isNewBar 함수에는 정적 변수가 있으므로 각 기간 기호에 대해 함수의 복사본을 만들어야 합니다. 참조로 함수에 마지막으로 변수를 전달할 수 있습니다.

그러나 OOP에는 이상적인 옵션이 있습니다. 각 기호에 대해 별도의 개체가 생성됩니다.

isNewBar 함수가 전혀 필요하지 않다고 생각하지 않는다면 할 일이 없기 때문에 순전히 손실입니다.

나는 아무것도 바꾸지 않았다. 저는 이 문제를 다른 방식으로 해결했습니다. 당신의 논리에 따라 나는 불가피하게 OOP가 필요하게 되었습니다. 그러나 어쨌든 내 솔루션을 안전하게 사용할 수 있습니다. 모든 함수는 프로그램의 모든 위치에서 언제 어디서나 모든 기호 및 시간 프레임에 대한 새 막대 이벤트에 대한 전역 배열에 액세스합니다.

기호의 수와 기간은 중요하지 않습니다. 제 솔루션에서 기호의 수는 시스템의 부하를 증가시키지 않습니다. 새로운 바 이벤트가 있는지 여부와 상관없이 배열을 살펴보십시오.

시장 리뷰에서 가져오지 않고 Symbols[] 배열에 수동으로 입력하면 기호 목록을 줄일 수 있습니다. 물론이죠.


추가됨:

그런데 New_bar() 함수는 더 이상 존재하지 않습니다. 그녀는 정말 쓸모가 없었습니다. 당신이 옳았.

 
Реter Konow :

나는 OOP 없이 많은 심볼 의 새로운 막대의 이벤트를 많은 시간 프레임에서 수신할 수 있도록 하고 짧고 효율적인 코드로 만드는 작업을 받았습니다.

이제 말해 보세요 . 작업을 완료했습니까?

분명하게 예입니다. 하지만!!! 그렇게 해서 내 제안이 약간 바뀌었고, 결과적으로 당신은 당신이 이해한 대로 이해하게 되었습니다. Forex에서는 지금 여기에서 필요한 데이터만 관심 대상입니다. 하나의 악기와 현재 기간에 대한 정보가 필요합니다. 그게 전부입니다. 다른 하나는 관심이 없습니다. 다른 기호와 특정 기간에 대한 정보가 필요하므로 동일한 코드로 가져와야 합니다. 그리고 지금 전혀 필요하지 않은 정보로 시스템을 로드할 필요가 없습니다.

당신의 잘못이 아닙니다. 당신을 막으려 했지만 그럴 수 없었습니다.

 
Dmitry Fedoseev :

피터, 당신은 작업을 변경했습니다.

그는 변하지 않았다. 그 문장은 그가 그렇게 이해하는 방식으로 고쳐졌습니다.

 
Alexey Viktorov :

분명하게 예입니다. 하지만!!! 그렇게 해서 내 제안이 약간 바뀌었고, 결과적으로 당신은 당신이 이해한 대로 이해하게 되었습니다. Forex는 지금 여기에서 필요한 데이터에만 관심이 있습니다. 하나의 악기와 현재 기간에 대한 정보가 필요합니다. 그게 전부입니다. 다른 하나는 관심이 없습니다. 다른 기호와 특정 기간에 대한 정보가 필요하므로 동일한 코드로 가져와야 합니다. 그리고 지금 전혀 필요하지 않은 정보로 시스템을 로드할 필요가 없습니다.

그것은 당신의 잘못이 아닙니다. 당신을 막으려 했지만 막을 수 없었습니다.

문제 없습니다. Symbols[] 배열에 필요한 기호의 이름을 입력하면 됩니다.

OnInit()에서 항목을 제거합니다.

   for ( int a1 = 0 ; a1 < All_symbols; a1++)
     {
      Symbols[a1] = SymbolName (a1 + 1 , true ); 
       //Возможно, нумерация символов в обзора рынка идет с нуля.
       //Тогда: Symbols[a1] = SymbolName(a1,true);
     }

그리고 전역 범위에서 배열을 초기화합니다 .

Symbols[3] = {"EURUSD","AUDUSD","GBPUSD"};

그리고 Timeframes[] 배열에서 추가 시간 프레임을 제거합니다.

 int     Timeframes[ 3 ] = { PERIOD_M1 , PERIOD_M5 , PERIOD_M15 };

변수 변경

 int     All_Timeframes = 3 ;

All_Symbols 변수를 변경합니다.

 int     All_symbols = 3;

이렇게 하면 필요한 기호와 필요한 시간 프레임에 대해서만 이벤트를 수신할 수 있습니다.

추가됨:

또한 문자 수를 알고 있으므로 OnInit()에서 배열 크기를 제거합니다.

   //-------------------------------------------------------------   
   All_symbols = SymbolsTotal ( true );
   //---------------------------------------------------------   
   ArrayResize (Symbols,All_symbols);
   //---------------------------------------------------------
   ArrayResize (All_bars_table,All_symbols);
   //---------------------------------------------------------
 
Реter Konow :

나는 아무것도 바꾸지 않았다. 나는 다른 방법으로 이 문제를 해결했다. 당신의 논리에 따라 나는 불가피하게 OOP가 필요하게 되었습니다. 그러나 어쨌든 내 솔루션을 안전하게 사용할 수 있습니다. 모든 함수는 프로그램의 모든 위치에서 언제 어디서나 모든 기호 및 시간 프레임에 대한 새 막대 이벤트에 대한 전역 배열에 액세스합니다.

기호의 수와 기간은 중요하지 않습니다. 제 솔루션에서 기호의 수는 시스템의 부하를 증가시키지 않습니다. 새로운 바 이벤트가 있는지 여부와 상관없이 배열을 살펴보십시오.

시장 리뷰에서 가져오지 않고 Symbols[] 배열에 수동으로 입력하면 기호 목록을 줄일 수 있습니다. 물론이죠.


추가됨:

그런데 New_bar() 함수는 더 이상 존재하지 않습니다. 그녀는 정말 쓸모가 없었습니다. 당신이 옳았.


그렇다면 굵게 강조 표시된 대로 - 바구니에 있습니다.

 
Dmitry Fedoseev :

그렇다면 굵게 강조 표시된 대로 - 바구니에 있습니다.

왜요?
 
Реter Konow :

문제 없습니다. Symbols[] 배열에 필요한 기호의 이름을 입력하면 됩니다.

OnInit()에서 항목을 제거합니다.

그리고 전역 범위에서 배열을 초기화합니다 .

그리고 Timeframes[] 배열에서 추가 시간 프레임을 제거합니다.

변수 변경

All_Symbols 변수를 변경합니다.

이렇게 하면 필요한 기호와 필요한 시간 프레임에 대해서만 이벤트를 수신할 수 있습니다.


피터, 그만해. 내 자신을 제외하고 새 막대를 정의하는 데 다른 기능이 필요하지 않습니다. 글쎄, 당신의 모든 작업이 불필요하게 된 일이 일어났습니다. 죄송합니다.