지표가 없는 Expert Advisor, 가능한가요? - 페이지 3

 
Алексей Тарабанов :

위험한 망상.

무슨 망상?
일련의 역사가 필요하다면 만드십시오. 필요하지 않습니다 - 하지 마십시오.
개인적으로 내부 테스트 등을 자주 사용하기 때문에 주로 배열을 만듭니다. 하지만 배열이 차트의 막대 수와 같은 경우는 거의 없습니다. 때로는 더 적게 때로는 더 많이.
예를 들어 일반적인 지그재그를 사용하십시오. 배열의 정보 요소 가 10% 미만이고 나머지는 비어 있지만 열거는 전체 배열에 대해 수행됩니다. 그래서 무엇? 효율적인가? 값과 인덱스가 있는 더 짧은 구조의 배열을 사용하는 것이 더 정확하다는 것은 매우 분명합니다.
 

  그러나 내 배열은 차트의 막대 수와 거의 같지 않습니다. 때로는 더 적게 때로는 더 많이.

더 클까봐 걱정입니다.

 
Nikolai Semko :
우선, 표시기 버퍼와 동일한 내부 데이터 배열을 갖고 동일한 방식으로 채우는 것을 방지하는 것은 무엇입니까?
둘째, EA가 전체 역사를 필요로 하는 이유입니다. 일반적으로 마지막이고 끝에서 두 번째 값일 수 있습니다. 그리고 이러한 모든 지표 nahlabud가 필요하지 않습니다.

그리고 자원 절약, 지표에서 계산 또는 Expert Advisor에서 동일한 계산 측면에서 더 편리한 것은 무엇입니까? 더 빨리 시도한 것은 무엇입니까?

 
Алексей Тарабанов :

  그러나 내 배열은 차트의 막대 수와 거의 같지 않습니다. 때로는 더 적게 때로는 더 많이.

더 클까봐 걱정입니다.

걱정할 필요 없어요, 알렉세이.
이것이 필요한 상황이 있을 수 있다, 구기욘.
예를 들어.
저는 시간대에 상관없이 분 막대나 눈금 데이터를 주로 사용합니다.
시간 프레임이 변경될 때마다 Expert Advisor가 모든 버퍼 표시기를 다시 계산해야 하는 것은 매우 잘못되고 낭비입니다. 이것은 나에게 일어나지 않습니다.
따라서 내가 주간 시간대에 있다면 물론 내 배열은 차트의 막대 수보다 훨씬 더 큽니다.
나는 일반적으로 틱에 대해 이야기하고 있습니다.
일반적으로 성능을 높이고 메모리를 절약하기 위해 여러 구조 배열과 인덱스 배열이 있습니다. 치수는 매우 다를 수 있습니다.
일반적으로 iCustom을 통해 지표를 사용하면 많은 면에서 매우 제한적입니다.
차트의 막대 수와 동일한 배열 크기로 엄격하게 제한됩니다. 거기에 무제한이라면?
하나의 이중 유형에만 바인딩됩니다. 구조의 배열에 대해서는 꿈도 꿀 수 없습니다.
일반적인 웃음의 색상 표시기로. 막대당 8바이트는 과도합니다.
표시기 버퍼는 메모리 소비 측면에서 매우 낭비입니다.
또한 마지막 막대가 하나만 필요하더라도 CopyBuffer를 통해서만 버퍼에 액세스할 수 있습니다. 어쨌든 이 작업은 단순히 배열 요소에 액세스하는 것보다 훨씬 느립니다.

물론 iMA와 같은 표준 내장 인디케이터를 사용한다면 크게 신경쓰지 않아도 됩니다. 그러나 여전히 이것은 사용자 지정 지표 에 관한 것입니다. 전문가들이 실제 거래에 내장된 지표를 사용하는지 의심스럽습니다.


 
VVT :

그리고 자원 절약, 지표에서 계산 또는 Expert Advisor에서 동일한 계산 측면에서 더 편리한 것은 무엇입니까? 더 빨리 시도한 것은 무엇입니까?

이전 게시물에서 부분적으로 답변했습니다.
이것은 매우 방대한 질문이며 개발자와 멀티스레딩을 담당하는 사람들에게 물어보는 것이 좋습니다.

저는 이 문제의 전문가가 아닙니다. 그러나 나는 내 생각을 나눌 수 있습니다. 제가 잘못 알고 있는 부분이 있다면 정확히 아시는 분 수정 부탁드립니다.
아시다시피, 각 Expert Advisor는 별도의 스레드에서 작동하며 한 기기의 모든 지표(다른 차트에서도)는 하나의 공통 스레드에서 작동합니다.
따라서 기호에 표시기가 과부하되지 않은 경우 운이 좋고 OS 스케줄러가 찾을 경우 Expert Advisor의 작업과 표시기 버퍼 계산이 병렬로, 심지어 다른 프로세서 코어에서도 발생한다고 가정할 수 있습니다. 표시기 스트림을 위한 별도의 프로세서 코어. 그리고 그러한 계획을 사용하면 결과가 더 생산적일 가능성이 큽니다. 지표 스트림을 위한 별도의 코어를 얻을 가능성이 얼마나 될지는 모르겠지만 그리 높지는 않다고 생각합니다.
그러나 스레드의 컨텍스트 전환 속도 및 여러 스레드의 상호 작용에 대한 기타 많은 미묘함과 같은 개념이 있습니다. 스레드가 프로세스에 비해 전환 속도가 매우 빠르다는 것을 알고 있지만 여전히 무료는 아닙니다.
또한 이미 말했듯이 CopyBuffer를 통해 표시기 버퍼 요소에 액세스하는 데 비용이 더 많이 듭니까? 인덱스의 배열 요소보다.
또한 불필요한 계산 을 최적화할 수 있는 가능성, 내부 데이터 배열의 크기 및 Expert Advisor 내의 인덱싱은 리소스 비용을 절감할 수 있는 매우 큰 잠재력을 제공합니다.
물론 귀하의 질문에 완전히 답하기 위해서는 실험과 올바른 테스트가 필요합니다. 하지만 저는 여전히 평균적으로 더 생산적이라고 생각하는 경향이 있습니다. 이 모든 것이 하나의 EA 스레드에서 이루어집니다.

 
Dmitry Fedoseev :

루프에서 실행할 때마다? EMA를 사용하면 훨씬 더 흥미로울 것입니다.

1회 통과 지수 가중 평균 계산 알고리즘 사용

ma = (1 - a) * 가격 + a * ma

 
Dmitry Fedoseev :

일반 표시기는 시작 시에만 모든 막대를 계산한 다음 1개를 계산합니다. 지표에서 SMA를 쉽게 만들 수 있으므로 첫 번째 막대를 계산할 때에도 전체 MA 기간을 순환할 필요가 없습니다.

물론 Expert Advisor의 배열에서 버퍼를 만드는 것도 가능합니다. 하지만 특별히 설계된 요소인 지시자가 있다면 왜?

그래서 문제가 정확히 무엇입니까? 새로운 막대 가 나타났습니다. 그들은 그것을 고려했습니다.

 
anim :
조언자가 지표에 얽매이지 않았으면 합니다. 그리고 그는 막대를 계산 하고 자신의 내부에서 매수/매도 신호를 받았습니다. 가능합니까?
물론 이것은 Expert Advisor에 지표 공식을 도입하면 가능합니다!
 
Vladimir Mikhailov :

1회 통과 지수 가중 평균 계산 알고리즘 사용

ma = (1 - a) * 가격 + a * ma

너무 틀려!

다음과 같이 수정합니다.

ma[i] = (1 - a ) * 가격 + a * ma[i+1]

저것들. 배열이 필요하며 필요한 깊이는 매개변수 a 에 따라 다릅니다.

그렇지 않으면 매개변수 a 에 따라 상당히 오랜 시간이 걸릴 수 있는 일시적인 프로세스가 지속되는 한 완전히 넌센스가 될 것입니다.

이 모든 것은 표시기 판독값과 Expert Advisor의 해당 계산을 비교하여 쉽게 확인할 수 있습니다.
 
Dmitry Fedoseev :

물론 Expert Advisor의 배열에서 버퍼를 만드는 것도 가능합니다. 하지만 특별히 설계된 요소인 지시자가 있다면 왜?

표시기에서 신호가 누락되는 문제가 있습니다. 아무도 권장하지 않았습니다.

https://www.mql5.com/ru/forum/365021

지문은 이벤트가 스파이 표시기에서 발생하고 새 막대가 확인되고 있으며 새 막대가 아닌 이전 막대의 데이터가 있음을 보여주었습니다.

3개의 터미널에서 동시에 테스트되었으며 두 패스 모두 3개의 터미널 중 하나에서 발생했으며 아마도 사고였을 수 있습니다.

В моих ТС пропуск сигнала
В моих ТС пропуск сигнала
  • 2021.03.16
  • www.mql5.com
Не люблю создавать новые темы, Небольшие исходные данные: Советник работает в OnChatEvent, 7 символов, циклов нет, прямая передача номера за минусо...