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

 
Vitaly Muzichenko # :

포인트 가치를 고려해야 합니다.

코드를 줄 수는 있지만 이해하는 데 시간이 오래 걸리고 크기가 크며 가능한 최대 마진을 고려합니다.

어서, 내가 그것을 마스터하지 않으면 질문을 할 것입니다))) 물론 포인트 비용을 고려해야하며 공식은 2 단계가 아닙니다. 나는 조건을 완전히 이해하지 못하는 데 어려움이 있고 가정의 정확성을 테스트하는 데 시간이 걸립니다))) 계약 비용 = 한 로트의 비용, 계산된 날짜)))

 

좋은 하루, 상수 목록에서 텍스트 형식으로 값을 반환하는 방법을 알려주세요.

예를 들어 HistoryDealGetInteger 함수는 이벤트가 요청될 때 ENUM_DEAL_TYPE 목록에서 int 값을 반환합니다. 반환된 번호에서 "DEAL_TYPE_CREDIT - 크레딧 발생" 정보를 얻는 방법. 그런 다음 디버깅 후에는 이 값이 더 이상 필요하지 않습니다. int는 이벤트를 처리하기에 충분하지만 디버깅 중에는 함수에서 반환된 숫자 3 또는 5가 무엇을 의미하는지 명확하지 않습니다.

Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства сделок
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства сделок
  • www.mql5.com
Свойства сделок - Торговые константы - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Кирилл Якимов # :

좋은 하루, 상수 목록에서 텍스트 형식으로 값을 반환하는 방법을 알려주세요.

예를 들어 HistoryDealGetInteger 함수는 이벤트가 요청될 때 ENUM_DEAL_TYPE 목록에서 int 값을 반환합니다. 반환된 번호에서 "DEAL_TYPE_CREDIT - 크레딧 발생" 정보를 얻는 방법. 그런 다음 디버깅 후에는 이 값이 더 이상 필요하지 않습니다. int는 이벤트를 처리하기에 충분하지만 디버깅 중에는 함수에서 반환된 숫자 3 또는 5가 무엇을 의미하는지 명확하지 않습니다.

string s = EnumToString((ENUM_DEAL_TYPE) x)

 
Maxim Kuznetsov # :

string s = EnumToString((ENUM_DEAL_TYPE) x)

많은 도움이 되었습니다.
 

해결 방법을 알려주세요.

1) 나는 히스토리를 로드하지 않았고, 온라인 프로세스 중에 차트 창에 70,000분 막대가 로드되었습니다. 나는 테스터에서 어드바이저를 실행하고, 만일을 대비하여 특정 패턴에 대한 최소 막대 수를 등록했고 그는 "분석을 위한 막대가 충분하지 않습니다"라는 문구가 포함된 답변을 제공합니다. 나는 iBars 를 인쇄하고 1200개의 막대를 씁니다. 로드된 기록(8,000,000바). 창 및 기록의 설정 "9999999999"에서 다시 시작했습니다. 다시 "충분한 역사가 없습니다."라고 씁니다. iBars를 다시 1200으로 인쇄합니다. 무엇이며 어떻게 해결합니까?

2) 다중 통화 분석에서 현재 차트의 따옴표가 갑자기 고정되고 OnTick이 확인을 일으키지 않는 경우 표시기가 다른 통화 쌍에서 들어오는 새 틱을 놓치지 않도록 하는 방법은 무엇입니까? OnTimer를 시도했지만 테스터에서 작동하지 않습니다.

 
이 스크립트에서는 배열 크기를 늘린 후 새 셀이 나타나는 방향을 이해하기 위해 인덱싱 방향 이 다른 동적 배열의 크기를 조정하는 실험을 하고 있습니다.
 void OnStart ()
  {
   
   int a[], b[], size = 5 , new_size = size + 5 ;
   
   if ( ArraySize ( a ) != size )
     ArrayResize ( a, size, 0 );
   
   if ( ArraySize ( b ) != size )
     ArrayResize ( b, size, 0 );
   
   if ( ArrayGetAsSeries ( a ) )
     ArraySetAsSeries ( a, false );
   
   if ( ! ArrayGetAsSeries ( b ) )
     ArraySetAsSeries ( b, true );
   
   for ( int i = 0 ; i < size; i++ )
     {
      a[i] = i;
      b[i] = i;
     };
   
   ArrayResize ( a, new_size, 0 );
   ArrayResize ( b, new_size, 0 );
   
   for ( int i = 0 ; i < new_size; i++ )
     {
       Alert ( "a" , i, " " , a[i] );
       Alert ( "b" , i, " " , b[i] );
       Alert ( " " );
     };
   
  }

그리고 여기 결론이 있습니다


배열 b[](역 인덱싱이 있는) 값은 크기를 늘린 후 어떻게든 미러링되는 것으로 나타났습니다.

왜요? 내가 뭔가를 놓치고 있습니까 아니면 실수를 했습니까?
 
Alexandr Sokolov 인덱싱 방향 이 다른 동적 배열의 크기를 조정하는 실험을 하고 있습니다.

그리고 여기 결론이 있습니다


배열 b[](역 인덱싱이 있는) 값은 크기를 늘린 후 어떻게든 미러링되는 것으로 나타났습니다.

왜요? 내가 뭔가를 놓치고 있습니까 아니면 실수를 했습니까?

어쨌든 우리는 배열의 새 셀에 있는 값에 의존할 수 없습니다. 이러한 값은 가비지를 포함할 수 있는 초기화되지 않은 변수입니다.

 
Alexandr Sokolov 인덱싱 방향 이 다른 동적 배열의 크기를 조정하는 실험을 하고 있습니다.

그리고 여기 결론이 있습니다


배열 b[](역 인덱싱이 있는) 값은 크기를 늘린 후 어떻게든 미러링되는 것으로 나타났습니다.

왜요? 내가 뭔가를 놓치고 있습니까 아니면 실수를 했습니까?

채운 후에 배열을 뒤집어야 합니다.

 
JRandomTrader # :

어쨌든 우리는 배열의 새 셀에 있는 값에 의존할 수 없습니다. 이러한 값은 가비지를 포함할 수 있는 초기화되지 않은 변수입니다.

사실이지만 2가 있지만
1) Specularity는 내 예와 같이 다른 크기뿐만 아니라 5에서도 관찰됩니다.
2) 배열에 역 인덱싱이 있는 경우 이론상 배열의 시작 부분에 새 셀이 나타나야 합니다. 이는 관찰되지 않습니다.

 
Alexey Viktorov # :

채운 후에 배열을 뒤집어야 합니다.

나도 그것에 대해 생각했습니다. 적어도 지금은 다른 해결책이 보이지 않습니다.

사유: