예스스탁
예스스탁 답변
2022-12-12 16:22:05
안녕하세요
예스스탁입니다.
답변내용이 맞는지 모르겠습니다. 아래 내용으로 작성한 식입니다.
아마 올리신 내용은 당일 13시 이전에 당일고가가 전일종가대비 GrowthRate이상 상승한 날이 발생하면
최고가 이후에 최저가 하락율을 구하고 또한 해당 최저가 이후의 최고가와 반등율을 구해서
전체 기간 해당 각 값의 평균을 이용하시는 내용인 것 같습니다.
1 지표
Input: GrowthRate(0.15);
var: cnt(0),AvgDH(0),AvgDL(0),n(0),AL_Avg(0),AH(0);
Array: DL[500](0),DH[500](0);
if Bdate != Bdate[1] Then
{
Condition1 = False;
For cnt = 499 DownTo 1
{
DL[cnt] = DL[cnt-1];
DH[cnt] = DH[cnt-1];
}
if Condition1[1] == true Then
n = n+1;
}
If H == DayHigh and sTime < 130000 and
(DayHigh(0)-DayClose(1))/DayClose(1)*100 >= GrowthRate Then
{
Condition1 = True;
value1 = H;
Value5 = 0;
Value8 = 0;
}
Else
{
if Condition1 == true Then
{
if Value5 == 0 or (Value5 > 0 and L < Value5) Then
{
Value5 = L;
Value8 = H;
}
Else
{
if H > Value8 Then
Value8 = h;
}
# 상승 후 하락율을 Array에 기록
DL[0] = (Value5-value1)/value1;
AvgDL = AverageArray(DL,n+1);
# 하락 후 반등율을 Array에 기록
DH[0] = ((Value8-value5)/value5);
AvgDH = AverageArray(DH,n+1);
}
}
if NextBarSdate != sDate Then
{
# 시가 기준 평균 하락율 도달 시 가격
AL_Avg = NextBarOpen*(1+AvgDL);
# 시가 기준 평균 상승률 도달 시 가격
AH = NextBarOpen*(1+AvgDH);
}
Plot1(AL_Avg);
Plot2(AH);
2 시스템
Input: GrowthRate(0.15);
var: cnt(0),AvgDH(0),AvgDL(0),n(0),AL_Avg(0),AH(0);
Array: DL[500](0),DH[500](0);
if Bdate != Bdate[1] Then
{
Condition1 = False;
For cnt = 499 DownTo 1
{
DL[cnt] = DL[cnt-1];
DH[cnt] = DH[cnt-1];
}
if Condition1[1] == true Then
n = n+1;
}
If H == DayHigh and sTime < 130000 and
(DayHigh(0)-DayClose(1))/DayClose(1)*100 >= GrowthRate Then
{
Condition1 = True;
value1 = H;
Value5 = 0;
Value8 = 0;
}
Else
{
if Condition1 == true Then
{
if Value5 == 0 or (Value5 > 0 and L < Value5) Then
{
Value5 = L;
Value8 = H;
}
Else
{
if H > Value8 Then
Value8 = h;
}
# 상승 후 하락율을 Array에 기록
DL[0] = (Value5-value1)/value1;
AvgDL = AverageArray(DL,n+1);
# 하락 후 반등율을 Array에 기록
DH[0] = ((Value8-value5)/value5);
AvgDH = AverageArray(DH,n+1);
}
}
if NextBarSdate != sDate Then
{
# 시가 기준 평균 하락율 도달 시 가격
AL_Avg = NextBarOpen*(1+AvgDL);
# 시가 기준 평균 상승률 도달 시 가격
AH = NextBarOpen*(1+AvgDH);
}
if AL_Avg > 0 Then
{
Buy("b1",AtLimit,AL_Avg);
ExitLong("S",Atlimit,AH);
}
즐거운 하루되세요
> 기사단장 님이 쓴 글입니다.
> 제목 : 당일 고점 후 눌림목과 반등 고점 찾기
> 안녕하세요. 항상 큰 도움 감사드립니다.
지난번 특정 조건의 값을 배열에 저장하여 통계분석 하는 법을 알려주셨습니다.
해당 예시는 이미 확정된 과거의 값 (전일 고가/저가)여서 ii 변수로 매일의 값을 가져오는 문제이나, 이번에는 당일 고점과 눌림목을 찾아 가공 후 배열에 기록하고 해당 통계를 사용하여 매매하고자 합니다.
결과를 보았을때, 고점이 매 봉 실시간으로 갱신되어, 매 봉 신호가 나오는 문제가 있는 것으로 보여, 과거 데이터는 분석에만 사용하고, 실제 매매는 확정된 통계값 많을 사용하고 하고싶습니다.
혹시 일부 조건들이 모호하다면 임의로 추가해주셔도 무방하며 (예: 특정 시간동안의 저가를 눌림목으로 정의) 전반적인 분석과 매매 구조에 대해 검토해주시면 감사하겠습니다.
https://www.yesstock.com/Board/View.asp?db=board100036&Ext=0&startpage=1&pageno=1&num=164394&ref=164369&Sort=&KeyField=NickName&KeyWord=%B1%E2%BB%E7%B4%DC%C0%E5
#수수료율: 0.004%
#거래세: (매도시) 0.25%
Input: GrowthRate(0.15);
var: DayLowRate(0), AvgDayHigh(0),n(0),p(0),ii(0),jj(0),AL_Avg(0),AL_90(0),AL_99(0),AH(0),AvgDH(0),AvgDL(0);
Array: DL[500](0),DH[500](0);
#초기화
For ii = 1 to 499
{
DL[ii] = 0;
DH[ii] = 0;
}
n = 0;
p = 0;
For ii = 1 to 499
{
# 전일 상승률이 GrowthRate 이상이면
If ((DayHigh(ii-1)-DayClose(ii))/DayClose(ii)) >= GrowthRate
Then
{
# 당일 13시 이전 고가(Value1)와 봉의 위치(Value2) 저장
if DayHigh >= GrowthRate and
H[ii-1]>H[ii] and
sTime <= 130000 Then
{
#해당봉의 고가 저장
value1 = H[ii-1];
#해당봉 이후 경과된 봉 수를 저장한 변수 (초기값 0)
Value2 = 0;
}
Else
{
#Value2를 1씩 증가(조건만족이후 경과된 봉 수)
If value1 > 0 Then
value2 = Value2+1;
}
#저가와 위치 저장
If L[ii-1]<L[ii] Then
{
Value3 = L[ii-1];
Value4 = 0;
}
Else
{
if Value3 > 0 Then
Value4 = Value4+1;
}
#찾은 고가 위치 이후의 저가(눌림목)만 저장
If L[ii-1]<L[ii] and
Value1 >0 and
Value4 >= Value2 Then
{
Value5 = Value3;
}
#고가와 위치 저장
If H[ii-1]>H[ii] Then
{
Value6 = H;
Value7 = 0;
}
Else
{
If value6 > 0 Then
Value7 = Value7+1;
}
#눌림목 이후의 고가(반등)만 저장
If H[ii-1]>H[ii] and
value1 > 0 and
Value5 > 0 and
Value7 >= Value4 Then
{
Value8 = Value6;
}
#일 마지막 봉에서 최종 고가,눌림목, 반등 가격에 대한 비율 저장
if NextBarSdate <> sdate Then{ # 고가는 매 봉마다 갱신되므로, 최종 가격을 사후에 기록하기 위한 조건
# 상승 후 하락율을 Array에 기록
DayLowRate = ((Value5-value1)/value1);
DL[n] = DayLowRate;
AvgDL = AverageArray(DL,n+1);
n = n+1;
# 하락 후 반등율을 Array에 기록
AvgDayHigh = ((Value8-value5)/value5);
DH[p] = AvgDayHigh;
AvgDH = AverageArray(DH,p+1);
p = p+1;
}
}}
# 시가 기준 평균 하락율 도달 시 가격
AL_Avg = DayOpen*(1+AvgDL);
# 시가 기준 평균 상승률 도달 시 가격
AH = DayOpen*(1+AvgDH);
Buy("b1",AtLimit,AL_Avg);
ExitLong("S",Atlimit,AH);