답변완료
부탁드립니다.
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
214
글번호 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
169
글번호 192099
지표