MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 855

 
모두에게 좋은 하루. 나는 강력한 프로그래머가 아니므로 몇 가지 간단한 것을 이해하지 못합니다. 그런 문제가 있습니다. 어드바이저에서 마감된 주문 중에서 SL이 마감한 마지막 주문을 선택합니다.
 
Igor Makanu :

단순한 작업을 지나치게 복잡하게 만들지 마십시오! ... 클래스에서 새 막대 를 정의하는 기능까지 래핑한 내가 말했다))))

주제별:


아이디어는 명확하고 더 정확합니다 >= 분명히

 if ((timer1++)>=Timer1) { timer1 = 0 ; Print ( "Timer №1" ); }
if ((timer2++)>=Timer2) { timer2 = 0 ; Print ( "Timer №2" ); }
 
leonerd :

아이디어는 명확하고 더 정확합니다 >= 분명히

확인하지 않은 경우 즉시 볼 변수를 인쇄하십시오. 1로 실수를 한 경우 옵션을 선택하거나 재설정하지 말고 값을 ​\u003d 1 값을 카운터 timer1 및 timer2에 할당하십시오.

또는 다음을 시도할 수 있습니다.


 if ((++timer1)>=Timer1) { timer1 = 0 ; Print ( "Timer №1" ); }
if ((++timer2)>=Timer2) { timer2 = 0 ; Print ( "Timer №2" ); }
 
Igor Makanu :

확인하지 않은 경우 즉시 볼 변수를 인쇄하십시오. 1로 실수를 한 경우 옵션을 선택하거나 재설정하지 말고 값을 ​\u003d 1 값을 카운터 timer1 및 timer2에 할당하십시오.

그러나 이 방법은 물론 주어진 주기를 보장하지 않습니다. 한 타이머의 코드 실행은 다른 타이머의 시간을 초과할 수 있습니다.

 
leonerd :

그러나 이 방법은 물론 주어진 주기를 보장하지 않습니다. 한 타이머의 코드 실행은 다른 타이머의 시간을 초과할 수 있습니다.

Windows 시스템에서 실시간 타이머를 얻을 수 있는 곳은 어디입니까? - 시스템 과부하 시 지연이 발생합니다.

따라서 MQL에서 - 복잡한 계산으로 OnTick()을 로드한 경우 실행될 때까지 OnTimer() 이벤트가 발생하지 않습니다.

IMHO, MT4라도 복잡한 계산에는 충분합니다. MT5보다 충분하지 않은 경우 - 실제로 C ++ 수준에서 작동하지만 일반적으로 성능 부족은 좋지 않은 계산 알고리즘과 관련이 있습니다. - 프로파일러 를 사용하고 매 틱마다 계산을 수행하지 마십시오. 새 막대가 나타날 때까지 아무 것도 없는 경우 계산, 마지막 1-3개 막대에 신호를 사용하는 경우 전체 기록을 계산하지 않음 - 100개 막대만 계산 ... 많은 옵션이 있습니다.

추신: 그래픽 개체로 작업하면 모든 것이 느려지고 문자열로 작업하면 성능이 저하됩니다. 이론상으로는 이것이지만 최근에는 이를 눈치채지 못했습니다. 시간 변환 함수로 작업하는 것도 비용이 많이 드는 것 같습니다. 당신은 많은 시간을 보냈습니다 - 우리는 이 코드 조각을 덜 자주 사용하려고 노력합니다

Профилирование кода - Разработка программ - MetaTrader 5
Профилирование кода - Разработка программ - MetaTrader 5
  • www.metatrader5.com
Профилирование — это сбор характеристик программы во время ее выполнения. При профилировании замеряется время выполнения и количество вызовов отдельных функций и строк в коде программы. При помощи этого инструмента программист может найти наиболее медленные участки кода и провести их оптимизацию. Профилирование можно проводить на обычном...
 
Igor Makanu :

Windows 시스템에서 실시간 타이머를 얻을 수 있는 곳은 어디입니까? - 시스템 과부하 시 지연이 발생합니다.

따라서 MQL에서 - 복잡한 계산으로 OnTick()을 로드한 경우 실행될 때까지 OnTimer() 이벤트가 발생하지 않습니다.

IMHO, MT4라도 복잡한 계산에는 충분합니다. MT5보다 충분하지 않은 경우 - 실제로 C ++ 수준에서 작동하지만 일반적으로 성능 부족은 좋지 않은 계산 알고리즘과 관련이 있습니다. - 프로파일러 를 사용하고 매 틱마다 계산을 수행하지 마십시오. 새 막대가 나타날 때까지 아무 것도 없는 경우 계산, 마지막 1-3개 막대에 신호를 사용하는 경우 전체 기록을 계산하지 않음 - 100개 막대만 계산 ... 많은 옵션이 있습니다.

추신: 그래픽 개체로 작업하면 모든 것이 느려지고 문자열로 작업하면 성능이 저하됩니다. 이론상으로는 이것이지만 최근에는 이를 눈치채지 못했습니다. 시간 변환 함수로 작업하는 것도 비용이 많이 드는 것 같습니다. 당신은 많은 시간을 보냈습니다 - 우리는 이 코드 조각을 덜 자주 사용하려고 노력합니다

동의합니다. 표준 타이머도 아무 것도 보장하지 않습니다. 감사합니다. 시도해 보겠습니다.

 

좋은 오후입니다, 사랑하는 여러분!

MKL4에서 다른 심볼에 대한 포지션을 열 때 한 심볼에 대한 포지션의 오프닝 을 설정할 수 있습니까? 아마도 이 질문은 이미 논의되었을 것입니다. 그런 다음 링크를 제공하십시오.

고맙습니다.

 
novichok2018 :

좋은 오후입니다, 사랑하는 여러분!

MKL4에서 다른 심볼에 대한 포지션을 열 때 한 심볼에 대한 포지션의 오프닝 을 설정할 수 있습니까? 아마도 이 질문은 이미 논의되었을 것입니다. 그런 다음 링크를 제공하십시오.

고맙습니다.

질문이 완전히 공식화되지 않았습니다.
그러나 일반적으로 가능합니다. 그러나 동시에가 아니라 두 경우 중 하나에서 순차적으로.
 
Artyom Trishkin :
질문이 완전히 공식화되지 않았습니다.
그러나 일반적으로 가능합니다. 그러나 동시에가 아니라 두 경우 중 하나에서 순차적으로.

괜찮은. 코드로 어떻게 설명할까요? 예를 들어, 조건이 9-00에 형성되고 BAI가 파운드에 대해 열리면 BAI도 유로에 대해 열렸습니다(9-00에).

 
novichok2018 :

괜찮은. 코드로 어떻게 설명할까요? 예를 들어, 조건이 9-00에 형성되고 BAI가 파운드에 대해 열리면 BAI도 유로에 대해 열렸습니다(9-00에).

어떻게 열었습니까? 개봉하는 이유가 뭔가요?