mql4 언어의 기능, 미묘함 및 작업 방법 - 페이지 19

 

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

도서관: 전문가

fxsaber , 2019.06.04 16:40

 // MT4-советник показывает, в каком режиме Long/Short был запущен.

#include <fxsaber\Expert.mqh> // https://www.mql5.com/ru/code/19003

int GetLongShortFlag( const int Chart_ID = 0 )
{
   MqlParam Params[];
   string Names[];
  
   const int Res = EXPERT::Parameters(Chart_ID, Params, Names);
  
   return (((Res & 3 ) << 1 ) + (Res & 1 ));
}

string LongShortToString( const int Chart_ID = 0 )
{
   const int Flag = GetLongShortFlag(Chart_ID);
   string Str = NULL ;
  
   if (( bool )(Flag & SYMBOL_TRADE_MODE_LONGONLY ) && ( bool )(Flag & SYMBOL_TRADE_MODE_SHORTONLY ))
    Str = "Long & Short" ;
   else if (( bool )(Flag & SYMBOL_TRADE_MODE_LONGONLY ))
    Str = "Only Long" ;
   else if (( bool )(Flag & SYMBOL_TRADE_MODE_SHORTONLY ))
    Str = "Only Short" ;
    
   return (Str);
}

int OnInit ()
{
   Alert (LongShortToString());
  
   return ( INIT_FAILED );
}


대안

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

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

fxsaber , 2019.06.04 19:40

 string LongShortToString2()
{
   string Str = "Long & Short" ;

   if ( OrderSend ( _Symbol , OP_BUY, 1 , 0 , 0 , 0 , 0 ) && ( GetLastError () == ERR_LONGS_NOT_ALLOWED))
    Str = "Only Short" ;
   else if ( OrderSend ( _Symbol , OP_SELL, 1 , 0 , 0 , 0 , 0 ) && ( GetLastError () == ERR_SHORTS_NOT_ALLOWED))
    Str = "Only Long" ;
    
   return (Str);
}


항상 작동하지는 않지만 대부분의 경우 충분합니다.

 
이 주제와 관련이 없는 댓글은 " MQL4 및 MQL5에 대한 모든 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 "으로 이동되었습니다.
 

작업은 최소한의 노력으로 Market Watch의 모든 틱(손실 없이)을 유지하는 것이었습니다.

각 기호에 대한 차트를 열고 지표 수집기를 시작하는 로더 스크립트를 작성했습니다.

전체 트릭은 이러한 tpl 파일(전체 제공)을 다운로드하여 표시기를 시작하는 것입니다.

 < chart >
< window >
< indicator >
name=Custom Indicator
< expert >
name=HistoryTicks_OnlySave
</ expert >
</ indicator >
</ window >
</ chart >

바가 없어서 좋습니다. 따라서 리소스가 사용되지 않습니다.

결과적으로 60개의 차트. 너무 많은 지표. 기록된 분당 ~500Kb 틱.

RAM ~450Mb, CPU ~3-8%(8 하이퍼스레딩).


위협 누가 이것을 할 것인가, 나는 Market Watch에서 데이터 변경 빈도를 모니터링하는 고문을 실행할 것을 적극 권장합니다. 저 같은 경우 3초 이상 업데이트가 없으면 강제 재로그인이 됩니다. 사실 MT4(및 MT5도)는 네트워크에 문제가 있는 경우 자체적으로 10-15초 내에 연결을 복원할 수 있으며 때로는 최대 1분까지 복원할 수 없습니다. 그래야만 재로그인 자체가 수행됩니다. 이 10-15초 또는 1분 동안 틱을 잃지 않으려면 연결 복원 작업을 수행하는 것이 좋습니다. 전투 차량이 있는 터미널에도 동일하게 적용됩니다.

 
fxsaber :

작업은 최소한의 노력으로 Market Watch의 모든 틱(손실 없이)을 유지하는 것이었습니다.

그래서 손실이 없습니까? 이 신화는 이미 해소된 것 같습니다.

 
Andrey Khatimlianskii :

그래서 손실이 없습니까? 이 신화는 이미 해소된 것 같습니다.

내가 이것을 어떻게 확신했는지는 정확히 기억나지 않는다. MT4에서 수집된 이력을 브로커의 이력과 비교한 것으로 알고 있습니다. 100% 일치하는 경우가 있었습니다.

KB의 HistoryTicks 솔루션을 사용하고 있습니다. 수집된 틱에 대한 가상 테스터의 결과와 다운로드한 틱에 대한 MT5 테스터의 결과를 비교하면 - 100% 일치합니다.

문제는 의사 소통으로 인한 것일 수 있습니다. 물론 고문은 그리워합니다. 지표는 그렇지 않습니다.

 
fxsaber :

내가 이것을 어떻게 확신했는지는 정확히 기억나지 않는다. MT4에서 수집된 이력을 브로커의 이력과 비교한 것으로 알고 있습니다. 100% 일치하는 경우가 있었습니다.

KB의 HistoryTicks 솔루션을 사용하고 있습니다. 수집된 틱에 대한 가상 테스터의 결과와 다운로드한 틱에 대한 MT5 테스터의 결과를 비교하면 - 100% 일치합니다.

문제는 의사 소통으로 인한 것일 수 있습니다. 물론 고문은 그리워합니다. 지표는 그렇지 않습니다.

흠 .. 난 그냥 당신의 노출에 대해 이야기하고 있었다 :

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

오류, 버그, 질문

fxsaber , 2018.02.26 09:05

3개의 틱 배치가 도착하면 Calculate 이벤트가 3번 호출되지만 SymbolInfoTick은 이러한 3개의 호출 각각에 대해 최신 틱을 반환합니다. 저것들. 지표를 통과하지 않고 소위 말하는 진드기 수집은 모호합니다.


뭔가 달라졌어요?

 
Andrey Khatimlianskii :

흠 .. 난 그냥 당신의 노출에 대해 이야기하고 있었다 :

뭔가 달라졌어요?

CopyTicks로 소란이 났을 때 틱 컬렉션과 CopyTicks 결과를 비교했습니다.

정확히 기억은 안나는데 궁합이 맞았던 것 같다.

CustomTicksAdd를 통해 틱 팩을 업로드하고 확인해야 합니다. 하지만 이것은 MT5입니다.


MT4는 이렇게 확인할 수 있습니다. 두 개의 인접한 기록된 틱은 항상 달라야 합니다. 그리고 서버에 있는 막대의 틱 볼륨은 수집된 틱의 막대와 일치해야 합니다.

2018년에 그는 아마도 똑똑한 것을 알고 있었을 것입니다. 지금은 기억나지 않는다.

 
fxsaber :

내가 이것을 어떻게 확신했는지는 정확히 기억나지 않는다. MT4에서 수집된 이력을 브로커의 이력과 비교한 것으로 알고 있습니다. 100% 일치하는 경우가 있었습니다.

KB의 HistoryTicks 솔루션을 사용하고 있습니다. 수집된 틱에 대한 가상 테스터의 결과와 다운로드한 틱에 대한 MT5 테스터의 결과를 비교하면 - 100% 일치합니다.

문제는 의사 소통으로 인해 발생할 수 있습니다. 물론 고문은 그리워합니다. 지표는 그렇지 않습니다.

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

진드기 기록을 수집하도록 조언자에게 제공

젠즈 , 2018.03.07 11:10

9월에 비교를 해봤습니다. Alpari 아카이브에서 출판 지연은 1주일이므로 현재 비교를 해보면 다음 주까지 작동하지 않을 것입니다.

따라서 여기에 2017년 9월 22일에 대한 두 개의 스크린샷이 있습니다. 터미널은 로그를 기록한 단일 표시기와 함께 빈 컴퓨터에서 시작되었습니다. XP SP3 운영 체제, MT4 터미널 빌드 1090 버전. Alpari Pro-ECN 실제 계정.



왼쪽은 Alpari 아카이브의 사진이고 오른쪽은 표시기에 의해 기록된 눈금입니다.

동시에 17초 전과 16초와 18초 후에 틱이 완전히 일치하는 것을 볼 수 있습니다. 이 경우 요점은 시간의 비동기화에 있지 않습니다. 나는 틱 건너 뛰기가 1 초 이내에 발생한다는 것을 반복합니다. 빠른 틱뿐만 아니라 "느린" 틱도 삼켜집니다. 나는 이것에서 시스템을 찾지 못했습니다.

설명: Alpari 기록 보관소의 초부터 지점 바로 뒤에는 마일이나 마이크로초가 아니라 눈금 번호가 있습니다. 이것은 그들이 어떤 이유로 그렇게 한 것입니다.

다음은 해당 주제에 대한 링크입니다. https://www.mql5.com/en/forum/229889/page4#comment_6741502 . 그 이후로 MT4에서 변경된 사항은 없다고 생각하지만 더 이상 확인하지는 않았지만 MT4의 지표와 Expert Advisors 모두 틱을 건너 뛰고 있다고 가정합니다.

Дайте советник для сбора тиковой истории
Дайте советник для сбора тиковой истории
  • 2018.03.07
  • www.mql5.com
Дайте готовый советник для записи тиков в csv файл...
 
zenz :

다음은 해당 주제에 대한 링크입니다. https://www.mql5.com/en/forum/229889/page4#comment_6741502 . 그 이후로 MT4에서 변경된 사항은 없다고 생각하지만 더 이상 확인하지는 않았지만 MT4의 지표와 Expert Advisors 모두 틱을 건너 뛰고 있다고 가정합니다.

이러한 "건너뛴" 틱이 거래 서버에서 전송되었는지 확실하지 않습니다.

 
fxsaber :

이러한 "건너뛴" 틱이 거래 서버에서 전송되었는지 확실하지 않습니다.

나도 이것에 대해 생각해 봤는데 동의합니다. 그제서야 조사를 해보니 불일치 사례가 단독으로 발생하는 것이 아니라 주기적으로 발생한다는 사실을 알게 되었고, 이에 대해 안심했습니다.