커뮤니티
시스템 재질문입니다.
2013-04-24 19:29:28
321
글번호 62466
29988번에 답변해주신 추세돌파시스템은 하이투자증권에선 제대로 작동합니다만..
그림을 순서대로
그림1
하이투자증권에서는 시스템에서 true false가 세팅화면에서 제대로 보여집니다만.
작동도 제대로 하고
그림2
우리트레이더에서는 시스템에서 0 0 0 이런식으로 input이 나옵니다.
그림3
그래서 단기에다 1을 넣고 실행하면 저렇게 논리값 에러화면이 뜨고 실행이 안됩니다.
그림4
그런데 우리트레이더에서 자동추세선 지표식세팅화면을 불러오면 저렇게 true false가 제대로 뜨는데 시스템에선 0 0 0 0으로 우리트레이더에서 뜨고 논리에러가 뜨는지
우리트레이더에서 쓸수 있는 방법을 좀 부탁드리구 싶습니다.
- 1. 2추세돌파1.JPG (0.10 MB)
- 2. 2추세돌파2.JPG (0.10 MB)
- 3. 2추세돌파3.JPG (0.06 MB)
- 4. 2추세돌파4.JPG (0.03 MB)
답변 1
예스스탁 예스스탁 답변
2013-04-24 20:07:04
안녕하세요
예스스탁입니다.
시뮬레이션 차트에서는
시스템식의 경우 변수최적화라는 기능이 있어
숫자변수로만 된 외부변수를 사용하셔야 합니다.
실시간 차트이거나 시뮬레이션차트에서도 시스템식이 아닌경우에는
true나 false가 관계없지만 시뮬레이션 차트에서는 시스템식의 경우
모두 0으로만 나오게 됩니다.
이는 예스트레이더 우리트레이더 공통사항입니다.
외부변수중 단기, 중기, 장기는 단기,중기,장기별로 지표를 그릴것인지
여부를 선택하는 외부변수이므로 시스템식에서는 필요가 없는 변수입니다.
시스템식에서 제외했습니다.
다만 미완성사용은 필요하므로 해당 변수를 숫자형으로
변경했습니다. 미완성사용이 true이면 1값을 false이면 0값을 입력하시면 됩니다.
Input:n(5),미완성사용(1);
Var:j(0),q(0),k(0),상단(200),하단(100),고점표시(0),저점표시(0),Exit(100),
고점갱신(False),저점갱신(False),중기고점갱신(False),중기저점갱신(False),
중기추세갱신(0),장기추세갱신(0),
단기상단기울기(0),단기상단Bar(0),단기상단절편(0),단기하단기울기(0),
단기하단Bar(0),단기하단절편(0),
중기상단기울기(0),중기상단Bar(0),중기상단절편(0),중기하단기울기(0),
중기하단Bar(0),중기하단절편(0),
장기상단기울기(0),장기상단Bar(0),장기상단절편(0),장기하단기울기(0),
장기하단Bar(0),장기하단절편(0),
단기상단채널(0),단기하단채널(0),중기상단채널(0),중기하단채널(0),
장기상단채널(0),장기하단채널(0);
Array:고[50](0),저[50](0),고Bar[50](0),저Bar[50](0),
중기고[20](0),중기저[20](0),중기고Bar[20](0),중기저Bar[20](0),
장기고[20](0),장기저[20](0),장기고Bar[20](0),장기저Bar[20](0);
#==========================================#
# 초기처리 (Initialize Routine)
#==========================================#
for j = 1 to 19 {
고Bar[j] = 고Bar[j] + 1;
저Bar[j] = 저Bar[j] + 1;
중기고Bar[j] = 중기고Bar[j] + 1;
중기저Bar[j] = 중기저Bar[j] + 1;
장기고Bar[j] = 장기고Bar[j] + 1;
장기저Bar[j] = 장기저Bar[j] + 1;
}
for j = 20 to 49 {
고Bar[j] = 고Bar[j] + 1;
저Bar[j] = 저Bar[j] + 1;
}
단기상단Bar = 단기상단Bar + 1;
단기하단Bar = 단기하단Bar + 1;
중기상단Bar = 중기상단Bar + 1;
중기하단Bar = 중기하단Bar + 1;
장기상단Bar = 장기상단Bar + 1;
장기하단Bar = 장기하단Bar + 1;
고점표시=(O[n]+C[n])/2;
저점표시=(O[n]+C[n])/2;
#==========================================#
# 단기 파동선 계산
#==========================================#
# 전고점(Peak) 계산
#------------------------------------------#
//Highest(H,2)[3] <= H[2] and H[2] > Highest(H,2)
if Highest(H,n)[n+1] <= H[n] and H[n] > Highest(H,n) then {
if 미완성사용 == 1 then {
for j = 48 downto 1 {
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
}
고[1] = H[n];
고Bar[1] = n;
고점갱신 = True;
고점표시 = 고[1]*1.005;
if 저Bar[1] > 고Bar[2] then {
for j = 48 downto 1 {
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
k = n + 1;
for j = n + 2 to 고Bar[2]-1 {
if L[k] > L[j] then k = j;
}
저[1] = L[k];
저Bar[1] = k;
}
}
if 미완성사용 == 0 then {
if 고Bar[1] > 저Bar[1] then {
for j = 48 downto 1 {
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
}
}
if 고Bar[1] > 저Bar[1] or 고[1] <= H[n] then {
고[1] = H[n];
고Bar[1] = n;
고점갱신 = True;
고점표시 = 고[1]*1.005;
}
}
}
#------------------------------------------#
# 전저점(Trough) 계산
#------------------------------------------#
//Lowest(L,2)[3] >= L[2] and L[2] < Lowest(L,2)
if Lowest(L,n)[n+1] >= L[n] and L[n] < Lowest(L,n) then {
if 미완성사용 == 1 then {
for j = 48 downto 1 {
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
저[1] = L[n];
저Bar[1] = n;
저점갱신 = True;
저점표시 = 저[1]*0.995;
if 고Bar[1] > 저Bar[2] then {
for j = 48 downto 1 {
고[j+1] = 고[j];
고Bar[j+1] = 고Bar[j];
}
k = n + 1;
for j = n + 2 to 저Bar[2]-1 {
if H[k] < H[j] then k = j;
}
고[1] = H[k];
고Bar[1] = k;
}
}
if 미완성사용 == 0 then {
if 저Bar[1] > 고Bar[1] then {
for j = 48 downto 1 {
저[j+1] = 저[j];
저Bar[j+1] = 저Bar[j];
}
}
if 저Bar[1] > 고Bar[1] or 저[1] >= L[n] then {
저[1] = L[n];
저Bar[1] = n;
저점갱신 = True;
저점표시 = 저[1]*0.995;
}
}
}
#==========================================#
# 중기 파동선 계산
#==========================================#
# 중기고점 계산
#------------------------------------------#
//단기 고점이 발생한 다음 꼭지점을 찾아 중기고점으로 설정
if 고점갱신 == True and 고[3] < 고[2] and 고[2] > 고[1] then { //↗↘
if 미완성사용 == 1 then {
for j = 18 downto 1 {
중기고[j+1] = 중기고[j];
중기고Bar[j+1] = 중기고Bar[j];
}
중기고[1] = 고[2];
중기고Bar[1] = 고Bar[2];
중기고점갱신 = True;
if 중기저Bar[1] > 중기고Bar[2] then {
for j = 18 downto 1 {
중기저[j+1] = 중기저[j];
중기저Bar[j+1] = 중기저Bar[j];
}
k = 2;
for j = 3 to 19 {
if 중기고Bar[2] > 저Bar[j] and
저[k] > 저[j] then {
k = j;
}
}
중기저[1] = 저[k];
중기저Bar[1] = 저Bar[k];
}
}
if 미완성사용 == 0 then {
if 중기고Bar[1] > 중기저Bar[1] then {
for j = 18 downto 1 {
중기고[j+1] = 중기고[j];
중기고Bar[j+1] = 중기고Bar[j];
}
}
if 중기고Bar[1] > 중기저Bar[1] or 중기고[1] <= 고[2] then {
중기고[1] = 고[2];
중기고Bar[1] = 고Bar[2];
중기고점갱신 = True;
}
}
고점갱신 = False;
중기추세갱신 = 상단;
}
#------------------------------------------#
# 중기저점 계산
#------------------------------------------#
//단기 저점이 발생한 다음 꼭지점을 찾아 중기저점으로 설정
if 저점갱신 == True and 저[3] > 저[2] and 저[2] < 저[1] then {
if 미완성사용 == 1 then {
for j = 18 downto 1 {
중기저[j+1] = 중기저[j];
중기저Bar[j+1] = 중기저Bar[j];
}
중기저[1] = 저[2];
중기저Bar[1] = 저Bar[2];
중기저점갱신 = True;
if 중기고Bar[1] > 중기저Bar[2] then {
for j = 18 downto 1 {
중기고[j+1] = 중기고[j];
중기고Bar[j+1] = 중기고Bar[j];
}
k = 2;
for j = 3 to 19 {
if 중기저Bar[2] > 고Bar[j] and
고[k] < 고[j] then {
k = j;
}
}
중기고[1] = 고[k];
중기고Bar[1] = 고Bar[k];
}
}
if 미완성사용 == 0 then {
if 중기저Bar[1] > 중기고Bar[1] then {
for j = 18 downto 1 {
중기저[j+1] = 중기저[j];
중기저Bar[j+1] = 중기저Bar[j];
}
}
if 중기저Bar[1] > 중기고Bar[1] or 중기저[1] >= 저[2] then {
중기저[1] = 저[2];
중기저Bar[1] = 저Bar[2];
중기저점갱신 = True;
}
}
저점갱신 = False;
중기추세갱신 = 하단;
}
#==========================================#
# 장기 파동선 계산
#==========================================#
# 장기고점 계산
#------------------------------------------#
//중기 고점이 발생한 다음 꼭지점을 찾아 장기고점으로 설정
if 중기고점갱신 == True and 중기고[3] < 중기고[2] and
중기고[2] > 중기고[1] then {
if 미완성사용 == 1 then {
for j = 18 downto 1 {
장기고[j+1] = 장기고[j];
장기고Bar[j+1] = 장기고Bar[j];
}
장기고[1] = 중기고[2];
장기고Bar[1] = 중기고Bar[2];
if 장기저Bar[1] > 장기고Bar[2] then {
for j = 18 downto 1 {
장기저[j+1] = 장기저[j];
장기저Bar[j+1] = 장기저Bar[j];
}
k = 2;
for j = 3 to 19 {
if 장기고Bar[2] > 중기저Bar[j] and
중기저[k] > 중기저[j] then {
k = j;
}
}
장기저[1] = 중기저[k];
장기저Bar[1] = 중기저Bar[k];
}
}
if 미완성사용 == 0 then {
if 장기고Bar[1] > 장기저Bar[1] then {
for j = 18 downto 1 {
장기고[j+1] = 장기고[j];
장기고Bar[j+1] = 장기고Bar[j];
}
}
if 장기고Bar[1] > 장기저Bar[1] or 장기고[1] <= 중기고[2] then {
장기고[1] = 중기고[2];
장기고Bar[1] = 중기고Bar[2];
}
}
중기고점갱신 = False;
장기추세갱신 = 상단;
}
#------------------------------------------#
# 장기저점 계산
#------------------------------------------#
//중기 저점이 발생한 다음 꼭지점을 찾아 장기저점으로 설정
if 중기저점갱신 == True and 중기저[3] > 중기저[2] and
중기저[2] < 중기저[1] then {
if 미완성사용 == 1 then {
for j = 18 downto 1 {
장기저[j+1] = 장기저[j];
장기저Bar[j+1] = 장기저Bar[j];
}
장기저[1] = 중기저[2];
장기저Bar[1] = 중기저Bar[2];
if 장기고Bar[1] > 장기저Bar[2] then {
for j = 18 downto 1 {
장기고[j+1] = 장기고[j];
장기고Bar[j+1] = 장기고Bar[j];
}
k = 2;
for j = 3 to 19 {
if 장기저Bar[2] > 중기고Bar[j] and
중기고[k] < 중기고[j] then {
k = j;
}
}
장기고[1] = 중기고[k];
장기고Bar[1] = 중기고Bar[k];
}
}
if 미완성사용 == 0 then {
if 장기저Bar[1] > 장기고Bar[1] then {
for j = 18 downto 1 {
장기저[j+1] = 장기저[j];
장기저Bar[j+1] = 장기저Bar[j];
}
}
if 장기저Bar[1] > 장기고Bar[1] or 장기저[1] >= 중기저[2] then {
장기저[1] = 중기저[2];
장기저Bar[1] = 중기저Bar[2];
}
}
중기저점갱신 = False;
장기추세갱신 = 하단;
}
#==========================================#
# 자동추세선 계산
#==========================================#
if 고Bar[1] == n then {
단기상단채널 = 0;
단기상단기울기 = 0;
for j = 2 to 49 {
if 고[1] < 고[j] and 단기상단기울기 == 0 then {
단기상단기울기 =((고[1]-고[j])/(고Bar[j]-고Bar[1]));
단기상단Bar = 고Bar[j];
단기상단절편 = 고[j];
j = Exit;
}
else if 고[j] <= 0 then j = Exit;
}
}
if 저Bar[1] == n then {
단기하단채널 = 0;
단기하단기울기 = 0;
for j = 2 to 49 {
if 저[1] > 저[j] and 단기하단기울기 == 0 then {
단기하단기울기 = ((저[1]-저[j])/(저Bar[j]-저Bar[1]));
단기하단Bar = 저Bar[j];
단기하단절편 = 저[j];
j = Exit;
}
else if 저[j] <= 0 then j = Exit;
}
}
if 중기추세갱신 == 상단 then {
중기상단채널 = 0;
중기상단기울기 = 0;
for j = 2 to 19 {
if 중기고[1] < 중기고[j] and 중기상단기울기 == 0 then {
중기상단기울기 =
((중기고[1]-중기고[j])/(중기고Bar[j]-중기고Bar[1]));
중기상단Bar = 중기고Bar[j];
중기상단절편 = 중기고[j];
j = Exit;
}
else if 중기고[j] <= 0 then j = Exit;
}
중기추세갱신 = 0;
}
if 중기추세갱신 == 하단 then {
중기하단채널 = 0;
중기하단기울기 = 0;
for j = 2 to 19 {
if 중기저[1] > 중기저[j] and 중기하단기울기 == 0 then {
중기하단기울기 =
((중기저[1]-중기저[j])/(중기저Bar[j]-중기저Bar[1]));
중기하단Bar = 중기저Bar[j];
중기하단절편 = 중기저[j];
j = Exit;
}
else if 중기저[j] <= 0 then j = Exit;
}
중기추세갱신 = 0;
}
if 장기추세갱신 == 상단 then {
장기상단채널 = 0;
장기상단기울기 = 0;
for j = 2 to 19 {
if 장기고[1] < 장기고[j] and 장기상단기울기 == 0 then {
장기상단기울기 =
((장기고[1]-장기고[j])/(장기고Bar[j]-장기고Bar[1]));
장기상단Bar = 장기고Bar[j];
장기상단절편 = 장기고[j];
j = Exit;
}
else if 장기고[j] <= 0 then j = Exit;
}
장기추세갱신 = 0;
}
if 장기추세갱신 == 하단 then {
장기하단채널 = 0;
장기하단기울기 = 0;
for j = 2 to 19 {
if 장기저[1] > 장기저[j] and 장기하단기울기 == 0 then {
장기하단기울기 =
((장기저[1]-장기저[j])/(장기저Bar[j]-장기저Bar[1]));
장기하단Bar = 장기저Bar[j];
장기하단절편 = 장기저[j];
j = Exit;
}
else if 장기저[j] <= 0 then j = Exit;
}
장기추세갱신 = 0;
}
if 단기상단기울기 < 0 then
단기상단채널 = 단기상단기울기 * 단기상단Bar + 단기상단절편;
if 단기하단기울기 > 0 then
단기하단채널 = 단기하단기울기 * 단기하단Bar + 단기하단절편;
if 중기상단기울기 < 0 then
중기상단채널 = 중기상단기울기 * 중기상단Bar + 중기상단절편;
if 중기하단기울기 > 0 then
중기하단채널 = 중기하단기울기 * 중기하단Bar + 중기하단절편;
if 장기상단기울기 < 0 then
장기상단채널 = 장기상단기울기 * 장기상단Bar + 장기상단절편;
if 장기하단기울기 > 0 then
장기하단채널 = 장기하단기울기 * 장기하단Bar + 장기하단절편;
if crossup(c,단기상단채널) Then
buy();
if CrossDown(c,단기하단채널) Then
exitlong();
즐거운 하루되세요
> 비엔에프 님이 쓴 글입니다.
> 제목 : 시스템 재질문입니다.
> 29988번에 답변해주신 추세돌파시스템은 하이투자증권에선 제대로 작동합니다만..
그림을 순서대로
그림1
하이투자증권에서는 시스템에서 true false가 세팅화면에서 제대로 보여집니다만.
작동도 제대로 하고
그림2
우리트레이더에서는 시스템에서 0 0 0 이런식으로 input이 나옵니다.
그림3
그래서 단기에다 1을 넣고 실행하면 저렇게 논리값 에러화면이 뜨고 실행이 안됩니다.
그림4
그런데 우리트레이더에서 자동추세선 지표식세팅화면을 불러오면 저렇게 true false가 제대로 뜨는데 시스템에선 0 0 0 0으로 우리트레이더에서 뜨고 논리에러가 뜨는지
우리트레이더에서 쓸수 있는 방법을 좀 부탁드리구 싶습니다.