답변완료
부탁드립니다.
supertrend2 통과시 세로선이 생깁니다. 동시에 봉 위아래 화살표가 생기도록 부탁드립니다.
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 = (H+L)/2;
if CurrentBar > 1 Then
{
alpha1 = 1 / period1;
source1 = max(high - low, abs(high - close[1]), abs(low - close[1]));
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 C > UpperBand1 Then
direction1 = 1;
if C < LowerBand1 Then
direction1 = -1;
if direction1 == 1 Then
supertrend1 = lowerband1;
Else
supertrend1 = upperband1;
alpha2 = 1 / period2;
source2 = max(high - low, abs(high - close[1]), abs(low - close[1]));
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 C > UpperBand2 Then
direction2 = 1;
if C < LowerBand2 Then
direction2 = -1;
if direction2 == 1 Then
supertrend2 = lowerband2;
Else
supertrend2 = upperband2;
alpha3 = 1 / period3;
source3 = max(high - low, abs(high - close[1]), abs(low - close[1]));
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, 7);
NoPlot(6);
}
Else
{
Plot6(superTrend3,"매도3", Indigo, 0, 7);
NoPlot(5);
}
}
var : box(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);
}
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);
}
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);
}
}
2025-06-25
172
글번호 192101
지표
답변완료
수식 부탁드립니다.
Inputs: 기간시작(10), 기간끝(40);
Vars: 신호값(0), 중심(0), p1(0), p2(0), p3(0), p4(0), p5(0), p6(0), p7(0), 평균값(0);
중심 = Average(High, 40) * 1.02;
평균값 = (p1 + p2 + p3 + p4 + p5 + p6 + p7) / 7;
p1 = IFF(중심 < Average(Close, 10), Average(Close, 10), 중심);
p2 = IFF(중심 < Average(Close, 15), Average(Close, 15), 중심);
p3 = IFF(중심 < Average(Close, 20), Average(Close, 20), 중심);
p4 = IFF(중심 < Average(Close, 25), Average(Close, 25), 중심);
p5 = IFF(중심 < Average(Close, 30), Average(Close, 30), 중심);
p6 = IFF(중심 < Average(Close, 35), Average(Close, 35), 중심);
p7 = IFF(중심 < Average(Close, 40), Average(Close, 40), 중심);
// 이전 봉과 비교해서 하나라도 값이 달라지면 신호
If (p1 <> p2) or (p2 <> p3) or (p3 <> p4) or (p4 <> p5) or (p5 <> p6) or (p6 <> p7) or (p7 <> p1) Then
신호값 = 평균값; // 또는 원하는 y값(예: Close, High 등)
Else
신호값 = Nan; // 표시 안함(플랫폼에 따라 Null, NaN 등 사용 가능)
Plot1(신호값, "변화점");
**************// 질문1.
plot1 선그래프가 아닌 점그래프로 변환시
점그래프 발생시점 첫번째 점만 표시하고 싶습니다~! //
----------------------------------------------------------------------
Input: src(numeric), length(numeric), weight(numeric);
Vars: sum(0), output(0), i(0);
sum = 0;
For i = 0 To length - 1 Begin
sum = sum + src[i];
End;
If length > 0 Then
output = sum / length;
Else
output = 0;
WeightedSimpleAverage = (src * weight + output * (length - weight)) / length;
End;
**************// 질문2 사용자 함수작성해서 쓸려고 하는데 문법에러, 잘못된 토큰:'end'라고 뜨네요
어떻게 사용해야하는지요? ㅠ
2025-06-25
146
글번호 192099
지표
답변완료
왜 이런 현상이 생기나요
안녕하세요?
그림에서 test 23-0 지표가 오리지널 지표 입니다.
1) 제일 아래의 test 23-2 지표는 위의 지표를 A0 라는 사용자 함수로 만든 후, 그 A0를 출력시킨 것입니다.
=>
일단 이녀석은 위의 오리지널 지표랑 값은 같게 나오는데, 문제는 오리지널 지표는 차트의 처음부터 나오는데, 이 녀석은 왜 25년 1월 13일부터 지표가 그려지는지 모르겠습니다. 즉, 오리지널 지표를 사용자 함수로 만들면 이렇게 앞부분이 안 그려지는 이유가 뭔지 궁금합니다.
2) 중간에 그려진 test 23-1 지표는 위의 23-0 지표를 사용자 함수로 만든 A0 함수에다가 다른 사용자 함수 A1, A2와 함께 새로운 지표를 만들고자 했는데, 이상하게도 사용자 함수 A1, A2와 같이 사용하니 값이 그림처럼 달라집니다. 즉, 여기서는 수식에 A0, A1, A2 함수들이 등장하는데, 그 중 A0만을 그린 것입니다. (물론, 사용자 함수 A1, A2를 주석처리하면 A0 함수를 그릴 때, 3번째 지표인 test 23-2와 동일하게 나옵니다.)
=>
(1) 이 경우에는 아까의 test 23-2 지표처럼 25년 1월 13일부터 지표가 그려지는 것도 있지만,
(2) 더 심각한 것은 보시다시피, 지표값 자체가 오리지날 지표인 test 23-0과 비슷은 하지만, 값이 틀립니다. 원래 지표는 -10 ~ 10 의 값을 갖는데, 이 친구는 약 -5,83 ~ 5.83 의 값을 갖는 것으로 보이고, 오리지널은 음수로 바뀌었는데, 이 친구는 아직 양수이기도 하고(25년 5월 22일), 신뢰가 안갑니다. (첫번째 그림)
(3) 웃긴 것은 지금의 차트는 세아베스틸 연결 선물인데, 다른 종목으로 바꾸면, 3가지 모두 값이 같게 나옵니다. (2번째 그림) 물론, 지표가 처음 그려지는 것은 사용자 함수로 바꿔서 그리는 것이 오리지날 지표에 비해 여러 봉 뒤부터 그려지는 문제는 똑같습니다. (3번째 그림)
이런 부분들에 대해서 왜 이런 일이 생기는지?
이걸 피하는 방법은 뭐가 있는지?
등이 궁금해서 여쭤 봅니다.
참고로, 오리지널 지표는 HMA 를 사용했습니다.
감사합니다.
2025-06-25
183
글번호 192097
지표