예스스탁
예스스탁 답변
2022-11-23 15:20:34
안녕하세요
예스스탁입니다.
input:P1(5),P2(10),N(10);
Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""),
TL1(0),Text1(0),TL2(0),TL3(0),TL4(0),TL5(0),TL12(0),TL13(0),TL14(0),TL15(0),T(0);
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
var : TL24(0),TL25(0);
var : mav1(0),mav2(0);
#==========================================#
mav1 = ma(C,P1);
mav2 = ma(C,P2);
Plot1(mav1);
plot2(mav2);
HH = IFF(0==1,C,H);
LL = IFF(0==1,C,L);
If Index == 0 Then
{
고[1,1] = HH;
저[1,1] = LL;
}
Condition1 = CrossDown(mav1,mav2) and 최종고가 <> HH;
Condition2 = CrossUp(mav1,mav2) 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
{
T = 1;
최종고가 = HH; // 신규고점을 체크하기 위해 저장
If 최종꼭지점 == "저점" Then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
고[j,jj] = 고[j-1,jj];
}
}
고[1,1] = highest(H,N);
고[1,2] = Index;
고[1,3] = sDate;
고[1,4] = sTime;
TL1 = TL_New(저[1,3],저[1,4],저[1,1],고[1,3],고[1,4],고[1,1]);
If 1 == 1 Then
{
Text1 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2));
Text_SetStyle(Text1, 0, 1);
Text_SetColor(Text1,WHITE);
}
TL_SetSize(TL1,1);
TL_SetColor(TL1,WHITE);
}
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]);
// 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임
If 1 == 1 Then
{
Text_SetLocation(Text1,고[1,3],고[1,4],고[1,1]);
Text_SetString(Text1,NumToStr(고[1,1],2));
}
}
최종꼭지점 = "고점";
}
#==========================================#
If 처리구분 == "저점처리" Then
{
T = -1;
최종저가 = LL;
If 최종꼭지점 == "고점" then
{
For j = 10 DownTo 2
{
For jj = 1 To 4
{
저[j,jj] = 저[j-1,jj];
}
}
저[1,1] = Lowest(L,N);
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
If 1 == 1 Then
{
Text1 = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2));
Text_SetStyle(Text1, 0, 0);
Text_SetColor(Text1,WHITE);
}
TL_SetSize(TL1,1);
TL_SetColor(TL1,WHITE);
}
Else If 저[1,1] > LL then
{
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
If 1 == 1 Then
{
Text_SetLocation(Text1,저[1,3],저[1,4],저[1,1]);
Text_SetString(Text1,NumToStr(저[1,1],2));
}
}
최종꼭지점 = "저점";
}
if T == 1 and T[1] != T Then
{
TL2 = TL_New(고[2,3],고[2,4],고[2,1],NextBarSdate,NextBarStime,고[2,1]);
TL12 = TL_New(고[2,3],고[2,4],고[2,1],NextBarSdate,NextBarStime,고[2,1]);
TL_SetSize(TL2,3);
TL_SetColor(TL2,RED);
TL_SetSize(TL12,1);
TL_SetColor(TL12,RED);
if min(C,mav1,mav2) > 고[2,1] Then
{
TL_SetColor(TL2,pink);
TL_SetColor(TL12,pink);
}
TL_Delete(TL24);
TL_Delete(TL25);
TL24 = TL_New(저[1,3],저[1,4],저[1,1]+abs(고[2,1]-저[2,1]),sdate,stime,저[1,1]+abs(고[2,1]-저[2,1]));
TL25 = TL_New(저[1,3],저[1,4],저[1,1]+abs(고[3,1]-저[3,1]),sdate,stime,저[1,1]+abs(고[3,1]-저[3,1]));
TL_SetExtRight(TL24,true);
TL_SetExtRight(TL25,true);
TL_SetSize(TL24,0);
TL_SetStyle(TL24,3);
TL_SetColor(TL24,Red);
TL_SetSize(TL25,0);
TL_SetStyle(TL25,3);
TL_SetColor(TL25,Red);
}
Else
{
TL_SetEnd(TL2,sDate,sTime,고[2,1]);
TL_SetEnd(TL12,sDate,sTime,고[2,1]);
if min(C,mav1,mav2) > 고[2,1] Then
{
TL_SetColor(TL2,pink);
TL_SetColor(TL12,pink);
}
}
if T == -1 and T[1] != T Then
{
TL3 = TL_New(저[2,3],저[2,4],저[2,1],NextBarSdate,NextBarStime,저[2,1]);
TL13 = TL_New(저[2,3],저[2,4],저[2,1],NextBarSdate,NextBarStime,저[2,1]);
TL_SetSize(TL3,3);
TL_SetColor(TL3,RED);
TL_SetSize(TL13,1);
TL_SetColor(TL13,RED);
if max(c,mav1,mav2) < 저[2,1] Then
{
TL_SetColor(TL3,pink);
TL_SetColor(TL13,pink);
}
TL_Delete(TL24);
TL_Delete(TL25);
TL24 = TL_New(고[1,3],고[1,4],고[1,1]-abs(고[2,1]-저[2,1]),sdate,stime,고[1,1]-abs(고[2,1]-저[2,1]));
TL25 = TL_New(고[1,3],고[1,4],고[1,1]-abs(고[3,1]-저[3,1]),sdate,stime,고[1,1]-abs(고[3,1]-저[3,1]));
TL_SetExtRight(TL24,true);
TL_SetExtRight(TL25,true);
TL_SetSize(TL24,0);
TL_SetStyle(TL24,3);
TL_SetColor(TL24,blue);
TL_SetSize(TL25,0);
TL_SetStyle(TL25,3);
TL_SetColor(TL25,blue);
}
Else
{
TL_SetEnd(TL3,sDate,sTime,저[2,1]);
TL_SetEnd(TL13,sDate,sTime,저[2,1]);
if max(c,mav1,mav2) < 저[2,1] Then
{
TL_SetColor(TL3,Brown);
TL_SetColor(TL13,Brown);
}
}
즐거운 하루되세요
> 하늘거지 님이 쓴 글입니다.
> 제목 : 수정 부탁합니다
> 오픈소스 활용해 보려합니다^^
파동의 정의를 바꿔보고 싶습니다
5일선과 10일선이 역배열 되는 시점에서 최근10봉(외부변수)중 최고점을 최종고가로
5일선과10일선이 정배열 되는 시점에서 최근10봉중 최저점을 최종저가로
수정 부탁합니다
그리고
(종가 and 5일선and 10일선)이 최근최종고가를 돌파하면
돌파된 최종고가선을 핑크색 선으로 바꾸고 변수로 지정해주세요
(종가and 5일선and 10일선)이 최근최종저가를 붕괴하면
붕괴된 최종저가선을 브라운색선으로 바꾸고 변수로지정해주세요
감사합니다!
input:length(6);
Var:j(0),jj(0),HH(0),LL(0),최종고가(0),최종저가(0),최종꼭지점(""),처리구분(""),
TL1(0),Text1(0),TL2(0),TL3(0),TL4(0),TL5(0),TL12(0),TL13(0),TL14(0),TL15(0),T(0);
Array:고[10,4](0),저[10,4](0); // 1:가격,2:Index,3:sDate,4:sTime
var : TL24(0),TL25(0);
#==========================================#
HH = IFF(0==1,C,H);
LL = IFF(0==1,C,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
{
T = 1;
최종고가 = HH; // 신규고점을 체크하기 위해 저장
If 최종꼭지점 == "저점" Then
{
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]);
If 1 == 1 Then
{
Text1 = Text_New(고[1,3],고[1,4],고[1,1],NumToStr(고[1,1],2));
Text_SetStyle(Text1, 0, 1);
Text_SetColor(Text1,WHITE);
}
TL_SetSize(TL1,1);
TL_SetColor(TL1,WHITE);
}
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]);
// 시작점은 변동없고 끝점의 위치가 현재 봉으로 연장된 것임
If 1 == 1 Then
{
Text_SetLocation(Text1,고[1,3],고[1,4],고[1,1]);
Text_SetString(Text1,NumToStr(고[1,1],2));
}
}
최종꼭지점 = "고점";
}
#==========================================#
If 처리구분 == "저점처리" Then
{
T = -1;
최종저가 = LL;
If 최종꼭지점 == "고점" then
{
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;
TL1 = TL_New(고[1,3],고[1,4],고[1,1],저[1,3],저[1,4],저[1,1]);
If 1 == 1 Then
{
Text1 = Text_New(저[1,3],저[1,4],저[1,1],NumToStr(저[1,1],2));
Text_SetStyle(Text1, 0, 0);
Text_SetColor(Text1,WHITE);
}
TL_SetSize(TL1,1);
TL_SetColor(TL1,WHITE);
}
Else If 저[1,1] > LL then
{
저[1,1] = LL;
저[1,2] = Index;
저[1,3] = sDate;
저[1,4] = sTime;
TL_SetEnd(TL1,저[1,3],저[1,4],저[1,1]);
If 1 == 1 Then
{
Text_SetLocation(Text1,저[1,3],저[1,4],저[1,1]);
Text_SetString(Text1,NumToStr(저[1,1],2));
}
}
최종꼭지점 = "저점";
}
if T == -1 and T[1] != -1 Then
{
TL2 = TL_New(고[2,3],고[2,4],고[2,1],sdate,stime,고[2,1]);
TL_Delete(TL3);
TL3 = TL_New(고[1,3],고[1,4],고[1,1],sdate,stime,고[1,1]);
TL_SetExtRight(TL3,true);
TL_SetSize(TL2,3);
TL_SetColor(TL2,RED);
TL_SetSize(TL3,3);
TL_SetColor(TL3,RED);
TL12 = TL_New(고[2,3],고[2,4],고[2,1],sdate,stime,고[2,1]);
TL_Delete(TL13);
TL13 = TL_New(고[1,3],고[1,4],고[1,1],sdate,stime,고[1,1]);
TL_SetExtRight(TL13,true);
TL_SetSize(TL12,1);
TL_SetColor(TL12,RED);
TL_SetSize(TL13,1);
TL_SetColor(TL13,RED);
TL_Delete(TL24);
TL_Delete(TL25);
TL24 = TL_New(고[1,3],고[1,4],고[1,1]-abs(고[2,1]-저[2,1]),sdate,stime,고[1,1]-abs(고[2,1]-저[2,1]));
TL25 = TL_New(고[1,3],고[1,4],고[1,1]-abs(고[3,1]-저[3,1]),sdate,stime,고[1,1]-abs(고[3,1]-저[3,1]));
TL_SetExtRight(TL24,true);
TL_SetExtRight(TL25,true);
TL_SetSize(TL24,0);
TL_SetStyle(TL24,3);
TL_SetColor(TL24,blue);
TL_SetSize(TL25,0);
TL_SetStyle(TL25,3);
TL_SetColor(TL25,blue);
}
if T == 1 and T[1] != 1 Then
{
TL4= TL_New(저[2,3],저[2,4],저[2,1],sdate,stime,저[2,1]);
TL_Delete(TL5);
TL5= TL_New(저[1,3],저[1,4],저[1,1],sdate,stime,저[1,1]);
TL_SetExtRight(TL5,true);
TL_SetSize(TL4,3);
TL_SetColor(TL4,blue);
TL_SetSize(TL5,3);
TL_SetColor(TL5,blue);
TL14= TL_New(저[2,3],저[2,4],저[2,1],sdate,stime,저[2,1]);
TL_Delete(TL15);
TL15= TL_New(저[1,3],저[1,4],저[1,1],sdate,stime,저[1,1]);
TL_SetExtRight(TL15,true);
TL_SetSize(TL14,1);
TL_SetColor(TL14,blue);
TL_SetSize(TL15,1);
TL_SetColor(TL15,blue);
TL_Delete(TL24);
TL_Delete(TL25);
TL24 = TL_New(저[1,3],저[1,4],저[1,1]+abs(고[2,1]-저[2,1]),sdate,stime,저[1,1]+abs(고[2,1]-저[2,1]));
TL25 = TL_New(저[1,3],저[1,4],저[1,1]+abs(고[3,1]-저[3,1]),sdate,stime,저[1,1]+abs(고[3,1]-저[3,1]));
TL_SetExtRight(TL24,true);
TL_SetExtRight(TL25,true);
TL_SetSize(TL24,0);
TL_SetStyle(TL24,3);
TL_SetColor(TL24,Red);
TL_SetSize(TL25,0);
TL_SetStyle(TL25,3);
TL_SetColor(TL25,Red);
}