전문 고문 - 기타 질문 - 페이지 17

 

#주문 계산 및 계정 정보 업데이트 - 열기

( 한 번 요청했지만 여전히 도움이 필요합니다 )

OnTick() 또는 Start() 로 계산 함수를 호출하고 Chart Symbol Ticks 에 의존합니다.
그리고 EA의 계산 업데이트가 Ticks 및 Symbols( / Chart - Ticks, Symbols )에 의존하지 않는 방법을 연구하기 시작했습니다.
'모든 주문 계산 및 계정 정보' 를 하려고 하면 '터미널 > 거래'와 동기화(/실시간) 가 업데이트됩니다.

도와주세요. 감사합니다.
미리 감사드립니다.

 

OnTimer()

https://www.mql5.com/en/docs/basis/function/events#ontimer

그리고 SymbolName(x,1);
Documentation on MQL5: Language Basics / Functions / Event Handling Functions
Documentation on MQL5: Language Basics / Functions / Event Handling Functions
  • www.mql5.com
Language Basics / Functions / Event Handling Functions - Reference on algorithmic/automated trading language for MetaTrader 5
 
Marco vd Heijden :

그리고 SymbolName(x,1);

도움이 되는 좋은 댓글, 정말 감사합니다.
이제 OnTick() 및 OnTimer()를 사용하고 있습니다. 두 기능 모두 저에게 잘 맞습니다. ( EA에 OnTimer()를 처음으로 사용)

---

또한 Ticks를 시도하고 싶습니다. '터미널 > 거래'의 기호( 쌍)와 현재 차트 기호의 Tick만 있으면 됩니다. 이 SymbolName()이 도움이 될까요?
저를 도와주시거나 조언을 주십시오. 어떻게 해야 할까요?

모두 제일 좋다.

 
   for(int i=0;i<SymbolsTotal(1);i++)
     {
      Print(i," Symbol: ",SymbolName(i,1)," Ask: ",MarketInfo(SymbolName(i,1),MODE_ASK)," Bid: ",MarketInfo(SymbolName(i,1),MODE_BID));
     }
 
Marco vd Heijden :
   for ( int i= 0 ;i< SymbolsTotal ( 1 );i++)
     {
       Print (i, " Symbol: " , SymbolName (i, 1 ), " Ask: " , MarketInfo ( SymbolName (i, 1 ), MODE_ASK ), " Bid: " , MarketInfo ( SymbolName (i, 1 ), MODE_BID ));
     }

저에게 놀라운 예와 정말 유용한 댓글 , 정말 감사합니다.

TicksTrade Pairs / Symbols 에서 올 수 있습니까?
거의 항상 내 Market Watch가 모든 기호를 표시하기 때문에 - 특히 저는 거래를 위한 새로운 좋은 쌍을 찾고 이것이 바로 현재 거래 틱을 여는 '터미널 > 거래' 기호/쌍을 얻을 수 있는 방법에 대한 몇 가지 방법을 연구하는 유일한 이유입니다 .

많은 감사드립니다.

 
아니요. 그러나 낮은 값으로 설정된 OnTimer() 함수 에서 가격을 업데이트할 수 있습니다. 예를 들어 250밀리초는 초당 4틱과 같으므로 왜 필요합니까?
 
Marco vd Heijden :
아니요. 그러나 낮은 값으로 설정된 OnTimer() 함수 에서 가격을 업데이트할 수 있습니다. 예를 들어 250밀리초는 초당 4틱과 같으므로 왜 필요합니까?

귀하의 의견에 감사드립니다.

( subtopic - #Orders Calculations & Account Info's Updates - Open ) 내가 언급한 것처럼 주문 이익 계산을 사용하는데 '터미널 > 거래'와 동기화되지 않는 것이 유일한 이유입니다.
그래서 때로는 변동성이 매우 낮고 Ticks가 가장 적게 나오며 기능이 1초에 4번 실행될 수 있으므로 아무 것도 실행하지 않을 수 있습니다( / 헛된 ).

주문 이익 계산 및 계정 정보( / 업데이트 ) 동기화에 대한 ' 터미널 > 거래 ' 눈금을 제공할 수 있는 방법을 찾을 수 없는 경우. 나는 당신의 매우 유용한 방법을 사용할 것입니다 - 당신이 당신의 마지막 코멘트에서 그 방법을 저에게 보여주었습니다. 대단히 감사합니다. (나는 이미 테스트했고 그 방법은 나를 작동합니다)

미리 감사드립니다.

 

글쎄, 당신이 그것에 정말로 관심이 있다면 다음을 사용할 수 있습니다.

struct MqlTick
  {
   datetime      time;           // Time of the last prices update
   double        bid;           // Current Bid price
   double        ask;           // Current Ask price
   double        last;           // Price of the last deal (Last)
   ulong         volume;         // Volume for the current Last price
   long          time_msc;       // Time of a price last update in milliseconds
   uint          flags           // Tick flags
  };

현재 가격을 반환하는 구조(MqlTick)

심볼의 최신 가격을 저장하기 위한 구조입니다. 현재 가격에 대해 가장 많이 요청된 정보를 빠르게 검색할 수 있도록 설계되었습니다.

MqlTick 유형의 변수를 사용하면 SymbolInfoTick() 함수의 단일 호출 내에서 Ask, Bid, Last 및 Volume 값을 얻을 수 있습니다.

각 틱의 매개 변수는 이전 틱과 비교하여 변경 사항이 있는지 여부에 관계없이 채워집니다. 따라서 틱 히스토리에서 이전 값을 검색할 필요 없이 과거의 어느 순간에도 정확한 가격을 찾을 수 있습니다. 예를 들어, 틱이 도착하는 동안 Bid 가격만 변경되더라도 구조에는 이전 Ask 가격, 볼륨 등을 포함한 다른 매개변수도 포함됩니다.

틱 플래그를 분석하여 정확히 어떤 데이터가 변경되었는지 확인할 수 있습니다.

  • TICK_FLAG_BID — 틱이 입찰 가격을 변경했습니다.
  • TICK_FLAG_ASK — 틱으로 인해 매도 가격이 변경되었습니다.
  • TICK_FLAG_LAST — 틱이 마지막 거래 가격을 변경했습니다.
  • TICK_FLAG_VOLUME — 틱이 볼륨을 변경했습니다.
  • TICK_FLAG_BUY — 틱은 구매 거래의 결과입니다.
  • TICK_FLAG_SELL — 틱은 판매 거래의 결과입니다.

예시:

void OnTick ()
  {
   MqlTick last_tick;
//---
   if ( SymbolInfoTick ( Symbol (),last_tick))
     {
       Print (last_tick.time, ": Bid = " ,last_tick.bid,
             " Ask = " ,last_tick.ask, "  Volume = " ,last_tick.volume);
     }
   else Print ( "SymbolInfoTick() failed, error = " , GetLastError ());
//---
  }

또한보십시오

https://www.mql5.com/en/docs/constants/structures/mqltick

구조 및 클래스 , CopyTicks() , SymbolInfoTick()

따라서 특정 기호에 대한 새 눈금이 있는지 확인하는 데 사용할 수 있지만 실제로는 가격 수준을 직접 읽는 것보다 한 단계 더 높기 때문에 다시 한 번 왜 필요할까요?

Documentation on MQL5: Standard Constants, Enumerations and Structures / Data Structures / Price Data Structure
Documentation on MQL5: Standard Constants, Enumerations and Structures / Data Structures / Price Data Structure
  • www.mql5.com
Standard Constants, Enumerations and Structures / Data Structures / Price Data Structure - Reference on algorithmic/automated trading language for MetaTrader 5
 

Marco vd Heijden :

글쎄, 당신이 그것에 정말로 관심이 있다면 다음을 사용할 수 있습니다. ...
따라서 특정 기호에 대한 새 눈금이 있는지 확인하는 데 사용할 수 있지만 실제로는 가격 수준을 직접 읽는 것보다 한 단계 더 높기 때문에 다시 한 번 왜 필요할까요?

유익한 의견 감사합니다. 감사합니다.

---

내가 옳다면 문장의 이 부분은 질문입니다.

... 왜 필요할까요?
한 가지 이유가 있습니다. 관련 없는 함수 루프/실행을 방지하려고 합니다.

(오늘 EA의 주문 이익 계산을 테스트하는 동안 계산이 지속적으로 업데이트 되었음을 언급하고 싶습니다. 이상) 분.
그리고 내가 테스트하는 동안 한 번 더 확실히 알게 된 것은 '터미널 > 거래' 틱만 제공하는 방법을 찾을 수 있었습니다. 다시 한 번 말씀드리고 싶은 것은 이유가 없습니다.
틱을 줄 수 있는 방법은 OnTick() 만 차트 기호에서 올 수 있다는 것을 알고 있습니다. 그리고 다른 사람들은 OnTimer() 그것은 나에게 1초에 4틱을 줄 수 있습니다... 등등. 제가 당신의 매우 유용하고 훌륭한 코멘트에서 배웠습니다. 그것에 대해 하나 더 감사합니다. )

그리고 내 상황을 설명해야 합니다.

내 주문 이익 계산은 내 EA가 차트 심볼에서 실행되는 동안 터미널 거래 패널과 동기화될 수 있습니다. 차트 심볼이 주문 심볼과 동일한 경우(예: EURUSD), 그러나 GBPUSD에 대한 새 위치를 열고 동기화가 터미널과 중단되면 무역 패널.
그리고 EURUSD에 대한 주문이 있지만 다른 차트 기호(예: GBPUSD, NZDUSD 등)에서 거래를 위한 새로운 좋은 쌍을 찾으려고 하는 경우 주문 이익 계산이 '터미널 > 거래' 패널과 동기화되지 않습니다.
(나는 이미 OnTimer()를 알고 있다는 것을 잊지 마십시오. 1초에 4틱을 사용할 수 있는 방법을 알려주셨습니다. )

그 모든 우려는 여기에서 비롯됩니다.

오늘 저는 단기 포지션을 오픈합니다. 만약 장기 포지션을 오픈한다면 터미널 무역과의 동기화에는 관심을 기울이지 않을 것입니다.

---

나는 당신이 지금 나를 더 명확하게 이해하기를 바랍니다.

모두 제일 좋다.

 

각 틱을 정말로 기다리고 싶다면 모든 기호에 대해 별도의 EA를 작성하고 OnTick() 함수 를 사용해야 합니다.

그러나 나는 또한 마이크로 컨트롤러를 프로그래밍하고 정전 또는 인터럽트가 발생할 때까지 무한 루프(영원히)에 있다고 말할 수 있습니다.

조건이 참인지 거짓인지 확인하려면 가장 작은 부울 데이터 유형을 사용하고 프로세서는 백그라운드에서 실행되는 모든 프로세스와 그래픽 등에서 초당 수십억 번은 아니더라도 수백만 번을 수행합니다.

더 큰 데이터 유형과 관련된 무거운 계산을 시작하면 이것이 문제가 됩니다.

사유: