코드.

void OnTick()
{
   double my_cci = Get_CCI(_Period,14); 
   Print(my_cci);
}



double Get_CCI(ENUM_TIMEFRAMES timeframe,int ma_period)
{
   double arr_cci[]; 
   
   int CCIretv = iCCI(_Symbol,timeframe, ma_period, PRICE_TYPICAL); 
   
   ArraySetAsSeries(arr_cci, true); 
   
   CopyBuffer(CCIretv,0,0,3,arr_cci); 
   
   return NormalizeDouble(arr_cci[0],2); 
      
}

동영상.

 

 

 

 

 

연관 

 

 

Indicator : CCI. Commodity Channel Index

개요. 정의. where, Pt = (High + Low + Close)/3. Typical Price 로 칭함. SMA(Pt) : Pt의 이동평균. : Pt 의 mean absolute deviation. 즉, Pt - SMA(Pt) 의 절대값의 이동평균. 0.015 로 나누기 하는 것 : CCI..

igotit.tistory.com

 

copybuffer 상세 

 

 

Documentation on MQL5: Timeseries and Indicators Access / CopyBuffer

//+------------------------------------------------------------------+ //|                                              TestCopyBuffer3.mq5 | //|                        Copyright 2009,

www.mql5.com

 

상위 

 

메타트레이더 5. 체계정리. 활용법/지식

MetaTrader 5 메타트레이더 5 , 메타에디터, MQL5 활용정보 체계정리. 본 글에서 주요 정리대상 정보 1. 메타트레이더 5 사용법. 2. MQL5 언어 기반 "직접 코딩"하여 메타프레이더5에서 자동매매 달성하기

igotit.tistory.com

 

 

 


첫등록 : 2019년 4월 28일 

최종수정 : 2021.03.01

 

본 글 단축주소 : https://igotit.tistory.com/2148

 


 

Posted by 리치굿맨

댓글을 달아 주세요

  1. 카피버퍼

    카피버퍼 인자에

    0,0,3은 무슨 의미죠??
    0인건 잘 이해 안되도 그냥 납득이 되는데요.

    int count부분에 count로 3을 넣었다는 건 어떤 의ㅣ민가요??

    2021.02.17 12:22 [ ADDR : EDIT/ DEL : REPLY ]
    • 본문 내용 중에 copybuffer 상세 설명 링크 추가했습니다. 0,0,3 에서 2번째 0은 indicator buffer(상세설명 링크의 그림 참조) 의 인덱스 0(시간적으로 최신값에 해당)부터 3개를 복사하라는 의미입니다.

      2021.03.01 16:33 신고 [ ADDR : EDIT/ DEL ]
    • arr_cci[]를 지역 변수로 선언하셨으니


      [1] [2] 이런 표현 못 쓰는거 아닌가요??

      바깥에다가 변수 선언해야 하는 것 아닌가요??

      2021.03.01 19:57 [ ADDR : EDIT/ DEL ]
    • 함수외부 다른 곳에서도 double arr_cci[] 변수 활용하려는 경우에는 전역변수 선언하는게 맞고요..

      위 코드에서는 지역변수 선언된 함수내부에서 사용하는 경우의 활용예 입니다.

      2021.03.01 20:22 신고 [ ADDR : EDIT/ DEL ]
  2. 카피버퍼

    3이면

    3개까지 저장하는건가요?

    어차피 arr_cci[0]만 불러오는데 뭐하러 3까지 저장하시는 거예요??? 진짜 몰라서 질문드려요

    2021.02.17 12:24 [ ADDR : EDIT/ DEL : REPLY ]
    • 넵 3이면 3개를 복사하는거 맞고요. [0] 만 받으면 현재 시점의 데이터이므로 봉이 완성되지 않은 데이터 이다 보니 코드에서 활용시 완성된 봉인 직전값 [1] 과 [2] 를 이용하려고 3개 받았습니다. cci 의 증가 감소 등을 계산하기 위한 목적이기도 합니다. [1] - [2] 이런용도로 사용해요~

      2021.03.01 16:37 신고 [ ADDR : EDIT/ DEL ]
  3. asf

    price_close가 아니라 PRICE_TYPICAL 해야하는 것 아닌가요?

    cci정의상 그게 더 부합하지 않는지??

    2021.02.28 15:38 [ ADDR : EDIT/ DEL : REPLY ]
  4. 레치굿맨님 안녕하세요.
    글 너무 잘 보고 있습니다. 자주묻고싶은데 오픈톡에서 여쭤도돼나요? 바로바로묻고싶어서요..!
    오해하실까봐.. 광고이런거 아니에요ㅠ
    https://open.kakao.com/o/gRqMEXAd

    2021.09.21 17:37 [ ADDR : EDIT/ DEL : REPLY ]
    • 안녕하세요.. 블로그 포스팅외에 다른 대외 활동은 전혀 하지 않는 (혹은 못하는...)행동 수칙을 갖고 있습니다. 양해 부탁드립니다. ㅠㅠ

      2021.09.27 02:43 신고 [ ADDR : EDIT/ DEL ]
    • 네 그럼 블로그로 소통해야겠네요^^
      제가 mt5 쓰고있는데 연필, 선 등 그리기모듈 만들수있을까요? ㅠㅠ 선은 메타 프로그램안에 있지만 한번그으면 다시 눌러서 해야하는 불편함도있어서 지그재그처럼 끊기지않고 연결해서 쓰고싶어서요. 물론 선 스타일도 바꿀수있게 하면 좋을것같습니다. 감사합니다!

      2021.09.27 09:49 [ ADDR : EDIT/ DEL ]
    • 아래 2개의 코드 참고하면 될것 같습니다.

      수평선 그리기 : https://igotit.tistory.com/2141

      수직선 그리기: https://igotit.tistory.com/2152

      혹시, 사용자가 수동으로 선그리기등을 하는 경우라면 mql5 에서 마우스 이벤트 이용하여 코드내에서 마우스 좌표받아 상기 그리기의 위치를 결정하는 식으로 구현해야 합니다.

      마우스 이벤트 처리 코드예
      https://igotit.tistory.com/1818

      2021.09.27 12:03 신고 [ ADDR : EDIT/ DEL ]
    • 로나메

      ‘사용자가 수동으로 선그리기등을 하는 경우라면 mql5 에서 마우스 이벤트 이용하여 코드내에서 마우스 좌표받아 상기 그리기의 위치를 결정하는 식으로 구현해야 합니다.’ <- 이거 맞아요! 그런데 정확히 어떻게 구현해야하는지 잘 모르겠어요 저 초보라ㅠㅠ 지표형식이아니라 ea형식으로 코드 짜야하는거죠? 주신 마우스이벤트 처리 링크 보는데 클릭시 소리나게만 하신것 같아서..

      2021.09.27 15:48 [ ADDR : EDIT/ DEL ]
    • 네 ea 형식으로 개발해야합니다. 마우스 이벤트로 전달된 데이터 중에는 클릭한 지점의 좌표 가 있습니다. 예제 코드에서 소리나게 하고 이후 이어서 comment 로 표시되는 문자에 좌표가 표현되게 되어있듯이 마우스 커서의 좌표값을 코드에서 확보 가능하기 때문에 해당 좌표를 이용하여 그림 그릴 선의 시작점으로 활용해도 되고요.. 마우스 이벤트 중에 이동 이벤트, 드래그 이벤트도 수신가능하고 이동, 드래그 중의 좌표도 연속적으로 수신가능합니다. 이 좌표값을 점이나, 선등의 좌표지정용으로 활용합니다. 마우스 이벤트 상세 : https://igotit.tistory.com/1817 의 ChartEvent 부분

      2021.09.27 16:03 신고 [ ADDR : EDIT/ DEL ]