포럼을 어지럽히 지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 6. - 페이지 972

 
rapid_minus :

안녕하세요!

다시 말하지만, 아마도 기본적인 것에서 벗어날 수 없습니다. 왜 모든 것이 도움말에 있는 것처럼 보이지만 결과는 0.0을 인쇄합니까?

프랙탈 값이 검색되지 않는 이유는 무엇입니까?

프랙탈에는 최소 3개의 막대가 필요합니다.
 

//+----------------------------------------------- --------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#속성 링크 "https://www.mql5.com"
#속성 버전 "1.00"
#속성엄격

이중 gdClose_array[1];

//+----------------------------------------------- --------------------+
//| 전문가 초기화 기능 |
//+----------------------------------------------- --------------------+
int OnInit()
{
//---
//---
반환(INIT_SUCCESSED);
}
//+----------------------------------------------- --------------------+
//| 전문적인 초기화 해제 기능 |
//+----------------------------------------------- --------------------+
무효 OnDeinit(const int 이유)
{
//---
}
//+----------------------------------------------- --------------------+
//| 전문가 틱 기능 |
//+----------------------------------------------- --------------------+
무효 OnTick()
{
//---
정수 x=Fr_sign();
인쇄(x);
}
//+----------------------------------------------- --------------------+

정수 Fr_sign()
{
정수 iX;
이중 dX=0;
intgi 결과 = 0;
iX=CopyClose(Symbol(),PERIOD_CURRENT,1,1,gdClose_array);
dX=gdClose_array[0];
인쇄("dX", dX);
dX=NormalizeDouble(gdClose_array[0], 숫자);
Print("NormalizeDouble(dX, 숫자)", dX);
리턴(0);
}
//+----------------------------------------------- --------------------+

결과적으로 나는 얻는다

2015.11.30 23:30:37.645 2015.10.30 22:54 111 EURUSD,H1: NormalizeDouble(dX,Digits) 1.05934

동일한 테스트 값

 
Vinin :
프랙탈에는 최소 3개의 막대가 필요합니다.
아마도 잘못된 방향으로 가고 있는 것 같습니다. 누가 알겠습니까? 프랙탈이 1 막대에 나타납니다. 프랙탈이 내부에 있는지 외부에 있는지 확인하려면 해당 값을 볼린저 밴드 값과 비교해야 합니다. 코드로 어떻게 표현할까요?
 
하아! 바닥에 도착했습니다. 최소한 제 목적에는 프랙탈이 전혀 필요하지 않습니다. 볼린저 밴드의 상한 또는 하한 값과 막대의 최소 또는 최대 가격 을 비교할 필요가 있기 때문입니다. 프랙탈은 그것이 나타난 막대의 높거나 낮은 값을 가집니다. 바르게?
 

프랙탈은 최대 또는 최소 5개의 막대 값입니다.

하나의 막대에 대한 데이터가 있으면 프랙탈의 올바른 값을 얻을 수 없습니다.

 
n0name :

프랙탈은 최대 또는 최소 5개의 막대 값입니다.

하나의 막대에 대한 데이터가 있으면 프랙탈의 올바른 값을 얻을 수 없습니다.

차트에 표시기 "프랙탈"을 배치하면 표시기의 화살표가 최대 또는 최소 막대에 있고 해당 값이 이 막대의 높거나 낮은 값과 같은지 즉시 확인할 수 있습니다. 그리고 얼마나 많은 프랙탈이 계산되는지는 중요하지 않습니다. 어쨌든 이것은 내 전략에 필수적인 것은 아닙니다.

어쨌든 감사합니다.

 
n0name :

...

결과적으로 나는 얻는다

2015.11.30 23:30:37.645 2015.10.30 22:54 111 EURUSD,H1: NormalizeDouble(dX,Digits) 1.05934

동일한 테스트 값

A) 포럼에 여기에 코드를 올바르게 삽입 하려면 SRC를 클릭한 다음 코드 자체를 여는 필드를 클릭하십시오.


b) 이 코드를 시도하십시오.

 #property strict

int OnInit ()
  {
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   Fr_sign();
  }
//+------------------------------------------------------------------+

void Fr_sign()
  {
   double gdClose_array[ 1 ];
   if ( CopyClose ( _Symbol , PERIOD_CURRENT , 1 , 1 ,gdClose_array)!= 1 ) return ;

   Print ( "Close price = " ,DoubleToStr(gdClose_array[ 0 ], _Digits ));
  }
 
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link        "https://www.mql5.com"
#property version    "1.00"
#property strict

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
//---
   return ( INIT_SUCCEEDED );
   }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
  Fr_sign();
  }
//+------------------------------------------------------------------+
 void Fr_sign()
  {
   double gdClose_array[ 1 ];
   if ( CopyClose ( _Symbol , PERIOD_CURRENT , 1 , 1 ,gdClose_array)!= 1 ) return ;

   Print ( "Close price = " ,DoubleToStr(gdClose_array[ 0 ], _Digits ));
  }
//+------------------------------------------------------------------+ 

2015.12.01 22:24:01.683 2015.10.02 17:49 111 EURUSD,H1: 종가 = 1.06181

2015.12.01 22:24:09.433 2015.11.27 10:04 111 EURUSD,H1: 종가 = 1.06181

2015.12.01 22:24:09.701 2015.11.30 23:59 111 EURUSD,H1: 종가 = 1.06181

다른 쌍에서 그것을 시도

2015.12.01 22:35:58.830 2015.11.30 23:59 111 GBPUSD,H1: 종가 = 1.50718

2015.12.01 22:35:58.683 2015.11.27 20:59 111 GBPUSD,H1: 종가 = 1.50718

2015.12.01 22:35:50.434 2015.09.17 21:55 111 GBPUSD,H1: 종가 = 1.50718

 
n0name :

2015.12.01 22:24:01.683 2015.10.02 17:49 111 EURUSD,H1: 종가 = 1.06181

2015.12.01 22:24:09.433 2015.11.27 10:04 111 EURUSD,H1: 종가 = 1.06181

2015.12.01 22:24:09.701 2015.11.30 23:59 111 EURUSD,H1: 종가 = 1.06181

다른 쌍에서 그것을 시도

2015.12.01 22:35:58.830 2015.11.30 23:59 111 GBPUSD,H1: 종가 = 1.50718

2015.12.01 22:35:58.683 2015.11.27 20:59 111 GBPUSD,H1: 종가 = 1.50718

2015.12.01 22:35:50.434 2015.09.17 21:55 111 GBPUSD,H1: 종가 = 1.50718

재생산할 수 없고 두 번째 날짜가 어디에서 왔는지 명확하지 않습니다.

2015.12.01 22:10:04.250 111 EURUSD,H1: 종가 = 1.06336
2015.12.01 22:10:00.531 111 EURUSD,H1: 종가 = 1.06336

2015.12.01 22:10:00.531은 날짜와 시간입니다.

111 - 전문가의 이름;

EURUSD,H1 - 기호 이름 및 기간;

종가 = 1.06336 - 지수가 1인 양초의 종가(이전 시간)이며 새로운 시간이 도래할 때까지 이를 받게 됩니다.

 
Mislaid :

재현할 수 없고 두 번째 날짜가 어디에서 왔는지 명확하지 않습니다.

2015.12.01 22:10:04.250 111 EURUSD,H1: 종가 = 1.06336
2015.12.01 22:10:00.531 111 EURUSD,H1: 종가 = 1.06336

2015.12.01 22:10:00.531은 날짜와 시간입니다.

111 - 전문가의 이름;

EURUSD,H1 - 기호 이름 및 기간;

종가 = 1.06336 - 지수가 1인 양초의 종가(이전 시간)이며 새로운 시간이 도래할 때까지 이를 받게 됩니다.

그렇군요, 며칠을 선택하여 테스트를 진행해 주시길 부탁드립니다. 결과는 어떻게 될까요?
사유: