MQL5에서 함께 배우고 쓰기 - 페이지 9

 
gdtt :

EA에서 사용

값은 0 번째 막대에서 가져오고 촛불이 닫힐 때까지 표시기 버퍼의 값은 각 틱에서 변경됩니다.

그렇군요 제가 실험을 해보았지만 실상은 주요 문제가 해결되지 않았습니다.-- Expert Advisor에서 지시자가 요청한 바 뿐만 아니라 여러 바 전에도 지시자 버퍼를 강제로 재계산하는 방법

Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
  • 2010.10.25
  • Nikolay Kositsin
  • www.mql5.com
Статья о традиционных и не совсем традиционных алгоритмах усреднения, упакованных в максимально простые и достаточно однотипные классы. Они задумывались для универсального использования в практических разработках индикаторов. Надеюсь, что предложенные классы в определенных ситуациях могут оказаться достаточно актуальной альтернативой громоздким, в некотором смысле, вызовам пользовательских и технических индикаторов.
 

아마도 해결책이 발견되었을 것입니다! 중 하나...

그러나 이렇게 하려면 표시기의 특수 버전을 만들어야 합니다.

 

주님

일부 지표 작성: ...
정수 핸들;
이중 표시기버퍼[];
...
int OnInit()
{
... handleMA = iMA(_Symbol, _Period, periodMA, shiftMA, MODE_SMA, AppPrice );
...
}

int OnCalculate (const int Rates_total, // price[] 배열 크기
const int prev_calculated, // 이전 호출에서 처리된 막대
const int begin, // 의미 있는 데이터가 시작되는 위치
const double& price[]) // 계산을 위한 배열
{
... 뭔가를하고

문제는 handleMA = iMA(_Symbol, _Period, periodMA, shiftMA, MODE_SMA, AppPrice)가 AppPrice 가 무엇인지 알도록 하는 방법입니다.
또는 코드에서 사용하기 위해 매개변수 탭에서 적용 대상: 을 추출하는 방법은 무엇입니까?

미리 감사드립니다…

 
FlyAgaric :

주님


문제는 handleMA = iMA(_Symbol, _Period, periodMA, shiftMA, MODE_SMA, AppPrice)가 AppPrice 가 무엇인지 알도록 하는 방법입니다.
또는 코드에서 사용하기 위해 매개변수 탭에서 적용 대상: 을 추출하는 방법은 무엇입니까?

미리 감사드립니다…

OnCalculate() 참조:

필요한 시계열 또는 표시기를 price[] 배열로 선택하는 것은 "매개변수" 탭에서 표시기를 시작할 때 사용자가 수행합니다. 이렇게 하려면 "적용 대상" 필드의 드롭다운 목록에서 원하는 요소를 지정해야 합니다.

다른 mql5 프로그램에서 사용자 지정 표시기 값을 가져오려면 후속 작업에 대한 표시기 핸들을 반환하는 iCustom() 함수를 사용하십시오. 이 경우 필요한 price[] 배열이나 다른 표시기의 핸들을 지정할 수도 있습니다. 이 매개변수는 사용자 지정 표시기 입력 변수 목록에서 마지막 으로 전달되어야 합니다.
 
Rosh :

OnCalculate() 참조:


Rosh에게 감사합니다. 하지만 그게 바로 제 질문입니다. 진술에 무엇을 넣어야합니까
handleMA = iMA(_Symbol, _Period, periodMA, shiftMA, MODE_SMA, AppPrice);
앱프라이스로?

사용 가능한 도움말을 매우 주의 깊게 읽었습니다. 열이 작용했을 수도 있지만...

 
FlyAgaric :

Rosh에게 감사합니다. 하지만 그게 바로 제 질문입니다. 성명서에 무엇을 넣어야합니까
handleMA = iMA(_Symbol, _Period, periodMA, shiftMA, MODE_SMA, AppPrice);
앱프라이스로?

사용 가능한 도움말을 매우 주의 깊게 읽었습니다. 더위는 효과가 있었겠지만...

다른 지표의 데이터를 계산해야 하는 경우 지표 핸들을 지정하십시오. 또는 지표가 계산될 가격 유형입니다.
 
FlyAgaric :

Rosh에게 감사합니다. 하지만 그게 바로 제 질문입니다. 진술에 무엇을 넣어야합니까
handleMA = iMA(_Symbol, _Period, periodMA, shiftMA, MODE_SMA, AppPrice);
앱프라이스로?

사용 가능한 도움말을 매우 주의 깊게 읽었습니다. 더위는 효과가 있었겠지만...

열. AppPrice는 ENUM_APPLIED_PRICE 로 설정해야 함)
 input ENUM_APPLIED_PRICE AppPrice= PRICE_CLOSE ;
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Ценовые константы - Документация по MQL5
 
Swan :
열. AppPrice는 ENUM_APPLIED_PRICE 로 설정해야 함)

스완, 관심을 가져 주셔서 감사합니다. 그러나 사용하는 경우
ENUM_APPLIED_PRICE 입력 AppPrice=PRICE_CLOSE; 그리고 첫 번째 형태

int OnCalculate (const int Rates_total, // price[] 배열 크기
const int prev_calculated, // 이전 호출에서 처리된 막대
const int begin, // 의미 있는 데이터가 시작되는 위치
const double& price[]) // 계산을 위한 배열
그런 다음 컴파일할 때 경고가 표시됩니다. 두 개의 OnCalculate 함수가 정의되어 있습니다. 가격 데이터 기능은 NameIndicator.mq5(str count)를 사용합니다.
세 번째 "매개변수" 탭에서 적용 대상:과 일치하지 않는 한 price[] 배열은 어떤 식으로든 AppPrice에 연결되지 않은 상태로 유지됩니다.

문제는 실제로 price[] 배열이 어떻게 든
계산에 사용됩니다.

 
Rosh :
다른 지표의 데이터를 계산해야 하는 경우 지표 핸들을 지정하십시오. 또는 지표가 계산될 가격 유형입니다.

우리(또는 오히려, 나는) 어떤 종류의 오해가 있습니다.

문제는 실제로 price[] 배열이 어떻게 든 iMA() 유형의 내장 1 버퍼 표시기와 int OnCalculate() 의 첫 번째 형식을 사용할 수 있다는 것입니다.
계산에 사용됩니다.

 
FlyAgaric :

우리(또는 오히려, 나는) 어떤 종류의 오해가 있습니다.

문제는 실제로 price[] 배열이 어떻게 든
계산에 사용됩니다.

AppPrice 설정은 OnCalculate() 함수와 아무 관련이 없습니다.

 int OnInit ()
{
... handleMA = iMA ( _Symbol , _Period , periodMA, shiftMA, MODE_SMA , AppPrice);
...
}

가격 상수 중 하나의 값(옵션 1) 또는 다른 표시기의 핸들(옵션 2)로 설정할 수 있습니다. 그런 다음 다음을 수행할 수 있습니다.

1 옵션.

두 번째 종류의 OnCalculate() 함수에서

 int OnCalculate ( const int rates_total,       // размер входных таймсерий
                 const int prev_calculated,   // обработано баров на предыдущем вызове
                 const datetime & time[],     // Time
                 const double & open[],       // Open
                 const double & high[],       // High
                 const double & low[],         // Low
                 const double & close[],       // Close
                 const long & tick_volume[],   // Tick Volume
                 const long & volume[],       // Real Volume
                 const int & spread[]         // Spread
   );

필요한 모든 데이터를 요청하고 계산을 작성하십시오.

옵션 2.

코드에 필요한 모든 종류의 OnCalculate()를 사용하고 CopyBuffer() 를 사용하여 표시기 값을 가져옵니다.