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

 
Artyom Trishkin :

2. "0보다 큼"은 무엇을 의미합니까?

버퍼에 가격이 있고 그렇지 않으면 버퍼에 가격이 없음을 의미합니다.

Artyom Trishkin :

데이터 창에서 이 표시기의 버퍼 값에 표시되는 것은 무엇입니까?

가격 아니면 아무것도.
 
Ghabo :

버퍼에 가격이 있고 그렇지 않으면 버퍼에 가격이 없음을 의미합니다.

EMPTY_VALUE 값 - 많은 표시기에서 기본적으로 사용되는 "빈" 버퍼 값에는 0보다 훨씬 큰 값 DBL_MAX가 있습니다. 그래서 내가 묻는거야.

(M_A > 0 && M_A < EMPTY_VALUE)인지 확인하십시오.

 
Artyom Trishkin :

EMPTY_VALUE 값 - 많은 표시기에서 기본적으로 사용되는 "빈" 버퍼 값에는 0보다 훨씬 큰 값 DBL_MAX가 있습니다. 그게 내가 묻는 이유야.

(M_A > 0 && M_A < EMPTY_VALUE)인지 확인하십시오.

신호가 있습니다. 그게 다야?

 void OnInit () {
  time= Time [ 0 ];
}
//////////////////////////////
if (М_А> 0 && M_A < EMPTY_VALUE )  
{
if (time!= Time [ 0 ])
   {
    time= Time [ 0 ]; 
    AL( Symbol ()+ " " + Period ()+ " УХ ТЫ" , 2 ); //
   }
 }

따라서 시작 시에는 경고가 표시되지 않지만 표시기가 부착되는 동안 막대에 신호가 나타날 때입니까?

초기화하는 동안 시간이 이미 바 여는 시간과 같을지 의심됩니다.

결정하는 방법?

 
Ghabo :

신호가 있습니다. 그게 다야?

따라서 시작 시에는 경고가 표시되지 않지만 표시기가 부착되는 동안 막대에 신호가 나타날 때입니까?

초기화하는 동안 시간이 이미 바를 여는 시간과 같은지 의심스럽습니다 .

결정하는 방법?

OnInit()에서 시간으로 시간 초기화 제거

 void OnCalculate ()
  {
   static datetime time= 0 ;
//---
   if (М_А> 0 && M_A < EMPTY_VALUE )  
     {
       if (time!= Time [ 0 ])
        {
         time= Time [ 0 ]; 
         AL( Symbol ()+ " " + Period ()+ " УХ ТЫ" , 2 ); //
        }
     }
  }
 
Taras Slobodyanik :

모든 것이 준비되었으므로 쓰기/읽기를 추가하기만 하면 됩니다.

이 코드가 작동합니까 아니면 작동해야 합니까? 실제 ID로 전역 변수 에서 추출한 후 동의하지 않습니다. 그리고 가능하다면 지표 형태의 예. 고맙습니다.
 
inter78 :
이 코드가 작동합니까 아니면 작동해야 합니까? 실제 ID로 전역 변수 에서 추출한 후 동의하지 않습니다. 그리고 가능한 경우 지표 형태의 예. 고맙습니다.

내 코드는 작동하지만 귀하의 코드는 보이지 않습니다.
제발)

 

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

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

타라스 슬로보디아닉 , 2018.10.05 11:01

글쎄, 전역 변수를 사용하면 복잡하지 않습니다.
- 변수 이름은 접두사+기호+마침표, 값 = 차트 ID
- 처음에는 접두사를 사용하여 변수를 정렬하고 id를 비교합니다.
- 차트가 우리 것이 아닌 경우 해당 차트가 있는지 확인하고 차트가 더 이상 존재하지 않으면 변수 삭제
- 차트가 우리 것인 경우 - 이름에서 기호와 마침표를 가져오고 변수도 삭제합니다(또는 다시 덮어씁니다).



변수 접두사가 무엇이며 왜 필요한지 도움말에서 아무 것도 찾지 못했습니다. 이러한 전역 변수를 만드는 방법의 예를 들어 주십시오.

GPT는 4주동안 저장된다고 써있는데 이건 단말기를 꺼도 되나요?

 
psyman :

변수 접두사가 무엇이며 왜 필요한지 도움말에서 아무 것도 찾지 못했습니다. 이러한 전역 변수를 만드는 방법의 예를 들어 주십시오.

GPT는 4주동안 저장된다고 써있는데 이건 단말기를 꺼도 되나요?

접두사에 대해 이름의 접두사를 의미하므로 자신의 변수가 어디에 있는지, 다른 사람이 어디에 있는지 확인할 수 있으며 접두사로 모든 변수를 한 번에 삭제할 수 있습니다.

 int    GlobalVariablesDeleteAll ( 
   string      prefix_name= NULL ,     // все глобальные переменные, чьи имена начинаются с префикса 
   datetime    limit_data= 0            // все глобальные переменные, которые изменялись ранее ранее указанной даты 
   );

예를 들어:

 string    GV_prefix= "ZZ_" ;                                               //префикс имени для всех своих
string    prefix_gv=GV_prefix+ _Symbol + "_" +TFtoStr(ind_period)+ "_" ;       //префикс имени для конкретного символа и периода

GlobalVariablesDeleteAll (prefix_gv); //удалить все переменные со своим префиксом


   //создание и запись глобальных переменных в цикле
   int num= 0 ;
   for ( int i=lines_all- 1 ;i>=end;i--)
      {
       string name=prefix_gv+ "Price_" + IntegerToString (num, 4 , '0' );
       if ( GlobalVariableCheck (name) || GlobalVariableTemp (name))
         GlobalVariableSet (name, Line_ALL[i].price);
      
      name=prefix_gv+ "TimeBeg_" + IntegerToString (num, 4 , '0' );
       if ( GlobalVariableCheck (name) || GlobalVariableTemp (name))
         GlobalVariableSet (name, Line_ALL[i].time_start);
      
      name=prefix_gv+ "TimeEnd_" + IntegerToString (num, 4 , '0' );
       if ( GlobalVariableCheck (name) || GlobalVariableTemp (name))
         GlobalVariableSet (name, Line_ALL[i].time_end);
      
      name=prefix_gv+ "Visible_" + IntegerToString (num, 4 , '0' );
       if ( GlobalVariableCheck (name) || GlobalVariableTemp (name))
         GlobalVariableSet (name, Line_ALL[i].visible);
      
      name=prefix_gv+ "Direction_" + IntegerToString (num, 4 , '0' );
       if ( GlobalVariableCheck (name) || GlobalVariableTemp (name))
         GlobalVariableSet (name, Line_ALL[i].direct);
      
      num++;
      }


추신. 이름은 정보를 저장/검색할 수도 있습니다.

 

이제 우리가 말하는 내용이 명확해졌습니다.

= 변수 이름은 접두사+기호+마침표, 값 = 차트 ID

왜 그렇게 어렵습니까? 마침표만 저장하고 싶다면 차트 ID의 이름을 만들면 됩니다.

 
psyman :

이제 우리가 말하는 것이 분명합니다.

= 변수 이름은 접두사+기호+마침표, 값 = 차트 ID

왜 그렇게 어렵습니까? 마침표만 저장하고 싶다면 차트 ID의 이름을 만들면 됩니다.

예시로 쓰고 있습니다)

기호를 기억하는 것이 불필요한 경우 예, 기억할 수 없습니다.

이름이 차트 ID뿐인 경우 불필요한 변수를 삭제하는 방법은 무엇입니까?
(자주 사용하면 많은 변수가 입력됩니다)

접두사가 없는 경우 - 동일한 경우 불필요한 변수를 제거하는 방법은 무엇입니까?