초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 1384

 

leonerd # :
Здравствуйте. А как программно узнать символ и таймфрейм активного чарта в клиентском терминале? Т.е. чарта выбранного в настоящее время во вкладке. Есть какая-то функция из MQL5 для этого?

long    ChartGetInteger (
   long   chart_id,           // идентификатор графика
   int    prop_id,           // идентификатор свойства
   int    sub_window= 0        // номер подокна, если требуется
   );

CHART_BRING_TO_TOP

다른 모든 항목 위에 그래프 표시

부울


 string    ChartSymbol (
   long   chart_id= 0        // идентификатор графика
   );
 ENUM_TIMEFRAMES    ChartPeriod (
   long   chart_id= 0        // идентификатор графика
   );

표시할 차트 ID를 정의하는 방법은 무엇입니까?

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

CHART_BRING_TO_TOP

다른 모든 항목 위에 그래프 표시

부울


표시할 차트 ID를 정의하는 방법은 무엇입니까?

https://www.mql5.com/ru/docs/constants/chartconstants/charts_samples#chart_foreground

고맙습니다. CHART_FOREGROUND가 가장 적합할 것입니다. 활성 일정을 강제할 필요는 없지만 활성 일정만 결정합니다. CHART_FOREGROUND 검사를 통해 열려 있는 모든 차트를 검토해야 한다는 것을 정확히 이해하고 있습니까?

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

https://www.mql5.com/ru/docs/constants/chartconstants/charts_samples#chart_foreground

고맙습니다. CHART_FOREGROUND가 가장 적합할 것입니다. 활성 일정을 강제할 필요는 없지만 활성 일정만 결정합니다. CHART_FOREGROUND 검사를 통해 열려 있는 모든 차트를 검토해야 한다는 것을 정확히 이해하고 있습니까?

CHART_FOREGROUND 는 위에서 본 차트입니다.

그리고 강제하지 않으려면 ChartSetInteger를 ChartGetInteger로 바꿔야 합니다.

 

안녕하세요.
로봇에 대한 생각이 있고 4가지 다른 조건이 있습니다. 그 중 어느 것을 아직 제거해야 할지 모르겠습니다. 나중에 다른 시간대에 최적화할 때 알고 싶습니다.

즉, 4가지 조건(f1,f2,f3,f4)입니다. 많은 조합(0,0,1,1) 또는 (1,0,1,0) 등이 있을 수 있습니다(총 16개 조합). 더 정확하게는 15 - 옵션(0, 0, 0, 0)은 고려되지 않습니다.

질문: 코드의 15가지 조합을 모두 설명하지 않도록 프로그램의 논리를 구성하는 방법. 각각의 조건을 확인하고 어떤 조합으로 조건이 적용되는지 확인하는 기능이 있습니다. 어떻게든 다르게 확인하세요.

간결한 코드로 많은 조건을 도입 할 수있는 일종의 고문을 보여 주시면 기쁠 것입니다.

 
qadexys # :

안녕하세요.
로봇에 대한 생각이 있고 4가지 다른 조건이 있습니다. 그 중 어느 것을 아직 제거해야 할지 모르겠습니다. 나중에 다른 시간대에 최적화할 때 알고 싶습니다.

즉, 4가지 조건(f1,f2,f3,f4)입니다. 많은 조합(0,0,1,1) 또는 (1,0,1,0) 등이 있을 수 있습니다(총 16개 조합). 더 정확하게는 15 - 옵션(0, 0, 0, 0)은 고려되지 않습니다.

질문: 코드의 15가지 조합을 모두 설명하지 않도록 프로그램의 논리를 구성하는 방법. 각각의 조건을 확인하고 어떤 조합으로 조건이 적용되는지 확인하는 기능이 있습니다. 어떻게든 다르게 확인하세요.

간결한 코드로 많은 조건을 도입 할 수있는 일종의 고문을 보여 주시면 기쁠 것입니다.

다음과 같이 가능합니다.

 input bool F1;
input bool F2;
input bool F3;
input bool F4;

   ...
   if (  ( !F1 || f1)
      &&( !F2 || f2)
      &&( !F3 || f3)
      &&( !F4 || f4)
     )
     {
      open_pos();
     }
   ...

또는 다음과 같은 것:

 #define MODE_f1     0x1
#define MODE_f2     0x2
#define MODE_f3     0x4
#define MODE_f4     0x8

bool expert::create_strategy( ulong m, int om, int cm)
  {
   magic=m;
   open_mode=om;
   close_mode=cm;
   ...
  }

int OnInit ()
  {
   ...
   my_strat[i].create_strategy(MAGIC, MODE_f1|MODE_f2|MODE_f4,MODE_c2|MODE_c3);
   ...
  }

expert::check_open()
  {
   ...
   if (  ((open_mode & MODE_f1)== 0 || f1)
      &&((open_mode & MODE_f2)== 0 || f2)
      &&((open_mode & MODE_f3)== 0 || f3)
      &&((open_mode & MODE_f4)== 0 || f4)
     )
     {
      open_pos();
     }
   ...
  }
 
Alexey Viktorov # :

CHART_FOREGROUND 는 위에서 본 차트입니다.

그리고 강제하지 않으려면 ChartSetInteger를 ChartGetInteger로 바꿔야 합니다.

고맙습니다

 
JRandomTrader # :

다음과 같이 가능합니다.

또는 다음과 같은 것:

그리고 여기 첫 번째 구성이 있습니다. 코드의 동작은 조건(0, 1, 0, 1)에서 어떻게 될까요?

If 조건의 본문을 설명해 주시겠습니까?

 
qadexys # :

그리고 여기 첫 번째 구성이 있습니다. 코드의 동작은 조건(0, 1, 0, 1)에서 어떻게 될까요?

If 조건의 본문을 설명해 주시겠습니까?

여기에서는 모든 것이 매우 간단합니다. F1==false이면 ( !F1 || f1)은 f1 조건에 관계없이 참이 됩니다.

즉, Fn==true이면 fn 조건을 확인하고, Fn==false이면 fn 조건을 확인하지 않습니다.

따라서 (0, 1, 0, 1)의 경우 f2와 f4 조건만 확인하고 둘 다 참이면 open_pos() 코드가 실행됩니다.

 
JRandomTrader # :

여기에서는 모든 것이 매우 간단합니다. F1==false이면 ( !F1 || f1)은 f1 조건에 관계없이 참이 됩니다.

즉, Fn==true이면 fn 조건을 확인하고, Fn==false이면 fn 조건을 확인하지 않습니다.

따라서 (0, 1, 0, 1)의 경우 f2와 f4 조건만 확인하고 둘 다 참이면 open_pos() 코드가 실행됩니다.

하지만 f1 등이 0이나 1이 아닌 경우. 숏 포지션에 대해 f1의 조건이 충족되면 1이 반환된다고 생각했습니다. 긴 경우 - 다음 2. 조건이 전혀 충족되지 않는 경우 - 0.

그러나 그러한 구성에서 다양한 매개 변수 값에 의존하고 다른 방식으로 조건을 공식화하는 것은 가치가 없을 것입니다.

 
qadexys # :

하지만 f1 등이 0이나 1이 아닌 경우. 숏 포지션에 대해 f1의 조건이 충족되면 1이 반환된다고 생각했습니다. 긴 경우 - 다음 2. 조건이 전혀 충족되지 않는 경우 - 0.

그러나 그러한 구성에서 다양한 매개 변수 값에 의존하고 다른 방식으로 조건을 공식화하는 것은 가치가 없을 것입니다.

롱과 숏을 따로따로 여는 조건이 있습니다.

즉, 예를 들면 다음과 같습니다.

 ...
   if (  ( !F1 || f1== 1 )
      &&( !F2 || f2== 1 )
      &&( !F3 || f3== 1 )
      &&( !F4 || f4== 1 )
     )
     {
      open_short();
     }
   else if (  ( !F1 || f1== 2 )
           &&( !F2 || f2== 2 )
           &&( !F3 || f3== 2 )
           &&( !F4 || f4== 2 )
          )
     {
      open_long();
     }
 ...

다행스럽게도 변수의 "전투"값과 위치 유지 조건에 대한 정보가 없으면 실제 코드의 일부를 구울 것입니다. 노하우는 공개되지 않습니다.

여기에서 실제로 224개 옵션 중 하나를 설정할 수 있습니다.

   if ( true
      && ((OpenMode & MODE_St1)== 0 || St_Buf[St_Rq- 1 ]> 80 )
      && ((OpenMode & MODE_St2)== 0 || St_Buf2[St_Rq- 1 ]> 80 )
      && ((OpenMode & MODE_BB1)== 0 || last_tick.bid > bb[BandsReq- 1 ].U)
      && ((OpenMode & MODE_BB2)== 0 || last_tick.bid > bb2[BandsReq- 1 ].U)
      && ((OpenMode & MODE_D1)== 0   || rt[RtReq- 1 ].high<rt[RtReq- 2 ].high) 
     )
     {
       switch (OpenMode & (MODE_VR|MODE_OR|MODE_A))
        {
         case 0 :
         case MODE_A :
           res=- 2 ;
           break ;
         case MODE_VR :
           if (( 1 /VR)>VRO)
             res=- 2 ;
           break ;
         case MODE_OR :
           if (( 1 /OR)>VRO)
             res=- 2 ;
           break ;
         case MODE_VR|MODE_A :
           if (( 1 /AVR)>VRO)
             res=- 2 ;
           break ;
         case MODE_OR|MODE_A :
           if (( 1 /AOR)>VRO)
             res=- 2 ;
           break ;
         case MODE_VR|MODE_OR :
           if (( 1 /VR)>VRO && ( 1 /OR)>VRO)
             res=- 2 ;
           break ;
         case MODE_VR|MODE_OR|MODE_A :
           if (( 1 /AVR)>VRO && ( 1 /AOR)>VRO)
             res=- 2 ;
           break ;
        }
사유: