기고글 토론 "MQL5로 틱 인디케이터 만들기"

 

새로운 기고글 MQL5로 틱 인디케이터 만들기 가 게재되었습니다:

이 글에서는 가격을 틱 차트로 나타내는 틱 인디케이터와 특정 개수의 틱을 이용해 캔들을 그리는 캔들 인디케이터 두 가지의 작성 방법을 다룰 겁니다. 두 인디케이터 모두 가격 정보를 파일로 만들어 인디케이터 재가동 시 저장된 데이터(다른 프로그램에서도 이용 가능)를 이용합니다.


작성자: Denis Zyatkevich

 

흥미로운 글 감사합니다.

파일을 사용하여 데이터를 버퍼링하는 것이 필수인가요?

통계 배열을 사용하여 메모리에서 기록 데이터를 버퍼링할 수 없나요?

안녕하세요

 

안녕하세요!

초 차트를 보고 싶습니다 - 캔들은 몇 초(5초, 6초, 10초, 12,15초)입니다. 시간에 따른 가격 변화를 확인하려면.

 
Silent:

오타가 있나요?

문서 본문에서요. 예제에서는 ' AskBuffer' 가 맞습니다.
예, 오타입니다. 수정했습니다. 감사합니다.
 

안녕하세요!

테스터에서 가상 틱 생성을 비활성화하고 시간별 상품 가격에 대한 데이터를 동기화하면서 테스터에서 다중 통화 테스트를 위해 제안 된 지표가 수신 한 틱 파일을 사용할 수 있습니까?

감사합니다.

Документация по MQL5: Получение рыночной информации / SymbolIsSynchronized
Документация по MQL5: Получение рыночной информации / SymbolIsSynchronized
  • www.mql5.com
Получение рыночной информации / SymbolIsSynchronized - Документация по MQL5
 
robinz:

안녕하세요!

초 차트를 보고 싶습니다 - 캔들은 몇 초(5초, 6초, 10초, 12,15초)입니다. 시간에 따른 가격 변화를 보려면요.

이 차트는 이 글의 범위를 벗어나므로 직접 작성하는 것이 좋습니다. 이 글에서 설명하는 것보다 더 복잡하지 않습니다.
참조:

안녕하세요!

테스터에서 가상 틱 생성을 비활성화하고 시간별 상품 가격에 대한 데이터를 동기화하면서 테스터에서 다중 통화 테스트를 위해 제안 된 지표가 수신 한 틱 파일을 사용할 수 있습니까?

감사합니다.

물론 인디케이터에서 생성된 시세가 있는 파일은 다른 용도로 사용할 수 있습니다. 불필요한 기능(예: 차트 그리기) 및 데이터 처리(예: 다른 상품의 데이터 동기화)를 비활성화하는 것이 좋습니다. 그건 그렇고, 제 생각에는 그러한 전문가 고문 (첨부 파일에도 있음)의 도움을 받아 파일에 따옴표를 작성하는 것이 더 쉽습니다:

int h;
void OnInit()
  {
   string s;
   StringConcatenate(s,Symbol(),".txt");
   h=FileOpen(s,FILE_READ|FILE_WRITE|FILE_ANSI|FILE_SHARE_READ);
   FileSeek(h,0,SEEK_END);
  }

void OnTick()
  {
   string s;
   StringConcatenate(s,TimeCurrent(),"  ",DoubleToString(SymbolInfoDouble(Symbol(),SYMBOL_BID),_Digits)," ",DoubleToString(SymbolInfoDouble(Symbol(),SYMBOL_ASK),_Digits));
   FileWrite(h,s);
   FileFlush(h);
  }

void OnDeinit(const int reason)
  {
   FileClose(h);
  }
파일:
ticklog.mq5  1 kb
 

훌륭한 글, 지표에 감사드립니다!

tickindicator.mq5를 실행할 때이 문제가 있습니다 .

나는 지표를 컴파일했습니다. 나는 그것을 실행합니다.

표시기 창이 나타납니다. 최소값과 최대값 모두 큰 숫자가있는 눈금이 있습니다. 그리고 표시기는 수평선을 따라 움직입니다. 표시기의 최소값과 최대값을 수정해 보았습니다. 표시기가 나타나는 것 같지만 입찰가에 수직선이 있습니다.


 
denkir:

훌륭한 글, 지표에 감사드립니다!

tickindicator.mq5를 실행할 때이 문제가 있습니다 .

나는 지표를 컴파일했습니다. 나는 그것을 실행합니다.

표시기 창이 나타납니다. 최소값과 최대값 모두 큰 숫자가있는 눈금이 있습니다. 그리고 표시기는 수평선을 따라 움직입니다. 표시기의 최소값과 최대값을 수정해 보았습니다. 표시기가 나타나는 것 같지만 입찰가에 수직선이 몇 개 있습니다.

표시기 버퍼의 모든 값을 초기화해야합니다.

아마도 IMHO일 가능성이 높습니다. 코드를 보지 못했습니다.)

 

어디를 수정해야 하는지 알려주세요.

M30보다 큰 기간에서는 스케일이 거친 숫자를 표시하기 시작합니다.

 
fyords:

어디를 수정해야 하는지 알려주세요.

M30보다 큰 차트주기에서는 눈금에 거친 숫자가 표시되기 시작합니다.

제 동료 Dima_S가 제안했듯이 인디케이터를 초기화할 때 버퍼를 무언가로 채우는 것이 좋습니다.

그리고 TickIndicator.mq5 코드가 있으므로:

//+------------------------------------------------------------------+
//| OnInit() 함수|
//+------------------------------------------------------------------+
void OnInit()
  {
// 배열 BidBuffer[]는 인디케이터 버퍼입니다.
   SetIndexBuffer(0,BidBuffer,INDICATOR_DATA);
// AskBuffer[] 배열은 표시기 버퍼입니다.
   SetIndexBuffer(1,AskBuffer,INDICATOR_DATA);
// 입찰 선의 0 값은 그려지지 않습니다.
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
// Ask 라인의 0 값은 그려지지 않습니다.
   PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0);
  }

다음 줄을 삽입해야 합니다:

ArrayInitialize(BidBuffer,0);
ArrayInitialize(AskBuffer,0);
 
denkir:

제 동료 Dima_S가 제안했듯이 인디케이터를 초기화할 때 버퍼를 무언가로 채우는 것이 좋습니다. 저는 그렇게 했습니다:

ArrayInitialize(BidBuffer,EMPTY_VALUE);
ArrayInitialize(AskBuffer,EMPTY_VALUE);

그렇게 했지만 도움이 되지 않았습니다.

ArrayInitialize(BidBuffer,0.0);
ArrayInitialize(AskBuffer,0.0);
이 방법도 마찬가지입니다.