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

 
Roni Iron :

좋아요 여러분!


질문: 막대의 높낮이를 결정하는 가장 쉬운 방법은 무엇입니까?

개점 / 폐점 시간 은 흥미롭지 않습니다.

MT4에서.

고맙습니다!

이거 했어

KB https://www.mql5.com/en/code/25897 에 게시됨

 

MT4에는 미리 정의된 이중 Ask 변수가 있었고 제가 이해하는 한,   강제되지 않은 내부 void OnTick()

RereshRates는 값을 변경하지 않았습니다.

MT5에서 Ask는 MqlTick last_tick으로 대체되었습니다. SymbolInfoTick(_Symbol,last_tick); 이중 Ask=last_tick.ask;   그 값은 항상 새로운 틱으로 업데이트됩니다 .  

내 문제는 Ask + X 값으로 선의 좌표를 설정해야 하지만 MT5에서는 값이 변경된 후 선의 좌표가 변경되기 때문에 더 이상 이 작업을 수행할 수 없다는 것입니다.

Ask=last_tick.ask. 당신은 무엇을 조언합니까?

Документация по MQL5: Предопределенные переменные
Документация по MQL5: Предопределенные переменные
  • www.mql5.com
Для каждой выполняющейся mql5-программы поддерживается ряд предопределенных переменных, которые отражают состояние текущего ценового графика на момент запуска программы - эксперта, скрипта или пользовательского индикатора. Значение предопределенным переменным устанавливает клиентский терминал перед запуском mql5-программы на выполнение...
 
WinProject :

MT4에는 미리 정의된 이중 Ask 변수가 있었고 제가 이해하는 한,   강제되지 않은 내부 void OnTick()

RereshRates는 값을 변경하지 않았습니다.

MT5에서 Ask는 MqlTick last_tick으로 대체되었습니다. SymbolInfoTick(_Symbol,last_tick); 이중 Ask=last_tick.ask;   그 값은 항상 새로운 틱으로 업데이트됩니다 .  

내 문제는 Ask + X 값으로 선의 좌표를 설정해야 하지만 MT5에서는 값이 변경된 후 선의 좌표가 변경되기 때문에 더 이상 이 작업을 수행할 수 없다는 것입니다.

Ask=last_tick.ask. 당신은 무엇을 조언합니까?

이것은 어떻게 변하지 않았습니까? 매 틱마다 변경됩니다. 그러나 사이클에서는 예, 변경되지 않았습니다. 어쩌면 당신은 이것으로 엉망이 되었습니까?

그러나 mql5에서도 사이클 이전에 현재 가격을 결정할 수 있으며 사이클을 종료할 때까지 변경되지 않습니다.

 
여러분, 어리석은 질문에 대해 죄송합니다. MT4 터미널에서는 커미션, 스왑 등을 고려한 수익을 보여줍니다. MT5에서는 "naked"로 표시됩니다. mt5가 mt4처럼 표시되도록 설정이 있는지 찾을 수 없습니까? 아니면 방법을 모르나요?
 

OBJ_TEXT 에 작성된 텍스트의 너비를 픽셀 단위로 측정하는 방법이 있습니까?

 
Alexey Viktorov :

이것은 어떻게 변하지 않았습니까? 매 틱마다 변경됩니다. 그러나 주기에서는 예, 변경되지 않았습니다. 어쩌면 당신은 이것으로 엉망이 되었습니까?

그러나 mql5에서도 사이클 이전에 현재 가격을 결정할 수 있으며 사이클을 종료할 때까지 변경되지 않습니다.

예, 감사합니다. 내 가정이 잘못된 것으로 판명되었지만 질문은 조금 다릅니다. MT4 및 MT5 에 대해 동일한 코드가 있습니다.

 void OnTick ()
              {
               string S= Symbol ();
               double LastAsk= SymbolInfoDouble (S, SYMBOL_ASK );
               ObjectCreate ( 0 , "hLine" , OBJ_HLINE , 0 , 0 ,LastAsk + 500 * Point ());
              }

문제는 MT4 에서 생성된 라인이 생성된 가격으로 고정되고 MT5에서 매번 새로운 틱에서 라인이 새로운 LastAsk 값으로 그려지고 그 위치가 가격과 함께 변경된다는 것입니다. MT5에서 이것을 어떻게 피할 수 있습니까?

 
WinProject :

예, 감사합니다. 내 가정이 잘못된 것으로 판명되었지만 질문은 조금 다릅니다. MT4 및 MT5 에 대해 동일한 코드가 있습니다.

문제는 MT4 에서 생성된 라인이 생성된 가격으로 고정되고 MT5에서 매번 새로운 틱에서 라인이 새로운 LastAsk 값으로 그려지고 그 위치가 가격과 함께 변경된다는 것입니다. MT5에서 이것을 어떻게 피할 수 있습니까?

이름으로 행이 있는지 확인하십시오. 아니요 - 생성합니다. 이것들은 일반적인 기본 사항입니다
 
Artyom Trishkin :
이름으로 줄이 있는지 확인하십시오. 아니오 - 생성합니다. 이것들은 일반적인 기본 사항입니다

감사합니다. 프로그래밍 논리의 기본 사항에 대해 무엇을 더 읽어야 할까요? 기초적인 것 같지만 처음부터 추측하기는 어렵습니다.

 if ( ObjectFind ( 0 , "hLine" ))

조건을 추가했고 모든 것이 작동했습니다.

 
WinProject :

감사합니다. 프로그래밍 논리의 이러한 기본 사항에 대해 무엇을 더 읽어야 할까요? 기본적인 것 같지만 처음부터 추측하기는 어렵습니다.

조건을 추가했고 모든 것이 작동했습니다.

갑자기 (그러나 평소와 같이) ObjectGetInteger(0,objectName,OBJPROP_TYPE)가 더 빠릅니다.

ObjectFind는 동기식 명령으로 차트 개체의 완전한 업데이트(및 가용성)를 기다립니다. 사용 시 상당한 지연이 발생합니다.

자신의 개체(즉, 응용 프로그램에서 만든 개체)로 작업하는 경우 ObjectFind를 사용 하면 안 됩니다. 개체가 생성된 창과 개체가 존재할 가능성이 가장 높고 원하는 유형이라는 것을 이미 알고 있습니다.
최대 문제 - 사용자가 개체를 삭제하거나 속성을 변경했다는 사실

 
WinProject :

예, 감사합니다. 내 가정이 잘못된 것으로 판명되었지만 질문은 조금 다릅니다. MT4 및 MT5 에 대해 동일한 코드가 있습니다.

문제는 MT4 에서 생성된 라인이 생성된 가격으로 고정되고 MT5에서 매번 새로운 틱에서 라인이 새로운 LastAsk 값으로 그려지고 그 위치가 가격과 함께 변경된다는 것입니다. MT5에서 이것을 어떻게 피할 수 있습니까?

그래서 나는 기억이 나지 않지만 확인이 필요하지만 꺼려합니다. mql4에서는 이미 존재하는 이름으로 객체를 생성하려고 할 때 단순히 오류가 반환되었지만 mql5에서는 더 이상 오류가 아니라 좌표가 다른 경우 매개변수 수정이 반환되었을 수 있습니다.

Artyom이 말했듯이 - 물체의 존재를 확인하십시오

 int    ObjectFind ( 
   long     chart_id,     // идентификатор графика 
   string   name           // имя объекта 
   );