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

 
Sprut 185 :

참여해주셔서 감사합니다.

불행히도 ObjectSet*** 기능   내 작업을 위해 작동하지 않았습니다.

OnDeinit() 함수를 사용하여 직접 문제를 알아냈습니다.

이제 모든 것이 제대로 작동합니다.

그러나 귀하의 질문에는 그러한 단어가 있습니다.

스프루트 185 :

한 가지 문제를 해결하도록 도와주세요!  

나는 단지 코드를 작성하는 법을 배우고 있으며 이와 관련하여 나는 당신이 나의 무지에 관대하기를 요청합니다.

 

시간 프레임을 변경하거나 표시기 메뉴의 설정을 변경할 때 차트의 그래픽 개체를 업데이트하고 표시기가 닫힐 때 차트에서 모든 그래픽 개체를 완전히 제거하는 OnChartEvent 기능을 이해하도록 도와주세요. - 이 표시기.

먼저 그래픽 개체를 삭제 한 다음 다시 만들어야 한다는 것을 이해합니다. 그러나 개체가 삭제되면 해당 속성에 더 이상 액세스할 수 없으며 다음과 같이   이 개체를 다시 만들려면 ....... , 또는 이해가 안되는 부분이 있습니까? 아니면 차트의 그래픽 개체를 업데이트하는 다른 방법이 있습니까?

이 작업을 수행하는 방법에 대한 의견과 함께 예제를 작성해 달라고 요청합니다.

그리고 삭제하지 않으려면 ObjectSet 함수 중 하나의 원하는 객체 속성을 변경하면 됩니다 *** .

모든 객체를 삭제할 경우………무분별하게 삭제할 때는 각별히 주의해야 합니다… 차트에 있는 객체 중 손이나 다른 EA/indicator에 의해 생성된 객체가 있을 수 있습니다. 객체 삭제 옵션에 만족한다면 접두사로 삭제하는 데 주의하십시오. 사실이며 접두사로 만들어야 합니다. 어렵지 않아요.

 
함수의 결과는 무엇입니까

아이스프레드?


터미널의 Symbols/Bars에서 Bar를 요청하면 스프레드 값과 거의 비슷하다고 생각합니다.

동시에 이러한 값은 SYMBOL_SPREAD에서 발행한 실제 값과 당연히 일치하지 않습니다.

왜 그런 차이가 있습니까? 그리고 iSpread 는 어떤 비현실적인 스프레드를 발행합니까?

 
Aleksei Skrypnev :
함수의 결과는 무엇입니까

아이스프레드?


터미널의 Symbols/Bars에서 Bar를 요청하면 스프레드 값과 거의 비슷하다고 생각합니다.

동시에 이러한 값은 SYMBOL_SPREAD에서 발행한 실제 값과 당연히 일치하지 않습니다.

왜 그런 차이가 있습니까? 그리고 iSpread 는 어떤 비현실적인 스프레드를 발행합니까?

바의 최소 스프레드.

확인하기 위해 하나의 버퍼를 추가했습니다. - Spread[] 표시기 배열에서 데이터를 가져오고 현재 막대에 대한 설명을 표시합니다. - iSpread의 결과


여기에서 명령을 실행하는 방법: 스프레드 제어

Spread Control
Spread Control
  • www.mql5.com
Просмотр спреда
파일:
 

인사말!

지금 이 순간을 말해주세요. "ATR14" 변수가 변경되지 않는 이유는 무엇입니까? 그리고 그 변화를 확인하는 방법은 무엇입니까?

 void OnTick ()
{

double ATR14= iATR ( NULL , PERIOD_CURRENT , 14 );

Comment (
 
       "ATR14==: " ,ATR14, "\n" );
}
 
Alexey Belyakov :

인사말!

이 순간을 말해주세요. "ATR14" 변수가 변경되지 않는 이유는 무엇입니까? 그리고 그 변화를 확인하는 방법은 무엇입니까?

MQL5에서 표시기 핸들(그리고 int 유형이 있음)은 한 번만 생성되고 이것은 OnInit에서 수행되기 때문입니다.

그리고 표시기에서 데이터를 가져오기 위해 CopyBuffer가 사용됩니다 .

 
Vladimir Karputov :

MQL5에서 표시기 핸들(그리고 int 유형이 있음)은 한 번만 생성되고 이것은 OnInit에서 수행되기 때문입니다.

그리고 표시기에서 데이터를 가져오기 위해 CopyBuffer가 사용됩니다 .

택시, 말하자면

double   ATR14m[];   

int ATR14;

int OnInit ()
  {
ATR14= iATR ( NULL , PERIOD_CURRENT , 14 );
   return ( 0 );   
  }
  
  
void OnDeinit ( const int reason)
  {
//---  
  }


void OnTick ()
{
CopyBuffer (ATR14, 0 , 0 , 3 ,ATR14m);



Comment (

       "ATR14==: " ,ATR14, "\n" );

}



아무것도 바뀌지 않았다

 
Alexey Belyakov :

인사말!

지금 이 순간을 말해주세요. "ATR14" 변수가 변경되지 않는 이유는 무엇입니까? 그리고 그 변화를 확인하는 방법은 무엇입니까?

여기에 예가 있습니다 https://www.mql5.com/ru/docs/indicators/iatr

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

택시, 말하자면

아무것도 바뀌지 않았다

거의 성공했습니다. 'ATR14m'이 아닌 'array_atr' 배열을 호출하는 것이 좋습니다. 그러면 ' 댓글 ' 호출에서 실수를 빠르게 확인할 수 있습니다.

 
Vladimir Karputov :

거의 성공했습니다. 'ATR14m'이 아닌 'array_atr' 배열을 호출하는 것이 좋습니다. 그러면 ' 댓글 ' 호출에서 실수를 빠르게 확인할 수 있습니다.

 double   array_atr[];   

int ATR14;

int OnInit ()
  {
ATR14= iATR ( NULL , PERIOD_CURRENT , 14 );
   return ( 0 );   
  }
   
void OnDeinit ( const int reason)
  {
//---  
  }

void OnTick ()
{


CopyBuffer (ATR14, 0 , 0 , 3 ,array_atr);

Comment (

       "ATR14==: " ,array_atr, "\n" );

}

변경 및 오류 발생: " 'array_atr' - 잘못된 배열 액세스 "


 
Vladimir Karputov :

거의 성공했습니다. 'ATR14m'이 아닌 'array_atr' 배열을 호출하는 것이 좋습니다. 그러면 ' 댓글 ' 호출에서 실수를 빠르게 확인할 수 있습니다.

어린이 냄비를 밤 꽃병이라고하면 뭔가 바뀔 것이라고 생각합니까?

그런 오해가 있어서 감히 뭔가 제안하려 하지도 않았는데... 이해하려면 문서를 50번은 읽어야 합니다...

사유: