예스스탁
예스스탁 답변
2024-09-20 15:11:49
안녕하세요
예스스탁입니다.
data2의 추세선은 별도 지표로 적용해 보셔야 합니다.
2번식은 지표식입니다.
1.
input:swingPeriod(5);
Var:신고가(False,Data2), 신저가(False,Data2), j(0,Data2),jj(0,Data2),최종꼭지점("",Data2),추세구간(0,Data2);
Array:고[10,4](0,Data2),저[10,4](0,Data2); // 1:가격,2:Index,3:sDate,4:sTime
var : TL1(0,Data2);
var : HighStop(0,Data2), LowStop(0,Data2), TrendV(0,Data2);
# 추세 판정
신고가 = data2(Highest(H,swingPeriod) == H);
신저가 = data2(Lowest (L,swingPeriod) == L);
If 신고가 == True and 신저가 == True Then { // 신고가 신저가 동시 발생
If 최종꼭지점 == "저점" Then {
If 저[1,1] > data2(L) Then
추세구간 = -1;
Else
추세구간 = 1;
}
Else If 최종꼭지점 == "고점" Then {
If 고[1,1] < data2(H) Then
추세구간 = 1;
Else
추세구간 = -1;
}
}
Else If 신고가 == True Then //신고가 발생
추세구간 = 1;
Else If 신저가 == True Then //신저가 발생
추세구간 = -1;
# 상승추세 구간
If 추세구간 == 1 Then {
If 최종꼭지점 == "저점" Then {
For j = 3 DownTo 2 {
For jj = 1 To 4 {
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = data2(H);
고[1,2] = data2(Index);
고[1,3] = data2(sDate);
고[1,4] = data2(sTime);
}
Else If 고[1,1] < data2(H) Then { // 1번 고점보다 높은 고가 출현
고[1,1] = data2(H);
고[1,2] = data2(Index);
고[1,3] = data2(sDate);
고[1,4] = data2(sTime);
}
최종꼭지점 = "고점";
}
# 하락추세 구간
If 추세구간 == -1 Then {
If 최종꼭지점 == "고점" then {
For j = 3 DownTo 2 {
For jj = 1 To 4 {
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = data2(L);
저[1,2] = data2(Index);
저[1,3] = data2(sDate);
저[1,4] = data2(sTime);
}
Else If 저[1,1] > data2(L) then {
저[1,1] = data2(L);
저[1,2] = data2(Index);
저[1,3] = data2(sDate);
저[1,4] = data2(sTime);
}
최종꼭지점 = "저점";
}
# 직전 스윙고가, 스윙저가
if 추세구간 == 1 Then
HighStop = 고[2,1];
Else
HighStop = 고[1,1];
if 추세구간 == -1 Then
LowStop = 저[2,1];
Else
LowStop = 저[1,1];
if data2(H) >= HighStop Then
TrendV = 1;
if data2(L) <= LowStop Then
TrendV = -1;
# 매매식
var : retraceScnt(0), retraceBcnt(0);
if TrendV == 1 Then {
retraceScnt = 0;
if 추세구간[1] == 1 and 추세구간 == -1 Then
retraceBcnt = retraceBcnt + 1;
}
if TrendV == -1 Then {
retraceBcnt = 0;
if 추세구간[1] == -1 and 추세구간 == 1 Then
retraceScnt = retraceScnt + 1;
}
if retraceBcnt == 2 and data2(C)>HighStop Then
Buy("B", AtMarket);
if MarketPosition == 1 and data2(C)<Lowstop Then
ExitLong("EL", AtMarket);
if retraceScnt == 2 and data2(C)<Lowstop Then
Sell("S", AtMarket);
if MarketPosition == -1 and data2(C)>HighStop Then
ExitShort("ES", AtMarket);
2.
input:swingPeriod(5);
Var:신고가(False,Data2), 신저가(False,Data2), j(0,Data2),jj(0,Data2),최종꼭지점("",Data2),추세구간(0,Data2);
Array:고[10,4](0,Data2),저[10,4](0,Data2); // 1:가격,2:Index,3:sDate,4:sTime
var : TL1(0,Data2);
var : HighStop(0,Data2), LowStop(0,Data2), TrendV(0,Data2);
# 추세 판정
신고가 = data2(Highest(H,swingPeriod) == H);
신저가 = data2(Lowest (L,swingPeriod) == L);
If 신고가 == True and 신저가 == True Then { // 신고가 신저가 동시 발생
If 최종꼭지점 == "저점" Then {
If 저[1,1] > data2(L) Then
추세구간 = -1;
Else
추세구간 = 1;
}
Else If 최종꼭지점 == "고점" Then {
If 고[1,1] < data2(H) Then
추세구간 = 1;
Else
추세구간 = -1;
}
}
Else If 신고가 == True Then //신고가 발생
추세구간 = 1;
Else If 신저가 == True Then //신저가 발생
추세구간 = -1;
# 상승추세 구간
If 추세구간 == 1 Then {
If 최종꼭지점 == "저점" Then {
For j = 3 DownTo 2 {
For jj = 1 To 4 {
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = data2(H);
고[1,2] = data2(Index);
고[1,3] = data2(sDate);
고[1,4] = data2(sTime);
TL1 = TL_New_Self(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
TL_SetSize(TL1,1);
TL_SetColor(TL1,gray);
}
Else If 고[1,1] < data2(H) Then { // 1번 고점보다 높은 고가 출현
고[1,1] = data2(H);
고[1,2] = data2(Index);
고[1,3] = data2(sDate);
고[1,4] = data2(sTime);
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
}
최종꼭지점 = "고점";
}
# 하락추세 구간
If 추세구간 == -1 Then {
If 최종꼭지점 == "고점" then {
For j = 3 DownTo 2 {
For jj = 1 To 4 {
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = data2(L);
저[1,2] = data2(Index);
저[1,3] = data2(sDate);
저[1,4] = data2(sTime);
TL1 = TL_New_Self(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
TL_SetSize(TL1,1);
TL_SetColor(TL1,gray);
}
Else If 저[1,1] > data2(L) then {
저[1,1] = data2(L);
저[1,2] = data2(Index);
저[1,3] = data2(sDate);
저[1,4] = data2(sTime);
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
}
최종꼭지점 = "저점";
}
# 직전 스윙고가, 스윙저가
if 추세구간 == 1 Then
HighStop = 고[2,1];
Else
HighStop = 고[1,1];
if 추세구간 == -1 Then
LowStop = 저[2,1];
Else
LowStop = 저[1,1];
if H >= HighStop Then
TrendV = 1;
if L <= LowStop Then
TrendV = -1;
# 매매식
var : retraceScnt(0), retraceBcnt(0);
if TrendV == 1 Then {
retraceScnt = 0;
if 추세구간[1] == 1 and 추세구간 == -1 Then
retraceBcnt = retraceBcnt + 1;
}
if TrendV == -1 Then {
retraceBcnt = 0;
if 추세구간[1] == -1 and 추세구간 == 1 Then
retraceScnt = retraceScnt + 1;
}
Plot1(Data2(c));
즐거운 하루되세요