mql5 언어의 특징, 미묘함 및 작업 방법 - 페이지 186

 
이력선택.

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

MT5와 속도

fxsaber , 2020.09.02 00:32

누군가 from-input 매개변수가 일치하지 않는 라이브러리를 공유하기로 결정하면 브레이크가 걸립니다.


기타 이력선택.

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

MT5와 속도

fxsaber , 2020.09.02 00:52

HistoryDealSelect 및 HistoryOrderSelect는 다음과 같이 작성해야 합니다.

   static bool HistorySelectOrder( const ulong Ticket )
  {
     return ( (:: HistoryOrderGetInteger (Ticket, ORDER_TICKET ) == Ticket) || :: HistoryOrderSelect (Ticket));
  }

   static bool HistorySelectDeal( const ulong &Ticket )
  {
     return ( (:: HistoryDealGetInteger (Ticket, DEAL_TICKET ) == Ticket) || :: HistoryDealSelect (Ticket));
  }

그렇지 않으면 브레이크를 밟을 수 있습니다.

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

MT5와 속도

레나트 팻쿨린 , 2020.09.02 00:40

원자성/스냅샷 액세스가 필요한 방대한 양의 작업(그리고 역사적으로 수천 수만 건의 거래를 표시한 경우)을 처리할 때 비용을 이해해야 합니다.

 
Expert Advisor의 OnInit에 MessageBox 가 있는 경우 다시 로그인하는 동안 잠재적인 문제를 우회하기 위해 여러 작업을 수행해야 합니다.
 
빈번한 지연이 발생할 가능성을 줄이기 위해 일반 함수에 대한 호출 수를 최소화하는 것이 좋습니다.
 

이길 수 없다

2020.04.01 11:49:34 즉시 판매 실패 0.32 EURUSD at 1.09539 [유효하지 않은 거래량]

포효에 총 볼륨 제한에 대한 확인이 있습니다.

이해할 수 없는 오류가 발생하는 이유

시장 검증기에서
 
Vladimir Pastushak :

이길 수 없다

2020.04.01 11:49:34 즉시 판매 실패 0.32 EURUSD at 1.09539 [유효하지 않은 거래량]

포효에 총 볼륨 제한에 대한 확인이 있습니다.

이해할 수 없는 오류가 발생하는 이유

시장 검증기에서

주문 한도에 도달하지 못하셨나요? 가지고 있었던 것 같습니다.

 
Edgar Akhmadeev :

주문 한도에 도달하지 못하셨나요? 가지고 있었던 것 같습니다.

잘못된 볼륨을 작성하고 자금 가용성을 확인하고 로트 한도 초과도 확인합니다. 더 파고들다...

 
Vladimir Pastushak :

잘못된 볼륨을 씁니다.

에드가 아크마데프 :

가지고 있었던 것 같습니다.

... 작은 볼륨이 큰 저장소로 열리지 않았습니다. 자세한 내용은 기억나지 않지만 센트 시장의 브로커 중 한 명이 해당 상품에 대한 주문 한도가 매우 작았습니다.

 

MT5에는 다음과 같은 문제가 있습니다. 비주얼 모드의 전략 테스터에서 거래 패널의 작동을 테스트해야 합니다. 거래 패널에는 입력 필드(OBJ_EDIT)가 있습니다. 입력 필드의 텍스트를 변경하고 ENTER 키를 누르면 새 텍스트가 나타나지 않고 대신 입력 필드를 만들 때 지정한 원래 텍스트가 나타납니다. 즉, 패널의 시각적 테스트 중에는 입력 필드의 텍스트를 변경할 수 없습니다.

그것을 해결하는 방법?

코드 예:

 void OnTick ()
  {
   string name= "EDIT" ;
   if ( ObjectFind ( 0 ,name)==- 1 )
     {
       ObjectCreate ( 0 ,name, OBJ_EDIT , 0 , 0 , 0 );
       ObjectSetString ( 0 ,name, OBJPROP_TEXT , "EURUSD" );
       ObjectSetInteger ( 0 ,name, OBJPROP_XDISTANCE , 50 );
       ObjectSetInteger ( 0 ,name, OBJPROP_YDISTANCE , 50 );
       ObjectSetInteger ( 0 ,name, OBJPROP_XSIZE , 50 );
       ObjectSetInteger ( 0 ,name, OBJPROP_YSIZE , 20 );
       ObjectSetInteger ( 0 ,name, OBJPROP_READONLY , false );
       ObjectSetInteger ( 0 ,name, OBJPROP_COLOR , clrBlack );
       ObjectSetInteger ( 0 ,name, OBJPROP_BGCOLOR , clrWhite );
     }
  }
[삭제]  

코딩하는 동안 제목 표시줄을 숨기기 위해 이 자동 핫키 스크립트를 만들었습니다. Windows의 모든 창에서 작동합니다. 다른 플랫폼은 잘 모르겠습니다.



; 
Hide borders, title bar 









#IfWinNotActive ahk_class Progman 









#IfWinNotActive ahk_class Shell_TrayWnd 









^] :: 









WinGet Style, Style, A 









if (Style & 0xC40000) { 









WinSet, Style, -0xC40000, A 









WinMaximize, A 













} 









else { 









WinSet, Style, + 0xC40000, A 









WinRestore, A 









} 









return 

결과는 완벽하게 채워진 데스크탑 화면입니다.

파일을 file_name.ahk로 저장하면 됩니다. 원하는 디렉토리에 저장한 다음 https://www.autohotkey.com 을 다운로드하여 설치합니다.

스크립트의 바로 가기를 만들고 잘라냅니다. 승리 + r을 누르십시오

shell: startup을 입력하고 팝업 창에 바로 가기를 붙여넣습니다.

그렇게하면 재부팅 후 스크립트가 Windows와 함께 시작됩니다. 지금 스크립트를 시작하려면 스크립트를 두 번 클릭한 다음 ctrl +]로 창 제목 표시줄을 숨길 수 있습니다.

바로 가기를 사용하는 동안 창이 최대화되지 않았는지 확인하십시오. 최대화 된 창을 최대화하는 것은 의미가 없으며 그 경우에는 처리하지 않았습니다.

즐기다

편집하다:

코드 포맷터가 이상하게 작동하고 있습니다. 코드를 거대한 줄 간격으로 계속 확장합니다. ㅋㅋㅋ!

AutoHotkey
  • www.autohotkey.com
AutoHotkey provides a simple, flexible syntax allowing you to focus more on the task at hand rather than every single little technicality. It supports not only the popular imperative-procedural paradigm, but also...
파일:
 

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

라이브러리: 벤치마크

fxsaber , 2020.10.01 23:49

 // Возвращает true в некоторых ситуациях, когда чарт не виден.
bool IsInvisible( long chartID = 0 )
{
   bool Res = :: ChartGetInteger (chartID, CHART_IS_MINIMIZED );
  
   if (!Res && !:: ChartGetInteger (chartID, CHART_IS_MAXIMIZED ) && :: ChartGetInteger (chartID, CHART_IS_DOCKED ))
  {
     if (!chartID)
      chartID = :: ChartID ();

     for ( long Chart = :: ChartFirst (); (Chart != - 1 ) && !Res; Chart = :: ChartNext (Chart))
      Res = (Chart != chartID) && :: ChartGetInteger (Chart, CHART_IS_MAXIMIZED );
  }
  
   return (Res);
}

차트의 트레이딩 패널 및 기타 정보는 true를 반환하는 경우 업데이트되지 않습니다.