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

 
Artyom Trishkin :

나는 무엇을해야하는지 위에 보여 주었다. 개발자가 권장하는 방법이 있으면 왜 그렇게 귀찮게합니까?

그러나 실제로 어떤 시간 프레임을 대상으로 표시할지 여부를 선택하는 문제였습니까?

차트에 거래 패널이 있다고 가정해 보겠습니다. 그런 다음 수동으로 개체(거래 수준, 수직선 , 직사각형)를 만듭니다.

그리고 내가 수동으로 만든 모든 것이 거래 패널에 겹쳐집니다. 모든 개체는 동일한 시간 프레임에 있습니다.

그리고 이 경우 "개발자 권장 방법"이 어떻게 도움이 될까요?

 
Aliaksei Karalkou :
안녕하세요.

ATP 지표를 가격 차트로 옮기고 싶습니다. 하지만 정확히 방법을 알 수 없습니다. 따라서 같은 기간의 중간선에서 변동성의 최대 움직임을 보여줍니다. 누구든지 코드를 가지고 있다면 공유해주시면 감사하겠습니다.

https://www.mql5.com/en/code/23304

Multi_ATR_Bands
Multi_ATR_Bands
  • www.mql5.com
Индикатор Three ATR Bands with multiple selection
 
Artyom Trishkin :

OBJPROP_TIMEFRAMES 속성:

OBJ_NO_PERIODS - 모든 기간에 보이지 않음,

OBJ_ALL_PERIODS - 모든 기간에 표시

고맙습니다.

이 방법은 실제로 작동하고 매우 컴팩트한 것으로 판명되었습니다.

이제 개체는 다른 모든 개체보다 시각적으로 유지됩니다.

 
Maksym Mudrakov :

그러나 실제로 어떤 시간 프레임을 대상으로 표시할지 여부를 선택하는 문제였습니까?

차트에 거래 패널이 있다고 가정해 보겠습니다. 그런 다음 수동으로 개체(거래 수준, 수직선 , 직사각형)를 만듭니다.

그리고 내가 수동으로 만든 모든 것이 거래 패널에 겹쳐집니다. 모든 개체는 동일한 시간 프레임에 있습니다.

그리고 이 경우 "개발자 권장 방법"이 어떻게 도움이 될까요?

나는 당신의 제안을 메모했지만 객체를 삭제하고 다시 렌더링했을 때 깜박였습니다.

Artyom Trishkin 이 제안한 방법이 실제로 작동합니다!

이제 개체의 다시 그리기 및 깜박임이 없으며 무엇보다 시각적으로 유지됩니다.

그건 그렇고, 제 경우 이것은 또한 거래 패널이며, 이는 개방 및 폐쇄 거래 작업의 화살표로 차단되었습니다.

내가 문제를 해결한 방법:

 // Глобальное объявление
int last_tick_objects = 0 ;                 // количество объектов на прошлом тике
// имена графических объектов:
string tp_rctngl = "TP Rectangle" ;
string sl_rctngl = "SL Rectangle" ;
string vol_rctngl = "Volume Rectangle" ;

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
   long cid = ChartID ();
   if ( ObjectsTotal () != last_tick_objects)   // количество объектов поменялось
     {
      last_tick_objects = ObjectsTotal();    // запоминаем новое количество объектов
       // выводим на передний план объекты: tp_rctngl, sl_rctngl, vol_rctngl
       if ( ObjectFind (cid, tp_rctngl) > - 1 ) // объект существует
        {
         ObjectSetInteger (cid, tp_rctngl, OBJPROP_TIMEFRAMES , OBJ_NO_PERIODS );   // делаем невидимым на всех таймах
         ObjectSetInteger (cid, tp_rctngl, OBJPROP_TIMEFRAMES , OBJ_ALL_PERIODS ); // делаем видимым на всех таймах
        }
       //---
       if ( ObjectFind (cid, sl_rctngl) > - 1 ) // объект существует
        {
         ObjectSetInteger (cid, sl_rctngl, OBJPROP_TIMEFRAMES , OBJ_NO_PERIODS );   // делаем невидимым на всех таймах
         ObjectSetInteger (cid, sl_rctngl, OBJPROP_TIMEFRAMES , OBJ_ALL_PERIODS ); // делаем видимым на всех таймах
        }
       //---
       if ( ObjectFind (cid, vol_rctngl) > - 1 ) // объект существует
        {
         ObjectSetInteger (cid, vol_rctngl, OBJPROP_TIMEFRAMES , OBJ_NO_PERIODS ); // делаем невидимым на всех таймах
         ObjectSetInteger (cid, vol_rctngl, OBJPROP_TIMEFRAMES , OBJ_ALL_PERIODS ); // делаем видимым на всех таймах
        }
       ChartRedraw (cid); // перерисовка графика для применения изменений
     }
  }
//+------------------------------------------------------------------+
 

저는 때때로 서로 다른 재계산의 여러 긴 주기(예: 12, 24, 48시간마다 한 번)를 수행해야 하는 Expert Advisor를 작성하고 있습니다. 이러한 각 재계산은 하나의 코어(즉, 하나의 스레드에서)에서 1.5-2시간 지속되며 자체적으로 이 Expert Advisor와의 새로운 틱 및 거래 처리를 일시 중단합니다.

... 이러한 계산은 다른 스레드의 다른 Expert Advisor에게 위임할 수 있으며 Expert Advisor 간의 최종 데이터 전송은 EventChartCustom 함수와 OnChartEvent 이벤트 핸들러를 사용하여 정렬할 수 있습니다.


하지만 EA를 시장에 공개할 수 있어야 하므로 한 스레드에서 재계산 및 재계산을 위임하는 것은 적합하지 않습니다. C++의 스레드 라이브러리와 유사한 것이 있거나 MQL5에서 이러한 특정 Expert Advisor를 구현하기 위한 다른 옵션이 있습니까? (사이트의 검색 엔진에 "Documentation" 필터가 있는 "thread"라는 단어를 입력했는데 아무 것도 없었습니다)

 
Oleg Remizov :

나는 당신의 제안을 메모했지만 객체를 삭제하고 다시 렌더링했을 때 깜박였습니다.

Artyom Trishkin 이 제안한 방법이 실제로 작동합니다!

이제 개체의 다시 그리기 및 깜박임이 없으며 무엇보다 시각적으로 유지됩니다.

그건 그렇고, 제 경우 이것은 또한 거래 패널이며, 이는 개방 및 폐쇄 거래 작업의 화살표로 차단되었습니다.

문제를 해결한 방법:

사실은 삭제 및 렌더링이 자주 발생하기 때문에 깜박임이 발생하므로 새 개체의 모양만 잡아야 합니다. 이 방법이 효과가 있으면 물론 서비스에 사용할 수도 있지만 문서에는 그러한 유용한 속성에 대해 언급되어 있지 않으므로 주의를 기울이지 않았습니다.

개체를 구축하는 타사 지표와 함께 고유한 거래 패널을 사용하는 경우 문제가 남아 있습니다.

 
Maksym Mudrakov :

그러나 실제로 어떤 시간 프레임을 대상으로 표시할지 여부를 선택하는 문제였습니까?

차트에 거래 패널이 있다고 가정해 보겠습니다. 그런 다음 수동으로 개체(거래 수준, 수직선 , 직사각형)를 만듭니다.

그리고 내가 수동으로 만든 모든 것이 거래 패널에 겹쳐집니다. 모든 개체는 동일한 시간 프레임에 있습니다.

그리고 이 경우 "개발자 권장 방법"이 어떻게 도움이 될까요?

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

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

올렉 레미조프 , 2020.04.26 14:44

고맙습니다.

이 방법은 실제로 작동하고 매우 컴팩트한 것으로 판명되었습니다.

이제 개체는 다른 모든 개체보다 시각적으로 유지됩니다.


 
Maksym Mudrakov :

사실은 삭제 및 렌더링이 자주 발생하기 때문에 깜박임이 발생하므로 새 개체의 모양만 잡아야 합니다. 이 방법이 효과가 있으면 물론 서비스에 사용할 수도 있지만 문서에는 그러한 유용한 속성에 대해 언급되어 있지 않으므로 주의를 기울이지 않았습니다.

개체를 구축하는 타사 지표와 함께 고유한 거래 패널을 사용하는 경우 문제가 남아 있습니다.

유일하게 가장 수용 가능한 방법은 Slava가 권장했습니다. 당신은 그의 메시지에서 검색할 수 있습니다 - 그것은 프로필에 있습니다 - 출판물/모든 메시지.

그리고 예, 모든 개체를 다시 만드는 방법이 같은 상황에서 어떻게 도움이 될까요?

 
Artyom Trishkin :

유일하게 가장 수용 가능한 방법은 Slava가 권장했습니다. 당신은 그의 메시지에서 검색할 수 있습니다 - 그것은 프로필에 있습니다 - 출판물/모든 메시지.

그리고 예, 모든 개체를 다시 만드는 방법이 같은 상황에서 어떻게 도움이 될까요?

타사 표시기를 사용하여 다음을 수행하고 ObjectsTotal()을 추적해야 하며 내 패널 개체의 가장 높은 인덱스가 ObjectsTotal()-1보다 작은 경우 패널을 다시 만듭니다. 먼저 모든 종류의 상황에서 방법을 시도해야 하지만 지금까지는 Object Visibility 를 사용할 때 더 많은 자유를 보지 못했습니다.
 
Artyom Trishkin :

Meta Trader 5를 빌드할 수 없습니다.