찻주전자의 질문 - 페이지 132

 
Yedelkin :

다른 지표의 데이터를 계산하는 데 관심이 있다면 이것이 수행되는 방법입니다. 먼저 고유한 데이터 계산 방식으로 동일한 지표를 생성한 다음 이 지표의 핸들을 가져옵니다( MQL5 Reference / 기술 지표 / iCustom ) 및 이 핸들은 이미 새 지표에서 사용되었습니다. 예를 자세히 살펴보십시오. 예제에 대한 질문이 있는 경우 -

질문이 있습니다. 여전히 이해하지 못합니다.
자, Custom Moving Average.mq5를 기초로 삼겠습니다.

새 평활 절차 MODE_MYMA를 목록에 추가하는 것은 문제가 되지 않습니다.

문제는 데이터를 업로드하는 방법입니다. 다른 지표의 i-custom을 통해? 엄청난. 예를 들어, 두 번째 형식에 따라 만들어진 것을 예로 들겠습니다(지표가 첫 번째 형식에 따라 만들어진 경우.. 나는 고가를 어디서 얻을 수 있는지 이해하지 못했습니다.. 그것은 다음에 따라만 의미합니까? 두 번째 형태?)

그래 발표하자

int newHandl;

onInit에서 우리는 그것을 정의합니다 (예로서 - 포물선. 저는 상관하지 않습니다. 중요한 것은 그것이 두 번째 유형이라는 것입니다. 맞습니까? 자신의 것을 구현하는 방법은 대략 명확합니다)

newHandl=iCustom(_Symbol,0,"포물선형SAR.mq5",0.02,0.2);

다음은? 표준 가격 대신 onCalculate 전표에서? 또는 무엇을?

계산EMA(rates_total,prev_calculated,begin,newHandl); ???

루게소. 또는 어떻게? 설명해줘 이해가 안가...

예, 저는 여전히 mkl4 템플릿의 관점에서 생각하고 있습니다. 거기에는 간단합니다. 주기, 데이터(임의!) 가져오기, 매끄럽게 하기, 추론하기입니다.
바로 거기 .... 캐치가 무엇을위한 것인지 명확하지 않습니다 ..

 
GameOver :

(지표가 첫 번째 형식에 따라 만들어진 경우.. 높은-낮은 위치를 어디에서 가져오는지 모르겠습니다.. 두 번째 형식에 따라만 의미 합니까?)

예, hi-lo에 대해 이것은 기사를 직접 처리하는 방법의 예일뿐입니다. 첫 번째 형식의 경우 close[i]/2 [또는 sqrt( close[i]/2 )] 행을 구성하는 작업을 수행할 수 있습니다. 일반적으로 하나의 어레이를 사용할 때 많은 변형을 생각해 낼 수 있습니다.

게임오버 :

그래 발표하자

int newHandl;

onInit에서 우리는 그것을 정의합니다 (예로서 - 포물선. 저는 상관하지 않습니다. 중요한 것은 그것이 두 번째 유형이라는 것입니다. 맞습니까? 자신의 것을 구현하는 방법은 대략 명확합니다)

newHandl=iCustom(_Symbol,0,"포물선형SAR.mq5",0.02,0.2);

모든것이 좋아. 바로 추가하겠습니다.

수신된 표시기 핸들이 정확하면 해당 표시기의 버퍼에 액세스할 수 있음을 의미합니다. MQL5 Reference / Technical Indicators / iCustom의 예를 다시 확인하십시오. 다음 라인이 있습니다.

 //--- скопируем значения индикатора Custom Moving Average в наш индикаторный буфер
   int copy= CopyBuffer (MA_handle, 0 , 0 ,rates_total,Label1Buffer);

이 선이 어디에 있는지 보십시오. 이제 MQL5 참조 / 시계열 및 표시기 액세스 / CopyBuffer를 읽으십시오(...다시: 예제를 한 줄씩 분석하면 많은 것이 명확해집니다).

선택한 표시기 버퍼에서 데이터를 가져오십시오. 손에 터미널이 없지만 포물선으로 어떤 버퍼가 계산되고 번호가 매겨지는지 직접 볼 수 있습니다.

Документация по MQL5: Технические индикаторы
Документация по MQL5: Технические индикаторы
  • www.mql5.com
Технические индикаторы - Документация по MQL5
 

ArrayIsSeries()ArrayGetAsSeries( ) 함수에 대한 설명에 대한 질문입니다.

디렉토리에는 다음 문구가 포함되어 있습니다. " 함수에 전달된 배열은 가격 데이터를 반영합니다. 즉, 이러한 배열에는 시계열 속성이 있고 ArrayIsSeries() 함수 는 이러한 배열을 확인할 때 true를 반환합니다. 그럼에도 불구 하고 인덱싱 방향 은 모든 항목에서 확인해야 합니다. ArrayGetAsSeries() " 함수에 의한 경우에만 해당됩니다 .

ArrayIsSeries() 함수가 true를 반환하더라도(즉, 검사 중인 배열이 시계열 배열임을 확인하는 경우) 인덱싱 방향은 어떤 경우 에도 ArrayGetAsSeries() 함수에 의해서만 확인되어야 합니다. ArrayIsSeries() 함수를 도입하는 것의 의미가 명확하지 않은데, 그 결과가 여전히 추가로 확인되어야 하는 경우입니다. 점은 무엇인가? 배열이 시계열일 수 있지만 인덱싱 방향이 시계열과 같지 않은 상황이 있을 수 있습니다(AS_SERIES 플래그가 설정되지 않음)?

 


Mql4에서 Mql5로 이식할 때 Lot 오류가 발생했습니다.

'Lot' - 상수를 수정할 수 없습니다.

 input double Lot = 0.1 ; // Lot

if (MartingaleType == 7 )
 {
 if (Counter1== 1 )
 Lot=Lots() ;
}

편집하는 방법?

 
Dark.Angel :


Mql4에서 Mql5로 이식할 때 Lot 오류가 발생했습니다.

'Lot' - 상수를 수정할 수 없습니다.

편집하는 방법?

안 돼요. 버그가 아니라 기능입니다. :)

mql5에서 입력 변수는 수정되지 않습니다(const).

간단한 디커플링 만들기:

 input int x= 5 ;
input double StartLot = 0.01 ;

int X;
double Lot;
...
...
void OnInit ()
  {
   ....
    X=x;
    Lot=StartLot;
   .......
  }
.....
void OnStart ()
  {
   ....
   Lot=Lots();
  }
 

질문 에 계속해서 . " MQL5 Reference / Array Operations / ArraySetAsSeries" 섹션에 ArraySetAsSeries() 함수가 매 틱마다 const datetime &time[] 배열에 적용될 때의 예가 있습니다.

 int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
//---  будем хранить время открытия текущего нулевого бара
   static datetime currentBarTimeOpen= 0 ;
//--- перевернем доступ к массиву time[] - сделаем как в таймсерии
   ArraySetAsSeries (time, true );
//--- return value of prev_calculated for next call
   return (rates_total);
  }

시계열과 같이 모든 사람이 배열을 사용하여 작업하는 방식( 각 눈금마다 배열을 반대로 하는 것)입니까?

또 다른 질문: OnCalculate() 함수에서 사용하는 배열이 인덱싱 방향을 임의로 변경할 수 있습니까? 아니면 이 방향을 한 번 확인하는 것으로 충분합니까?

 


Mql4에서 Mql5로 이식할 때 SymbolInfoDouble 오류가 발생했습니다.
'SymbolInfoDouble' - 어떤 오버로드도 함수 호출에 적용할 수 없습니다.

на Mql4:
double a = balance / MarketInfo ( Symbol (), MODE_MARGINREQUIRED) - 0.2 ; 

на Mql5:
double a = balance / SymbolInfoDouble ( Symbol (), 0 ) - 0.2 ;

편집하는 방법?
 
Dark.Angel :


Mql4에서 Mql5로 이식할 때 SymbolInfoDouble 오류가 발생했습니다.
'SymbolInfoDouble' - 어떤 오버로드도 함수 호출에 적용할 수 없습니다.


편집하는 방법?

왜 맨 아래에 0이 있습니까?우리는 거기에 속성을 지정합니다.

https://www.mql5.com/ru/docs/constants/environment_state/marketinfoconstants#enum_symbol_info_double

또한 0으로 나누기를 확인합니다.

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 

전략 테스터의 결과는 그래프 형태로 표시됩니다.


그래프의 다른 색상이 의미하는 바를 어디에서 볼 수 있는지 알려주지 않습니까?

 
pusheax :

전략 테스터 의 결과는 그래프 형태로 표시됩니다.

그래프의 다른 색상이 의미하는 바를 어디에서 볼 수 있는지 알려주지 않습니까?

파란색 - 이익, 빨간색 - 손실. 그러나 왼쪽 상단은 문제입니다 ...