지표: 지원 및 저항

 

지원 및 저항:

프랙탈 표시기를 기반으로 한 지지 및 저항 수준 표시기입니다.

지원 및 저항

Author: Nikolay Kositsin

 

표시기가 올바르게 작동하지 않습니다. 레벨은 기록에만 올바르게 반영되며 새 막대가 나타나면 추적되지 않습니다.

그림에서 빨간색 선은 인디케이터가 차트에 부착된 순간입니다. 왼쪽은 모든 것이 맞고 오른쪽은 틀린 것입니다.

정답과 오답

 
gdtt:

표시기가 올바르게 작동하지 않습니다. 레벨은 기록에만 올바르게 반영되며, 새 막대가 나타나면 추적되지 않습니다.

그림에서 빨간색 선은 인디케이터가 차트에 부착된 순간입니다. 왼쪽은 모든 것이 맞고 오른쪽은 틀린 것입니다.

네, 프랙탈이 소급해서 계산하는 칠면조라는 사실을 완전히 잊고 있었네요! 이제 고치겠습니다!
 

MT5의 마지막 업데이트 이후 이 인디케이터는 고장났습니다. 모든 캔들의 고점과 저점에 점만 찍힙니다.

무슨 문제인가요?

 
yohmm:

MT5의 마지막 업데이트 이후 이 인디케이터는 고장났습니다. 모든 캔들의 고점과 저점에 점만 찍힙니다.

무슨 문제인가요?

이 인디케이터는 정상적으로 작동합니다. 빌드 1016.
 

예, 빌드 1016이 있습니다. 인디케이터를 다시 다운로드하고 오류 0개와 경고 0개로 다시 컴파일했습니다. 여전히 작동하지 않고 고점과 저점에 점만 표시됩니다.

하지만 괜찮습니다. 지금은 피보 되돌림을 사용하거나 s / r 레벨을 직접 그리고 있습니다.

 
yohmm:

예, 빌드 1016이 있습니다. 인디케이터를 다시 다운로드하고 오류 0개와 경고 0개로 다시 컴파일했습니다. 여전히 작동하지 않고 고점과 저점에 점만 표시됩니다.

하지만 괜찮습니다. 지금은 피보 되돌림을 사용하거나 s / r 레벨을 직접 그리고 있습니다.

차트를 업로드할 수 있나요?
 
belido:
차트를 업로드할 수 있나요?

네, 여기 있습니다:

메타트레이더 거래 플랫폼 스크린샷

EURUSD, M5, 2014.11.28

메타쿼츠 소프트웨어 주식회사, 메타트레이더 5, 데모

temp_file_screenshot_27398.png

EURUSD, M5, 2014.11.28, 메타퀘츠 소프트웨어 주식회사, 메타트레이더 5, 데모


 
같은 문제가 있습니다! 메타트레이더를 다시 설치해도 도움이 되지 않습니다...:-(
파일:
sup.png  36 kb
 

이렇게 해보세요.


//+------------------------------------------------------------------+
//|지지와 저항.mq5 |
//|저작권 © 2005, Dmitry |
//|2014년 12월 업데이트 |
//+------------------------------------------------------------------+
#property copyright "저작권 © 2006, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"
//---- 버전
#property version   "1.01"
//---- 차트 창의 표시기
#property indicator_chart_window 
//---- 2개의 표시기 버퍼가 사용됩니다.
#property indicator_buffers 2
//---- 2개의 그래픽 플롯이 사용됩니다.
#property indicator_plots   2
//+----------------------------------------------+
//| 약세 지표 옵션 |
//+----------------------------------------------+
//---- 화살표로 그리기 유형
#property indicator_type1   DRAW_ARROW
//---- 마젠타 색상
#property indicator_color1  Magenta
//---- 줄 너비
#property indicator_width1  1
//---- 지원 라벨
#property indicator_label1  "Support"
//+----------------------------------------------+
//| 강세 지표 옵션 |
//+----------------------------------------------+
//---- 화살표로 그리기 유형
#property indicator_type2   DRAW_ARROW
//---- 라임 색상
#property indicator_color2  Lime
//---- 줄 너비
#property indicator_width2  1
//---- 저항 라벨
#property indicator_label2 "Resistance"

//+----------------------------------------------+
//| 표시기 입력 매개변수 |
//+----------------------------------------------+
//입력 int iPeriod=70; // ATR 기간
//+----------------------------------------------+

//---- 인디케이터 버퍼로 사용되는 동적 배열 선언
double SellBuffer[];
double BuyBuffer[];
//---
int StartBars;
int FRA_Handle;
//+------------------------------------------------------------------+
//| 사용자 지정 표시기 초기화 기능 |
//+------------------------------------------------------------------+
void OnInit()
  {
//---- 전역 변수의 초기화
   StartBars=6;
//---- iFractals 표시기 핸들 가져오기
   FRA_Handle=iFractals(NULL,0);
   if(FRA_Handle==INVALID_HANDLE)Print(" INVALID_HANDLE FRA");

//---- 판매 버퍼를 표시기 버퍼로 설정합니다.
   SetIndexBuffer(0,SellBuffer,INDICATOR_DATA);
//---- 플롯할 시작 막대의 인덱스 설정
   PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,StartBars);
//---- 지원용 레이블 설정
   PlotIndexSetString(0,PLOT_LABEL,"Support");
//---- 화살표 문자 코드 설정
   PlotIndexSetInteger(0,PLOT_ARROW,159);
//---- 인덱싱을 시계열로 설정
   ArraySetAsSeries(SellBuffer,true);

//---- BuyBuffer를 표시 버퍼로 설정합니다.
   SetIndexBuffer(1,BuyBuffer,INDICATOR_DATA);
//---- 플롯할 시작 막대의 인덱스 설정
   PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,StartBars);
//--- 저항에 대한 레이블 설정
   PlotIndexSetString(1,PLOT_LABEL,"Resistance");
//---- 화살표 문자 코드 설정
   PlotIndexSetInteger(1,PLOT_ARROW,159);
//---- 인덱싱을 시계열로 설정
   ArraySetAsSeries(BuyBuffer,true);

//---- 정밀도 설정
   IndicatorSetInteger(INDICATOR_DIGITS,_Digits);
//---- 표시기 짧은 이름
   string short_name="Support & Resistance";
   IndicatorSetString(INDICATOR_SHORTNAME,short_name);
//---- 
  }
//+------------------------------------------------------------------+
//| 사용자 지정 인디케이터 반복 함수|
//+------------------------------------------------------------------+
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[]
                )
  {
//---- 바 확인
   if(BarsCalculated(FRA_Handle)<rates_total
      || rates_total<StartBars)
      return(0);

//---- 로컬 변수 선언
   int to_copy,limit,bar;
   double FRAUp[],FRALo[];

//---- 복사할 막대 수 계산
//---- 및 막대 재계산 루프에 대한 시작 인덱스(제한)
   if(prev_calculated>rates_total || prev_calculated<=0)// 첫 번째 통화 확인
     {
      to_copy=rates_total;           // 복사할 막대
      limit=rates_total-StartBars-1; // 시작 인덱스
     }
   else
     {
      to_copy=rates_total-prev_calculated+3; // 복사할 막대
      limit=rates_total-prev_calculated+2;   // 시작 인덱스
     }

//---- 인덱싱을 시계열로 설정
   ArraySetAsSeries(FRAUp,true);
   ArraySetAsSeries(FRALo,true);
   ArraySetAsSeries(high,true);
   ArraySetAsSeries(low,true);

//---- 표시기 데이터를 배열로 복사하기
   if(CopyBuffer(FRA_Handle,0,0,to_copy,FRAUp)<=0) return(0);
   if(CopyBuffer(FRA_Handle,1,0,to_copy,FRALo)<=0) return(0);
 
//---- 메인 루프
   for(bar=limit; bar>=0; bar--)
     {
       BuyBuffer[bar] = 0.0;
       SellBuffer[bar] = 0.0;
       
     
       if(FRAUp[bar] != DBL_MAX) BuyBuffer[bar] = high[bar]; else BuyBuffer[bar] = BuyBuffer[bar+1];
       
       
       if(FRALo[bar] != DBL_MAX) SellBuffer[bar] = low[bar]; else SellBuffer[bar] = SellBuffer[bar+1];
     }
//---- 
   return(rates_total);
  }
//+------------------------------------------------------------------+