예스스탁
예스스탁 답변
2023-03-21 09:02:00
안녕하세요
예스스탁입니다.
Input : 전환비율(5),Per1(1),Per2(2),Per3(3),Per4(4),Per5(5);
Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분("");
var : TL1(0),TL11(0),TL12(0),TL13(0),TL14(0),TL15(0);
var : TL2(0),TL21(0),TL22(0),TL23(0),TL24(0),TL25(0);
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
var : hibar(0),lobar(0);
HH = H;
LL = L;
If Index == 0 Then
{
고[1,1] = HH;
고[1,2] = 0;
고[1,3] = sDate;
고[1,4] = sTime;
저[1,1] = LL;
저[1,2] = 0;
저[1,3] = sDate;
저[1,4] = sTime;
}
If Index > 0 Then
{
hiBar = hiBar + 1;
loBar = loBar + 1;
}
If HH[hiBar] < HH Then hiBar = 0;
If LL[loBar] > LL Then loBar = 0;
Condition1 = 저[1,1] * (1 + (전환비율/100)) < HH and hiBar == 0;
Condition2 = 고[1,1] * (1 - (전환비율/100)) > LL and loBar == 0;
처리구분 = "";
If Condition1 and Condition2 Then // 고점과 저점 조건 동시 만족
{
If 최종꼭지점 == "저점" Then
{
If 저[1,1] > LL Then 처리구분 = "저점처리";
Else 처리구분 = "고점처리";
}
Else If 최종꼭지점 == "고점" Then
{
If 고[1,1] < HH Then 처리구분 = "고점처리";
Else 처리구분 = "저점처리";
}
}
Else If Condition1 Then 처리구분 = "고점처리";
Else If Condition2 Then 처리구분 = "저점처리";
If 처리구분 == "고점처리" Then
{
최종고가 = HH;// 신규고점을 체크하기 위해 저장
If 최종꼭지점 == "저점" Then
{
TL_SetEnd(TL11,저[1,3],저[1,4],고[1,1]*(1-Per1/100));
TL_SetEnd(TL12,저[1,3],저[1,4],고[1,1]*(1-Per2/100));
TL_SetEnd(TL13,저[1,3],저[1,4],고[1,1]*(1-Per3/100));
TL_SetEnd(TL14,저[1,3],저[1,4],고[1,1]*(1-Per4/100));
TL_SetEnd(TL15,저[1,3],저[1,4],고[1,1]*(1-Per5/100));
For j = 10 DownTo 2
{
For jj = 1 To 4
{
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
hiBar = -1;
loBar = -1;
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
TL_SetColor(TL1,Red);
TL_SetSize(TL1,1);
#TL11 = TL_New(고[1,3],고[1,4],고[1,1]*(1-Per1/100),NextBarSdate,NextBarStime,고[1,1]*(1-Per1/100));
#TL12 = TL_New(고[1,3],고[1,4],고[1,1]*(1-Per2/100),NextBarSdate,NextBarStime,고[1,1]*(1-Per2/100));
#TL13 = TL_New(고[1,3],고[1,4],고[1,1]*(1-Per3/100),NextBarSdate,NextBarStime,고[1,1]*(1-Per3/100));
#TL14 = TL_New(고[1,3],고[1,4],고[1,1]*(1-Per4/100),NextBarSdate,NextBarStime,고[1,1]*(1-Per4/100));
#TL15 = TL_New(고[1,3],고[1,4],고[1,1]*(1-Per5/100),NextBarSdate,NextBarStime,고[1,1]*(1-Per5/100));
#TL_SetColor(TL11,Blue);
#TL_SetColor(TL12,Blue);
#TL_SetColor(TL13,Blue);
#TL_SetColor(TL14,Blue);
#TL_SetColor(TL15,Blue);
}
Else If 고[1,1] < HH Then// 1번 고점보다 높은 고가 출현
{
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
hiBar = -1;
loBar = -1;
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
TL_SetBegin(TL11,고[1,3],고[1,4],고[1,1]*(1-Per1/100));
TL_SetBegin(TL12,고[1,3],고[1,4],고[1,1]*(1-Per2/100));
TL_SetBegin(TL13,고[1,3],고[1,4],고[1,1]*(1-Per3/100));
TL_SetBegin(TL14,고[1,3],고[1,4],고[1,1]*(1-Per4/100));
TL_SetBegin(TL15,고[1,3],고[1,4],고[1,1]*(1-Per5/100));
}
최종꼭지점 = "고점";
}
#==========================================#
If 처리구분 == "저점처리" Then
{
최종저가 = LL;
If 최종꼭지점 == "고점" then
{
TL_SetEnd(TL21,고[1,3],고[1,4],저[1,1]*(1+Per1/100));
TL_SetEnd(TL22,고[1,3],고[1,4],저[1,1]*(1+Per2/100));
TL_SetEnd(TL23,고[1,3],고[1,4],저[1,1]*(1+Per3/100));
TL_SetEnd(TL24,고[1,3],고[1,4],저[1,1]*(1+Per4/100));
TL_SetEnd(TL25,고[1,3],고[1,4],저[1,1]*(1+Per5/100));
For j = 10 DownTo 2
{
For jj = 1 To 4
{
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL2 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
TL_SetColor(TL2,Blue);
TL_SetSize(TL2,1);
TL21 = TL_New(저[1,3],저[1,4],저[1,1]*(1-Per1/100),NextBarSdate,NextBarStime,저[1,1]*(1+Per1/100));
TL22 = TL_New(저[1,3],저[1,4],저[1,1]*(1-Per2/100),NextBarSdate,NextBarStime,저[1,1]*(1+Per2/100));
TL23 = TL_New(저[1,3],저[1,4],저[1,1]*(1-Per3/100),NextBarSdate,NextBarStime,저[1,1]*(1+Per3/100));
TL24 = TL_New(저[1,3],저[1,4],저[1,1]*(1-Per4/100),NextBarSdate,NextBarStime,저[1,1]*(1+Per4/100));
TL25 = TL_New(저[1,3],저[1,4],저[1,1]*(1-Per5/100),NextBarSdate,NextBarStime,저[1,1]*(1+Per5/100));
TL_SetColor(TL21,Red);
TL_SetColor(TL22,Red);
TL_SetColor(TL23,Red);
TL_SetColor(TL24,Red);
TL_SetColor(TL25,Red);
hiBar = -1;
loBar = -1;
}
Else If 저[1,1] > LL then
{
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL_SetEnd(TL2,저[1,3],저[1,4],저[1,1]);
TL_SetBegin(TL21,저[1,3],저[1,4],저[1,1]*(1+Per1/100));
TL_SetBegin(TL22,저[1,3],저[1,4],저[1,1]*(1+Per2/100));
TL_SetBegin(TL23,저[1,3],저[1,4],저[1,1]*(1+Per3/100));
TL_SetBegin(TL24,저[1,3],저[1,4],저[1,1]*(1+Per4/100));
TL_SetBegin(TL25,저[1,3],저[1,4],저[1,1]*(1+Per5/100));
hiBar = -1;
loBar = -1;
}
최종꼭지점 = "저점";
}
TL_SetEnd(TL11,NextBarSdate,NextBarStime,고[1,1]*(1-Per1/100));
TL_SetEnd(TL12,NextBarSdate,NextBarStime,고[1,1]*(1-Per2/100));
TL_SetEnd(TL13,NextBarSdate,NextBarStime,고[1,1]*(1-Per3/100));
TL_SetEnd(TL14,NextBarSdate,NextBarStime,고[1,1]*(1-Per4/100));
TL_SetEnd(TL15,NextBarSdate,NextBarStime,고[1,1]*(1-Per5/100));
TL_SetEnd(TL21,NextBarSdate,NextBarStime,저[1,1]*(1+Per1/100));
TL_SetEnd(TL22,NextBarSdate,NextBarStime,저[1,1]*(1+Per2/100));
TL_SetEnd(TL23,NextBarSdate,NextBarStime,저[1,1]*(1+Per3/100));
TL_SetEnd(TL24,NextBarSdate,NextBarStime,저[1,1]*(1+Per4/100));
TL_SetEnd(TL25,NextBarSdate,NextBarStime,저[1,1]*(1+Per5/100));
즐거운 하루되세요
> 구호리 님이 쓴 글입니다.
> 제목 : 문의드립니다.
>
전환비율을 수정할 수 있도록 외부변수 수정부탁드립니다.(전환비율 5)
Input : length(10),Per1(1),Per2(2),Per3(3),Per4(4),Per5(5);
Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분("");
var : TL1(0),TL11(0),TL12(0),TL13(0),TL14(0),TL15(0);
var : TL2(0),TL21(0),TL22(0),TL23(0),TL24(0),TL25(0);
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
HH = H;
LL = L;
If Index == 0 Then
{
고[1,1] = HH;
저[1,1] = LL;
}
Condition1 = Highest(HH,length) == HH and 최종고가 <> HH;
Condition2 = Lowest (LL,length) == LL and 최종저가 <> LL;
처리구분 = "";
If Condition1 and Condition2 Then// 기간고점과 기간저점 동시 발생
{
If 최종꼭지점 == "저점" Then
{
If 저[1,1] > LL Then 처리구분 = "저점처리";
Else 처리구분 = "고점처리";
}
Else If 최종꼭지점 == "고점" Then
{
If 고[1,1] < HH Then 처리구분 = "고점처리";
Else 처리구분 = "저점처리";
}
}
Else If Condition1 Then 처리구분 = "고점처리";
Else If Condition2 Then 처리구분 = "저점처리";
If 처리구분 == "고점처리" Then
{
최종고가 = HH;// 신규고점을 체크하기 위해 저장
If 최종꼭지점 == "저점" Then
{
TL_SetEnd(TL11,저[1,3],저[1,4],고[1,1]*(1-Per1/100));
TL_SetEnd(TL12,저[1,3],저[1,4],고[1,1]*(1-Per2/100));
TL_SetEnd(TL13,저[1,3],저[1,4],고[1,1]*(1-Per3/100));
TL_SetEnd(TL14,저[1,3],저[1,4],고[1,1]*(1-Per4/100));
TL_SetEnd(TL15,저[1,3],저[1,4],고[1,1]*(1-Per5/100));
For j = 10 DownTo 2
{
For jj = 1 To 4
{
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
TL_SetColor(TL1,Red);
TL_SetSize(TL1,1);
#TL11 = TL_New(고[1,3],고[1,4],고[1,1]*(1-Per1/100),NextBarSdate,NextBarStime,고[1,1]*(1-Per1/100));
#TL12 = TL_New(고[1,3],고[1,4],고[1,1]*(1-Per2/100),NextBarSdate,NextBarStime,고[1,1]*(1-Per2/100));
#TL13 = TL_New(고[1,3],고[1,4],고[1,1]*(1-Per3/100),NextBarSdate,NextBarStime,고[1,1]*(1-Per3/100));
#TL14 = TL_New(고[1,3],고[1,4],고[1,1]*(1-Per4/100),NextBarSdate,NextBarStime,고[1,1]*(1-Per4/100));
#TL15 = TL_New(고[1,3],고[1,4],고[1,1]*(1-Per5/100),NextBarSdate,NextBarStime,고[1,1]*(1-Per5/100));
#TL_SetColor(TL11,Blue);
#TL_SetColor(TL12,Blue);
#TL_SetColor(TL13,Blue);
#TL_SetColor(TL14,Blue);
#TL_SetColor(TL15,Blue);
}
Else If 고[1,1] < HH Then// 1번 고점보다 높은 고가 출현
{
고[1,1] = HH;
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL_SetEnd(TL1,고[1,3],고[1,4],고[1,1]);
TL_SetBegin(TL11,고[1,3],고[1,4],고[1,1]*(1-Per1/100));
TL_SetBegin(TL12,고[1,3],고[1,4],고[1,1]*(1-Per2/100));
TL_SetBegin(TL13,고[1,3],고[1,4],고[1,1]*(1-Per3/100));
TL_SetBegin(TL14,고[1,3],고[1,4],고[1,1]*(1-Per4/100));
TL_SetBegin(TL15,고[1,3],고[1,4],고[1,1]*(1-Per5/100));
}
최종꼭지점 = "고점";
}
#==========================================#
If 처리구분 == "저점처리" Then
{
최종저가 = LL;
If 최종꼭지점 == "고점" then
{
TL_SetEnd(TL21,고[1,3],고[1,4],저[1,1]*(1+Per1/100));
TL_SetEnd(TL22,고[1,3],고[1,4],저[1,1]*(1+Per2/100));
TL_SetEnd(TL23,고[1,3],고[1,4],저[1,1]*(1+Per3/100));
TL_SetEnd(TL24,고[1,3],고[1,4],저[1,1]*(1+Per4/100));
TL_SetEnd(TL25,고[1,3],고[1,4],저[1,1]*(1+Per5/100));
For j = 10 DownTo 2
{
For jj = 1 To 4
{
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL2 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
TL_SetColor(TL2,Blue);
TL_SetSize(TL2,1);
TL21 = TL_New(저[1,3],저[1,4],저[1,1]*(1-Per1/100),NextBarSdate,NextBarStime,저[1,1]*(1+Per1/100));
TL22 = TL_New(저[1,3],저[1,4],저[1,1]*(1-Per2/100),NextBarSdate,NextBarStime,저[1,1]*(1+Per2/100));
TL23 = TL_New(저[1,3],저[1,4],저[1,1]*(1-Per3/100),NextBarSdate,NextBarStime,저[1,1]*(1+Per3/100));
TL24 = TL_New(저[1,3],저[1,4],저[1,1]*(1-Per4/100),NextBarSdate,NextBarStime,저[1,1]*(1+Per4/100));
TL25 = TL_New(저[1,3],저[1,4],저[1,1]*(1-Per5/100),NextBarSdate,NextBarStime,저[1,1]*(1+Per5/100));
TL_SetColor(TL21,Red);
TL_SetColor(TL22,Red);
TL_SetColor(TL23,Red);
TL_SetColor(TL24,Red);
TL_SetColor(TL25,Red);
}
Else If 저[1,1] > LL then
{
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL_SetEnd(TL2,저[1,3],저[1,4],저[1,1]);
TL_SetBegin(TL21,저[1,3],저[1,4],저[1,1]*(1+Per1/100));
TL_SetBegin(TL22,저[1,3],저[1,4],저[1,1]*(1+Per2/100));
TL_SetBegin(TL23,저[1,3],저[1,4],저[1,1]*(1+Per3/100));
TL_SetBegin(TL24,저[1,3],저[1,4],저[1,1]*(1+Per4/100));
TL_SetBegin(TL25,저[1,3],저[1,4],저[1,1]*(1+Per5/100));
}
최종꼭지점 = "저점";
}
TL_SetEnd(TL11,NextBarSdate,NextBarStime,고[1,1]*(1-Per1/100));
TL_SetEnd(TL12,NextBarSdate,NextBarStime,고[1,1]*(1-Per2/100));
TL_SetEnd(TL13,NextBarSdate,NextBarStime,고[1,1]*(1-Per3/100));
TL_SetEnd(TL14,NextBarSdate,NextBarStime,고[1,1]*(1-Per4/100));
TL_SetEnd(TL15,NextBarSdate,NextBarStime,고[1,1]*(1-Per5/100));
TL_SetEnd(TL21,NextBarSdate,NextBarStime,저[1,1]*(1+Per1/100));
TL_SetEnd(TL22,NextBarSdate,NextBarStime,저[1,1]*(1+Per2/100));
TL_SetEnd(TL23,NextBarSdate,NextBarStime,저[1,1]*(1+Per3/100));
TL_SetEnd(TL24,NextBarSdate,NextBarStime,저[1,1]*(1+Per4/100));
TL_SetEnd(TL25,NextBarSdate,NextBarStime,저[1,1]*(1+Per5/100));