OnTick() 또는 Start() 로 계산 함수를 호출하고 Chart Symbol Ticks 에 의존합니다. 그리고 EA의 계산 업데이트가 Ticks 및 Symbols( / Chart - Ticks, Symbols )에 의존하지 않는 방법을 연구하기 시작했습니다. '모든 주문 계산 및 계정 정보' 를 하려고 하면 '터미널 > 거래'와 동기화(/실시간) 가 업데이트됩니다.
Ticks 가 Trade Pairs / Symbols 에서 올 수 있습니까? 거의 항상 내 Market Watch가 모든 기호를 표시하기 때문에 - 특히 저는 거래를 위한 새로운 좋은 쌍을 찾고 이것이 바로 현재 거래 틱을 여는 '터미널 > 거래' 기호/쌍을 얻을 수 있는 방법에 대한 몇 가지 방법을 연구하는 유일한 이유입니다 .
Marco vd Heijden : 아니요. 그러나 낮은 값으로 설정된 OnTimer() 함수 에서 가격을 업데이트할 수 있습니다. 예를 들어 250밀리초는 초당 4틱과 같으므로 왜 필요합니까?
귀하의 의견에 감사드립니다.
( subtopic - #Orders Calculations & Account Info's Updates - Open ) 내가 언급한 것처럼 주문 이익 계산을 사용하는데 '터미널 > 거래'와 동기화되지 않는 것이 유일한 이유입니다. 그래서 때로는 변동성이 매우 낮고 Ticks가 가장 적게 나오며 기능이 1초에 4번 실행될 수 있으므로 아무 것도 실행하지 않을 수 있습니다( / 헛된 ).
주문 이익 계산 및 계정 정보( / 업데이트 ) 동기화에 대한 ' 터미널 > 거래 ' 눈금을 제공할 수 있는 방법을 찾을 수 없는 경우. 나는 당신의 매우 유용한 방법을 사용할 것입니다 - 당신이 당신의 마지막 코멘트에서 그 방법을 저에게 보여주었습니다. 대단히 감사합니다. (나는 이미 테스트했고 그 방법은 나를 작동합니다)
structMqlTick { 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 가격, 볼륨 등을 포함한 다른 매개변수도 포함됩니다.
Standard Constants, Enumerations and Structures / Data Structures / Price Data Structure - Reference on algorithmic/automated trading language for MetaTrader 5
글쎄, 당신이 그것에 정말로 관심이 있다면 다음을 사용할 수 있습니다. ... 따라서 특정 기호에 대한 새 눈금이 있는지 확인하는 데 사용할 수 있지만 실제로는 가격 수준을 직접 읽는 것보다 한 단계 더 높기 때문에 다시 한 번 왜 필요할까요?
유익한 의견 감사합니다. 감사합니다.
---
내가 옳다면 문장의 이 부분은 질문입니다.
... 왜 필요할까요? 한 가지 이유가 있습니다. 관련 없는 함수 루프/실행을 방지하려고 합니다.
(오늘 EA의 주문 이익 계산을 테스트하는 동안 계산이 지속적으로 업데이트 되었음을 언급하고 싶습니다. 이상) 분. 그리고 내가 테스트하는 동안 한 번 더 확실히 알게 된 것은 '터미널 > 거래' 틱만 제공하는 방법을 찾을 수 있었습니다. 다시 한 번 말씀드리고 싶은 것은 이유가 없습니다. 틱을 줄 수 있는 방법은 OnTick() 만 차트 기호에서 올 수 있다는 것을 알고 있습니다. 그리고 다른 사람들은 OnTimer() 그것은 나에게 1초에 4틱을 줄 수 있습니다... 등등. 제가 당신의 매우 유용하고 훌륭한 코멘트에서 배웠습니다. 그것에 대해 하나 더 감사합니다. )
그리고 내 상황을 설명해야 합니다.
내 주문 이익 계산은 내 EA가 차트 심볼에서 실행되는 동안 터미널 거래 패널과 동기화될 수 있습니다. 차트 심볼이 주문 심볼과 동일한 경우(예: EURUSD), 그러나 GBPUSD에 대한 새 위치를 열고 동기화가 터미널과 중단되면 무역 패널. 그리고 EURUSD에 대한 주문이 있지만 다른 차트 기호(예: GBPUSD, NZDUSD 등)에서 거래를 위한 새로운 좋은 쌍을 찾으려고 하는 경우 주문 이익 계산이 '터미널 > 거래' 패널과 동기화되지 않습니다. (나는 이미 OnTimer()를 알고 있다는 것을 잊지 마십시오. 1초에 4틱을 사용할 수 있는 방법을 알려주셨습니다. )
그 모든 우려는 여기에서 비롯됩니다.
오늘 저는 단기 포지션을 오픈합니다. 만약 장기 포지션을 오픈한다면 터미널 무역과의 동기화에는 관심을 기울이지 않을 것입니다.
#주문 계산 및 계정 정보 업데이트 - 열기
( 한 번 요청했지만 여전히 도움이 필요합니다 )
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);그리고 SymbolName(x,1);
도움이 되는 좋은 댓글, 정말 감사합니다.
이제 OnTick() 및 OnTimer()를 사용하고 있습니다. 두 기능 모두 저에게 잘 맞습니다. ( EA에 OnTimer()를 처음으로 사용)
---
또한 Ticks를 시도하고 싶습니다. '터미널 > 거래'의 기호( 쌍)와 현재 차트 기호의 Tick만 있으면 됩니다. 이 SymbolName()이 도움이 될까요?
저를 도와주시거나 조언을 주십시오. 어떻게 해야 할까요?
모두 제일 좋다.
{
Print(i," Symbol: ",SymbolName(i,1)," Ask: ",MarketInfo(SymbolName(i,1),MODE_ASK)," Bid: ",MarketInfo(SymbolName(i,1),MODE_BID));
}
{
Print (i, " Symbol: " , SymbolName (i, 1 ), " Ask: " , MarketInfo ( SymbolName (i, 1 ), MODE_ASK ), " Bid: " , MarketInfo ( SymbolName (i, 1 ), MODE_BID ));
}
저에게 놀라운 예와 정말 유용한 댓글 , 정말 감사합니다.
Ticks 가 Trade Pairs / Symbols 에서 올 수 있습니까?
거의 항상 내 Market Watch가 모든 기호를 표시하기 때문에 - 특히 저는 거래를 위한 새로운 좋은 쌍을 찾고 이것이 바로 현재 거래 틱을 여는 '터미널 > 거래' 기호/쌍을 얻을 수 있는 방법에 대한 몇 가지 방법을 연구하는 유일한 이유입니다 .
많은 감사드립니다.
아니요. 그러나 낮은 값으로 설정된 OnTimer() 함수 에서 가격을 업데이트할 수 있습니다. 예를 들어 250밀리초는 초당 4틱과 같으므로 왜 필요합니까?
귀하의 의견에 감사드립니다.
( subtopic - #Orders Calculations & Account Info's Updates - Open ) 내가 언급한 것처럼 주문 이익 계산을 사용하는데 '터미널 > 거래'와 동기화되지 않는 것이 유일한 이유입니다.
그래서 때로는 변동성이 매우 낮고 Ticks가 가장 적게 나오며 기능이 1초에 4번 실행될 수 있으므로 아무 것도 실행하지 않을 수 있습니다( / 헛된 ).
주문 이익 계산 및 계정 정보( / 업데이트 ) 동기화에 대한 ' 터미널 > 거래 ' 눈금을 제공할 수 있는 방법을 찾을 수 없는 경우. 나는 당신의 매우 유용한 방법을 사용할 것입니다 - 당신이 당신의 마지막 코멘트에서 그 방법을 저에게 보여주었습니다. 대단히 감사합니다. (나는 이미 테스트했고 그 방법은 나를 작동합니다)
미리 감사드립니다.
글쎄, 당신이 그것에 정말로 관심이 있다면 다음을 사용할 수 있습니다.
{
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 가격, 볼륨 등을 포함한 다른 매개변수도 포함됩니다.
틱 플래그를 분석하여 정확히 어떤 데이터가 변경되었는지 확인할 수 있습니다.
예시:
{
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()
따라서 특정 기호에 대한 새 눈금이 있는지 확인하는 데 사용할 수 있지만 실제로는 가격 수준을 직접 읽는 것보다 한 단계 더 높기 때문에 다시 한 번 왜 필요할까요?
Marco vd Heijden :
글쎄, 당신이 그것에 정말로 관심이 있다면 다음을 사용할 수 있습니다. ...
따라서 특정 기호에 대한 새 눈금이 있는지 확인하는 데 사용할 수 있지만 실제로는 가격 수준을 직접 읽는 것보다 한 단계 더 높기 때문에 다시 한 번 왜 필요할까요?
유익한 의견 감사합니다. 감사합니다.
---
내가 옳다면 문장의 이 부분은 질문입니다.
그리고 내 상황을 설명해야 합니다.
그 모든 우려는 여기에서 비롯됩니다.
---
나는 당신이 지금 나를 더 명확하게 이해하기를 바랍니다.
모두 제일 좋다.
각 틱을 정말로 기다리고 싶다면 모든 기호에 대해 별도의 EA를 작성하고 OnTick() 함수 를 사용해야 합니다.
그러나 나는 또한 마이크로 컨트롤러를 프로그래밍하고 정전 또는 인터럽트가 발생할 때까지 무한 루프(영원히)에 있다고 말할 수 있습니다.
조건이 참인지 거짓인지 확인하려면 가장 작은 부울 데이터 유형을 사용하고 프로세서는 백그라운드에서 실행되는 모든 프로세스와 그래픽 등에서 초당 수십억 번은 아니더라도 수백만 번을 수행합니다.
더 큰 데이터 유형과 관련된 무거운 계산을 시작하면 이것이 문제가 됩니다.