커뮤니티

지표문의

프로필 이미지
성공예견
2026-07-11 13:11:55
106
글번호 232794
답변완료

1.아래지표를 해외 선물에 적용하니 표시가 안돼요

수정 좀 해주세요

.##+++++++++++++++++++++++#+++++++++++++++++++++++#

#+++++++++++++++++++++++#+++++++++++++++++++++++#

##===================#

Vars:j(0),행번호(0),단위가격(0),추가행(0),알파벳(0),최대개수(0),총개수(0),봉개수(0),

추정거래량(0),cnt(0),중앙가격(0),중심행(0),중심가격(0);


Arrays:가격대[100](0),거래량[100](0),개수[100](0),프로파일[100](0);

단위가격 = 2 * PriceScale;

if Date <> Date[1] then

begin

    for 행번호 = 0 to 99 begin

        거래량[행번호]=0;

        개수[행번호]=0;

        프로파일[행번호]=0;

    end;

    최대개수=0;

    총개수=0;

    가격대[0]=High+단위가격*20;

    for 행번호=0 to 98

        가격대[행번호+1]=가격대[행번호]-단위가격;

end;

if 가격대[0] <= High then

begin

    추가행 = Ceiling((High-가격대[0])/단위가격)+5;

    if 추가행>50 then

        추가행=50;

    for 행번호=(99-추가행) downto 0 begin

        가격대[행번호+추가행]=가격대[행번호];

        거래량[행번호+추가행]=거래량[행번호];

        개수[행번호+추가행]=개수[행번호];

        프로파일[행번호+추가행]=프로파일[행번호];

    end;

    가격대[0]=가격대[0]+단위가격*추가행;

    for 행번호=0 to 추가행-1

        가격대[행번호+1]=가격대[행번호]-단위가격;

    for 행번호=0 to 추가행 begin

        거래량[행번호]=0;

        개수[행번호]=0;

        프로파일[행번호]=0;

    end;

    중심행=중심행+추가행;

end;

cnt=0;

for 행번호=0 to 99 begin

    if Low<=가격대[행번호] and 가격대[행번호]<=High then

        cnt=cnt+1;

end;

if cnt>0 then

    추정거래량=Volume/cnt;

else

    추정거래량=0;

for 행번호=0 to 99 begin

    if Low<=가격대[행번호] and 가격대[행번호]<=High then begin

        거래량[행번호]=거래량[행번호]+추정거래량;

        개수[행번호]=개수[행번호]+1;

        if 개수[행번호]>최대개수 then begin

            최대개수=개수[행번호];

            중심행=행번호;

        end

        else

        if 개수[행번호]=최대개수 then begin

            if 거래량[행번호]>거래량[중심행] then

                중심행=행번호;

        end;

    end;

end;

중심가격=가격대[중심행];


Var62 =(max(high - low, abs(high - close[1]), abs(low - close[1])));


input : period1(10),multiplier1(3);

input : period2(20),multiplier2(2);

input : period3(30),multiplier3(3);

var : src(0);

var : AtrV1(0),upperBand1(0),lowerBand1(0), prevLowerBand1(0), prevUpperBand1(0);

var : prevSuperTrend1(0), superTrend1(C), direction1(0),alpha1(0),source1(0);

var : AtrV2(0),upperBand2(0),lowerBand2(0), prevLowerBand2(0), prevUpperBand2(0);

var : prevSuperTrend2(0), superTrend2(C), direction2(0),alpha2(0),source2(0);

var : AtrV3(0),upperBand3(0),lowerBand3(0), prevLowerBand3(0), prevUpperBand3(0);

var : prevSuperTrend3(0), superTrend3(C), direction3(0),alpha3(0),source3(0);

var : TL1(0),TL2(0),TL3(0),TL(0),box1(0),box2(0);


src = 중심가격;

//src = (H+L)/2;

if CurrentBar > 1 Then

{     

      alpha1 = 1 / period1;

      source1 = Var62;

      ATrV1 = alpha1 * source1 + (1 - alpha1) * ATrV1[1]; //지수가중이평방식

      //ATrV = ma(source,AtrPeriod); //단순이평방식

      upperBand1 = src + multiplier1 * AtrV1;

      lowerBand1 = src - multiplier1 * AtrV1;

      prevLowerBand1 = lowerBand1[1];

      prevUpperBand1 = upperBand1[1];

      

      if lowerBand1 > prevLowerBand1 or close[1] < prevLowerBand1 Then

            lowerBand1 = lowerBand1;

      Else

            lowerBand1 = prevLowerBand1;

      

      if upperBand1 < prevUpperBand1 or close[1] > prevUpperBand1 Then

            upperBand1 = upperBand1;

      Else

            upperBand1 = prevUpperBand1;

      

      if 중심가격 > UpperBand1 Then

            direction1 = 1;

      if 중심가격 < LowerBand1 Then

            direction1 = -1;

      

      if direction1 == 1 Then

            supertrend1 = lowerband1;

      Else

            supertrend1 = upperband1;

      


      alpha2 = 1 / period2;

      source2 = Var62;

      ATrV2 = alpha2 * source2 + (1 - alpha2) * ATrV2[1]; //지수가중이평방식

      //ATrV = ma(source,AtrPeriod); //단순이평방식

      upperBand2 = src + multiplier2 * AtrV2;

      lowerBand2 = src - multiplier2 * AtrV2;

      prevLowerBand2 = lowerBand2[1];

      prevUpperBand2 = upperBand2[1];

      

      if lowerBand2 > prevLowerBand2 or close[1] < prevLowerBand2 Then

            lowerBand2 = lowerBand2;

      Else

            lowerBand2 = prevLowerBand2;

      

      if upperBand2 < prevUpperBand2 or close[1] > prevUpperBand2 Then

            upperBand2 = upperBand2;

      Else

            upperBand2 = prevUpperBand2;

      

      if 중심가격 > UpperBand2 Then

            direction2 = 1;

      if 중심가격 < LowerBand2 Then

            direction2 = -1;

      

      if direction2 == 1 Then

            supertrend2 = lowerband2;

      Else

            supertrend2 = upperband2;

      


      alpha3 = 1 / period3;

      source3 = Var62;

      ATrV3 = alpha3 * source3 + (1 - alpha3) * ATrV3[1]; //지수가중이평방식

      //ATrV = ma(source,AtrPeriod); //단순이평방식

      upperBand3 = src + multiplier3 * AtrV3;

      lowerBand3 = src - multiplier3 * AtrV3;

      prevLowerBand3 = lowerBand3[1];

      prevUpperBand3 = upperBand3[1];

      

      if lowerBand3 > prevLowerBand3 or close[1] < prevLowerBand3 Then

            lowerBand3 = lowerBand3;

      Else

            lowerBand3 = prevLowerBand3;

      

      if upperBand3 < prevUpperBand3 or close[1] > prevUpperBand3 Then

            upperBand3 = upperBand3;

      Else

            upperBand3 = prevUpperBand3;

      

      if C > UpperBand3 Then

            direction3 = 1;

      if C < LowerBand3 Then

            direction3 = -1;

      

      if direction3 == 1 Then

            supertrend3 = lowerband3;

      Else

            supertrend3 = upperband3;



      if C < superTrend1 Then

      {

            Plot1(superTrend1,"매수1", rgb(247, 75, 201), 0, 1);

            NoPlot(2);

      }

      Else

      {

            Plot2(superTrend1,"매도1", Indigo, 0, 1);      

            NoPlot(1);      

      }


      if C < superTrend2 Then

      {

            Plot3(superTrend2,"매수2",  rgb(247, 75, 201), 0, 2);

            NoPlot(4);

      }

      Else

      {

            Plot4(superTrend2,"매도2", Indigo, 0, 2);      

            NoPlot(3);      

      }


        if C < superTrend3 Then

      {

            Plot5(superTrend3,"매수3",  rgb(247, 75, 201), 0, 3);

            NoPlot(6);

      }

      Else

      {

            Plot6(superTrend3,"매도3", Indigo, 0, 3);      

            NoPlot(5);      

      }

}


var : box(0),tx(0);


if CrossUp(c,supertrend2) Then

{

      TL = TL_New(sDate,sTime,0,sDate,sTime,99999999);

      TL_SetColor(TL,rgb(255, 215, 0));

      TL_SetSize(TL,1);

      TL_SetStyle(TL,2);


      TX = Text_New(sDate,sTime,L,"▲");

      Text_SetStyle(tx,2,0);

      Text_SetSize(tx,20);

      Text_SetColor(tx,Red);

          

}

Else if CrossDown(c,supertrend2) Then

{

      TL = TL_New(sDate,sTime,0,sDate,sTime,999999999);

      TL_SetColor(TL,  rgb(193, 216, 251));

      TL_SetSize(TL,2);

      TL_SetStyle(TL,2);

            

       TX = Text_New(sDate,sTime,H,"▼");

      Text_SetStyle(tx,2,1);

      Text_SetSize(tx,20);

      Text_SetColor(tx,Blue);         

    

}

Else

{

      if var4 > 0 and Index < var4+5 Then

      {

            TL_SetEnd(TL1,NextBarSdate,NextBarStime,var1);

            TL_SetEnd(TL2,NextBarSdate,NextBarStime,var2);

            TL_SetEnd(TL3,NextBarSdate,NextBarStime,var3);


                  Box_SetEnd(box1,NextBarSdate,NextBarStime,var2);

                  Box_SetEnd(box2,NextBarSdate,NextBarStime,var3);

      }

}

그럼 수고하세요

지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2026-07-13 12:59:22

안녕하세요 예스스탁입니다. 수식의 중심가격이 값이 없는 구간있습니다. 값이 있을 때만 저장해 사용하게 변경해 들비니다. Vars:j(0),행번호(0),단위가격(0),추가행(0),알파벳(0),최대개수(0),총개수(0),봉개수(0), 추정거래량(0),cnt(0),중앙가격(0),중심행(0),중심가격(0); Arrays:가격대[100](0),거래량[100](0),개수[100](0),프로파일[100](0); 단위가격 = 2 * PriceScale; if Date <> Date[1] then begin for 행번호 = 0 to 99 begin 거래량[행번호]=0; 개수[행번호]=0; 프로파일[행번호]=0; end; 최대개수=0; 총개수=0; 가격대[0]=High+단위가격*20; for 행번호=0 to 98 가격대[행번호+1]=가격대[행번호]-단위가격; end; if 가격대[0] <= High then begin 추가행 = Ceiling((High-가격대[0])/단위가격)+5; if 추가행>50 then 추가행=50; for 행번호=(99-추가행) downto 0 begin 가격대[행번호+추가행]=가격대[행번호]; 거래량[행번호+추가행]=거래량[행번호]; 개수[행번호+추가행]=개수[행번호]; 프로파일[행번호+추가행]=프로파일[행번호]; end; 가격대[0]=가격대[0]+단위가격*추가행; for 행번호=0 to 추가행-1 가격대[행번호+1]=가격대[행번호]-단위가격; for 행번호=0 to 추가행 begin 거래량[행번호]=0; 개수[행번호]=0; 프로파일[행번호]=0; end; 중심행=중심행+추가행; end; cnt=0; for 행번호=0 to 99 begin if Low<=가격대[행번호] and 가격대[행번호]<=High then cnt=cnt+1; end; if cnt>0 then 추정거래량=Volume/cnt; else 추정거래량=0; for 행번호=0 to 99 begin if Low<=가격대[행번호] and 가격대[행번호]<=High then begin 거래량[행번호]=거래량[행번호]+추정거래량; 개수[행번호]=개수[행번호]+1; if 개수[행번호]>최대개수 then begin 최대개수=개수[행번호]; 중심행=행번호; end else if 개수[행번호]=최대개수 then begin if 거래량[행번호]>거래량[중심행] then 중심행=행번호; end; end; end; if isnan(가격대[중심행]) == False Then 중심가격=가격대[중심행]; Var62 =(max(high - low, abs(high - close[1]), abs(low - close[1]))); input : period1(10),multiplier1(3); input : period2(20),multiplier2(2); input : period3(30),multiplier3(3); var : src(0); var : AtrV1(0),upperBand1(0),lowerBand1(0), prevLowerBand1(0), prevUpperBand1(0); var : prevSuperTrend1(0), superTrend1(C), direction1(0),alpha1(0),source1(0); var : AtrV2(0),upperBand2(0),lowerBand2(0), prevLowerBand2(0), prevUpperBand2(0); var : prevSuperTrend2(0), superTrend2(C), direction2(0),alpha2(0),source2(0); var : AtrV3(0),upperBand3(0),lowerBand3(0), prevLowerBand3(0), prevUpperBand3(0); var : prevSuperTrend3(0), superTrend3(C), direction3(0),alpha3(0),source3(0); var : TL1(0),TL2(0),TL3(0),TL(0),box1(0),box2(0); src = 중심가격; //src = (H+L)/2; if CurrentBar > 1 Then { alpha1 = 1 / period1; source1 = Var62; ATrV1 = alpha1 * source1 + (1 - alpha1) * ATrV1; //지수가중이평방식 //ATrV = ma(source,AtrPeriod); //단순이평방식 upperBand1 = src + multiplier1 * AtrV1; lowerBand1 = src - multiplier1 * AtrV1; prevLowerBand1 = lowerBand1[1]; prevUpperBand1 = upperBand1[1]; #Plot1(upperBand1); if lowerBand1 > LowerBand1[1] or close[1] < LowerBand1[1] Then lowerBand1 = lowerBand1; Else lowerBand1 = LowerBand1[1]; if upperBand1 < UpperBand1[1] or close[1] > UpperBand1[1] Then upperBand1 = upperBand1; Else upperBand1 = UpperBand1[1]; if 중심가격 > UpperBand1 Then direction1 = 1; if 중심가격 < LowerBand1 Then direction1 = -1; if direction1 == 1 Then supertrend1 = lowerband1; Else supertrend1 = upperband1; alpha2 = 1 / period2; source2 = Var62; ATrV2 = alpha2 * source2 + (1 - alpha2) * ATrV2[1]; //지수가중이평방식 //ATrV = ma(source,AtrPeriod); //단순이평방식 upperBand2 = src + multiplier2 * AtrV2; lowerBand2 = src - multiplier2 * AtrV2; prevLowerBand2 = lowerBand2[1]; prevUpperBand2 = upperBand2[1]; if lowerBand2 > prevLowerBand2 or close[1] < prevLowerBand2 Then lowerBand2 = lowerBand2; Else lowerBand2 = prevLowerBand2; if upperBand2 < prevUpperBand2 or close[1] > prevUpperBand2 Then upperBand2 = upperBand2; Else upperBand2 = prevUpperBand2; if 중심가격 > UpperBand2 Then direction2 = 1; if 중심가격 < LowerBand2 Then direction2 = -1; if direction2 == 1 Then supertrend2 = lowerband2; Else supertrend2 = upperband2; alpha3 = 1 / period3; source3 = Var62; ATrV3 = alpha3 * source3 + (1 - alpha3) * ATrV3[1]; //지수가중이평방식 //ATrV = ma(source,AtrPeriod); //단순이평방식 upperBand3 = src + multiplier3 * AtrV3; lowerBand3 = src - multiplier3 * AtrV3; prevLowerBand3 = lowerBand3[1]; prevUpperBand3 = upperBand3[1]; if lowerBand3 > prevLowerBand3 or close[1] < prevLowerBand3 Then lowerBand3 = lowerBand3; Else lowerBand3 = prevLowerBand3; if upperBand3 < prevUpperBand3 or close[1] > prevUpperBand3 Then upperBand3 = upperBand3; Else upperBand3 = prevUpperBand3; if C > UpperBand3 Then direction3 = 1; if C < LowerBand3 Then direction3 = -1; if direction3 == 1 Then supertrend3 = lowerband3; Else supertrend3 = upperband3; if C < superTrend1 Then { Plot1(superTrend1,"매수1", rgb(247, 75, 201), 0, 1); NoPlot(2); } Else { Plot2(superTrend1,"매도1", Indigo, 0, 1); NoPlot(1); } if C < superTrend2 Then { Plot3(superTrend2,"매수2",rgb(247, 75, 201), 0, 2); NoPlot(4); } Else { Plot4(superTrend2,"매도2", Indigo, 0, 2); NoPlot(3); } if C < superTrend3 Then { Plot5(superTrend3,"매수3",rgb(247, 75, 201), 0, 3); NoPlot(6); } Else { Plot6(superTrend3,"매도3", Indigo, 0, 3); NoPlot(5); } } var : box(0),tx(0); if CrossUp(c,supertrend2) Then { TL = TL_New(sDate,sTime,0,sDate,sTime,99999999); TL_SetColor(TL,rgb(255, 215, 0)); TL_SetSize(TL,1); TL_SetStyle(TL,2); TX = Text_New(sDate,sTime,L,"▲"); Text_SetStyle(tx,2,0); Text_SetSize(tx,20); Text_SetColor(tx,Red); } Else if CrossDown(c,supertrend2) Then { TL = TL_New(sDate,sTime,0,sDate,sTime,999999999); TL_SetColor(TL,rgb(193, 216, 251)); TL_SetSize(TL,2); TL_SetStyle(TL,2); TX = Text_New(sDate,sTime,H,"▼"); Text_SetStyle(tx,2,1); Text_SetSize(tx,20); Text_SetColor(tx,Blue); } Else { if var4 > 0 and Index < var4+5 Then { TL_SetEnd(TL1,NextBarSdate,NextBarStime,var1); TL_SetEnd(TL2,NextBarSdate,NextBarStime,var2); TL_SetEnd(TL3,NextBarSdate,NextBarStime,var3); Box_SetEnd(box1,NextBarSdate,NextBarStime,var2); Box_SetEnd(box2,NextBarSdate,NextBarStime,var3); } } 즐거운 하루되세요