커뮤니티
시스템 오류수정 부탁합니다.
2019-06-29 12:44:29
173
글번호 129867
아래 시스템식 오류수정 부탁합니다.
Input:주가파동기간(7),지표파동기간(10),유효기간(40);
Var:j(0),k(0),value(0),n1(0),n2(0),추세선(0),다이버전스(0),다이버전스Bar(0),
상승(100),하락(-100);
Array:고[10](0),저[10](0),고Bar[10](0),저Bar[10](0),
지표고[10](0),지표저[10](0),지표고Bar[10](0),지표저Bar[10](0);
#=========================================================#
# 초기처리 (Initialize Routine)
#=========================================================#
n1 = 주가파동기간;
n2 = 지표파동기간;
value = ema(MACD(12, 26),9);
//value = stochasticsD(12,5,5);
for j = 1 to 9 {
고Bar[j] = 고Bar[j] + 1;
저Bar[j] = 저Bar[j] + 1;
지표고Bar[j] = 지표고Bar[j] + 1;
지표저Bar[j] = 지표저Bar[j] + 1;
}
다이버전스Bar = 다이버전스Bar + 1;
#=========================================================#
# 주가 Swing 계산
#=========================================================#
#---------------------------------------------------------#
# 전고점(Peak) 계산
#---------------------------------------------------------#
if Highest(H,n1)[n1+1] <= H[n1] and H[n1] > Highest(H,n1) then {
for j = 8 downto 1 {
고[j+1]= 고[j];
고Bar[j+1] = 고Bar[j];
}
고[1]= H[n1];
고Bar[1] = n1;
if 저Bar[1] > 고Bar[2] then {
for j = 8 downto 1 {
저[j+1]= 저[j];
저Bar[j+1] = 저Bar[j];
}
k = n1 + 1;
for j = n1 + 2 to 고Bar[2]-1 {
if L[k] > L[j] then k = j;
}
저[1]= L[k];
저Bar[1] = k;
}
}
#---------------------------------------------------------#
# 전저점(Trough) 계산
#---------------------------------------------------------#
if Lowest(L,n1)[n1+1] >= L[n1] and L[n1] < Lowest(L,n1) then {
for j = 8 downto 1 {
저[j+1]= 저[j];
저Bar[j+1] = 저Bar[j];
}
저[1]= L[n1];
저Bar[1] = n1;
if 고Bar[1] > 저Bar[2] then {
for j = 8 downto 1 {
고[j+1]= 고[j];
고Bar[j+1] = 고Bar[j];
}
k = n1 + 1;
for j = n1 + 2 to 저Bar[2]-1 {
if H[k] < H[j] then k = j;
}
고[1]= H[k];
고Bar[1] = k;
}
}
#=========================================================#
# 지표식 Swing 계산
#=========================================================#
#---------------------------------------------------------#
# 전고점(Peak) 계산
#---------------------------------------------------------#
if Highest(value,n2)[n2+1] <= value[n2] and
value[n2] > Highest(value,n2) then {
for j = 8 downto 1 {//배열값을 순차적으로 바꿔준다
지표고[j+1]= 지표고[j];
지표고Bar[j+1] = 지표고Bar[j];
}
k = n2 + 1;
for j = n2 + 2 to 지표고Bar[2]-1 {
if value[k] > value[j] then k = j;
}
지표저[1]= value[k];
지표저Bar[1] = k;
}
}
#---------------------------------------------------------#
# 전저점(Trough) 계산
#---------------------------------------------------------#
if Lowest(value,n2)[n2+1] >= value[n2] and
value[n2] < Lowest(value,n2) then {
for j = 8 downto 1 {
지표저[j+1]= 지표저[j];
지표저Bar[j+1] = 지표저Bar[j];
}
지표저[1]= value[n2];
지표저Bar[1] = n2;
if 지표고Bar[1] > 지표저Bar[2] then {
for j = 8 downto 1 {
지표고[j+1]= 지표고[j];
지표고Bar[j+1] = 지표고Bar[j];
}
k = n2 + 1;
for j = n2 + 2 to 지표저Bar[2]-1 {
if value[k] < value[j] then k = j;
}
지표고[1]= value[k];
지표고Bar[1] = k;
}
}
#=========================================================#
# 다이버전스 계산
#=========================================================#
if 고Bar[1] == n1 or 지표고Bar[1] == n2 or
저Bar[1] == n1 or 지표저Bar[1] == n2 then {
if 고[2] < 고[1] and 지표고[2] > 지표고[1] then {
다이버전스= 하락;
다이버전스Bar = 0;
}
else if 저[2] > 저[1] and 지표저[2] < 지표저[1] then {
다이버전스= 상승;
다이버전스Bar = 0;
}
}
if 다이버전스Bar > 유효기간 then 다이버전스 = 0;
#=========================================================#
# 추세선 계산
#=========================================================#
if 다이버전스 == 상승 then {
추세선 = (고[1]-고[2])/(고Bar[2]-고Bar[1]) * 고Bar[2] + 고[2];
}
if 다이버전스 == 하락 then {
추세선 = (저[1]-저[2])/(저Bar[2]-저Bar[1]) * 저Bar[2] + 저[2];
}
if 다이버전스 == 0 then {
추세선 = 0;
}
#=========================================================#
# 시스템 식
#=========================================================#
if 다이버전스 == 상승 and C > ma(C,20) and CrossUp(C,추세선) then
Buy();
if 다이버전스 == 하락 and C < ma(C,20) and CrossDown(C,추세선) then
Sell();
답변 1
예스스탁 예스스탁 답변
2019-07-01 10:43:31
안녕하세요
예스스탁입니다.
Input:주가파동기간(7),지표파동기간(10),유효기간(40);
Var:j(0),k(0),value(0),n1(0),n2(0),추세선(0),다이버전스(0),다이버전스Bar(0),
상승(100),하락(-100);
array:고[10](0),저[10](0),고Bar[10](0),저Bar[10](0),
지표고[10](0),지표저[10](0),지표고Bar[10](0),지표저Bar[10](0);
#=========================================================#
# 초기처리 (Initialize Routine)
#=========================================================#
n1 = 주가파동기간;
n2 = 지표파동기간;
value = ema(MACD(12, 26),9);
//value = stochasticsD(12,5,5);
for j = 1 to 9
{
고Bar[j] = 고Bar[j] + 1;
저Bar[j] = 저Bar[j] + 1;
지표고Bar[j] = 지표고Bar[j] + 1;
지표저Bar[j] = 지표저Bar[j] + 1;
}
다이버전스Bar = 다이버전스Bar + 1;
#=========================================================#
# 주가 Swing 계산
#=========================================================#
#---------------------------------------------------------#
# 전고점(Peak) 계산
#---------------------------------------------------------#
if Highest(H,n1)[n1+1] <= H[n1] and H[n1] > Highest(H,n1) then
{
for j = 8 downto 1
{
고[j+1]= 고[j];
고Bar[j+1] = 고Bar[j];
}
고[1]= H[n1];
고Bar[1] = n1;
if 저Bar[1] > 고Bar[2] then
{
for j = 8 downto 1
{
저[j+1]= 저[j];
저Bar[j+1] = 저Bar[j];
}
k = n1 + 1;
for j = n1 + 2 to 고Bar[2]-1
{
if L[k] > L[j] then k = j;
}
저[1]= L[k];
저Bar[1] = k;
}
}
#---------------------------------------------------------#
# 전저점(Trough) 계산
#---------------------------------------------------------#
if Lowest(L,n1)[n1+1] >= L[n1] and L[n1] < Lowest(L,n1) then
{
for j = 8 downto 1
{
저[j+1]= 저[j];
저Bar[j+1] = 저Bar[j];
}
저[1]= L[n1];
저Bar[1] = n1;
if 고Bar[1] > 저Bar[2] then
{
for j = 8 downto 1
{
고[j+1]= 고[j];
고Bar[j+1] = 고Bar[j];
}
k = n1 + 1;
for j = n1 + 2 to 저Bar[2]-1
{
if H[k] < H[j] then k = j;
}
고[1]= H[k];
고Bar[1] = k;
}
}
#=========================================================#
# 지표식 Swing 계산
#=========================================================#
#---------------------------------------------------------#
# 전고점(Peak) 계산
#---------------------------------------------------------#
if Highest(value,n2)[n2+1] <= value[n2] and
value[n2] > Highest(value,n2) then
{
for j = 8 downto 1 {//배열값을 순차적으로 바꿔준다
지표고[j+1]= 지표고[j];
지표고Bar[j+1] = 지표고Bar[j];
}
k = n2 + 1;
for j = n2 + 2 to 지표고Bar[2]-1
{
if value[k] > value[j] then k = j;
}
지표저[1]= value[k];
지표저Bar[1] = k;
}
#---------------------------------------------------------#
# 전저점(Trough) 계산
#---------------------------------------------------------#
if Lowest(value,n2)[n2+1] >= value[n2] and
value[n2] < Lowest(value,n2) then
{
for j = 8 downto 1
{
지표저[j+1]= 지표저[j];
지표저Bar[j+1] = 지표저Bar[j];
}
지표저[1]= value[n2];
지표저Bar[1] = n2;
if 지표고Bar[1] > 지표저Bar[2] then
{
for j = 8 downto 1
{
지표고[j+1]= 지표고[j];
지표고Bar[j+1] = 지표고Bar[j];
}
k = n2 + 1;
for j = n2 + 2 to 지표저Bar[2]-1
{
if value[k] < value[j] then k = j;
}
지표고[1]= value[k];
지표고Bar[1] = k;
}
}
#=========================================================#
# 다이버전스 계산
#=========================================================#
if 고Bar[1] == n1 or 지표고Bar[1] == n2 or
저Bar[1] == n1 or 지표저Bar[1] == n2 then
{
if 고[2] < 고[1] and 지표고[2] > 지표고[1] then
{
다이버전스= 하락;
다이버전스Bar = 0;
}
else if 저[2] > 저[1] and 지표저[2] < 지표저[1] then
{
다이버전스= 상승;
다이버전스Bar = 0;
}
}
if 다이버전스Bar > 유효기간 then 다이버전스 = 0;
#=========================================================#
# 추세선 계산
#=========================================================#
if 다이버전스 == 상승 then
{
추세선 = (고[1]-고[2])/(고Bar[2]-고Bar[1]) * 고Bar[2] + 고[2];
}
if 다이버전스 == 하락 then
{
추세선 = (저[1]-저[2])/(저Bar[2]-저Bar[1]) * 저Bar[2] + 저[2];
}
if 다이버전스 == 0 then
{
추세선 = 0;
}
#=========================================================#
# 시스템 식
#=========================================================#
if 다이버전스 == 상승 and C > ma(C,20) and CrossUp(C,추세선) then
Buy();
if 다이버전스 == 하락 and C < ma(C,20) and CrossDown(C,추세선) then
Sell();
즐거운 하루되세요
> 이대표 님이 쓴 글입니다.
> 제목 : 시스템 오류수정 부탁합니다.
> 아래 시스템식 오류수정 부탁합니다.
Input:주가파동기간(7),지표파동기간(10),유효기간(40);
Var:j(0),k(0),value(0),n1(0),n2(0),추세선(0),다이버전스(0),다이버전스Bar(0),
상승(100),하락(-100);
Array:고[10](0),저[10](0),고Bar[10](0),저Bar[10](0),
지표고[10](0),지표저[10](0),지표고Bar[10](0),지표저Bar[10](0);
#=========================================================#
# 초기처리 (Initialize Routine)
#=========================================================#
n1 = 주가파동기간;
n2 = 지표파동기간;
value = ema(MACD(12, 26),9);
//value = stochasticsD(12,5,5);
for j = 1 to 9 {
고Bar[j] = 고Bar[j] + 1;
저Bar[j] = 저Bar[j] + 1;
지표고Bar[j] = 지표고Bar[j] + 1;
지표저Bar[j] = 지표저Bar[j] + 1;
}
다이버전스Bar = 다이버전스Bar + 1;
#=========================================================#
# 주가 Swing 계산
#=========================================================#
#---------------------------------------------------------#
# 전고점(Peak) 계산
#---------------------------------------------------------#
if Highest(H,n1)[n1+1] <= H[n1] and H[n1] > Highest(H,n1) then {
for j = 8 downto 1 {
고[j+1]= 고[j];
고Bar[j+1] = 고Bar[j];
}
고[1]= H[n1];
고Bar[1] = n1;
if 저Bar[1] > 고Bar[2] then {
for j = 8 downto 1 {
저[j+1]= 저[j];
저Bar[j+1] = 저Bar[j];
}
k = n1 + 1;
for j = n1 + 2 to 고Bar[2]-1 {
if L[k] > L[j] then k = j;
}
저[1]= L[k];
저Bar[1] = k;
}
}
#---------------------------------------------------------#
# 전저점(Trough) 계산
#---------------------------------------------------------#
if Lowest(L,n1)[n1+1] >= L[n1] and L[n1] < Lowest(L,n1) then {
for j = 8 downto 1 {
저[j+1]= 저[j];
저Bar[j+1] = 저Bar[j];
}
저[1]= L[n1];
저Bar[1] = n1;
if 고Bar[1] > 저Bar[2] then {
for j = 8 downto 1 {
고[j+1]= 고[j];
고Bar[j+1] = 고Bar[j];
}
k = n1 + 1;
for j = n1 + 2 to 저Bar[2]-1 {
if H[k] < H[j] then k = j;
}
고[1]= H[k];
고Bar[1] = k;
}
}
#=========================================================#
# 지표식 Swing 계산
#=========================================================#
#---------------------------------------------------------#
# 전고점(Peak) 계산
#---------------------------------------------------------#
if Highest(value,n2)[n2+1] <= value[n2] and
value[n2] > Highest(value,n2) then {
for j = 8 downto 1 {//배열값을 순차적으로 바꿔준다
지표고[j+1]= 지표고[j];
지표고Bar[j+1] = 지표고Bar[j];
}
k = n2 + 1;
for j = n2 + 2 to 지표고Bar[2]-1 {
if value[k] > value[j] then k = j;
}
지표저[1]= value[k];
지표저Bar[1] = k;
}
}
#---------------------------------------------------------#
# 전저점(Trough) 계산
#---------------------------------------------------------#
if Lowest(value,n2)[n2+1] >= value[n2] and
value[n2] < Lowest(value,n2) then {
for j = 8 downto 1 {
지표저[j+1]= 지표저[j];
지표저Bar[j+1] = 지표저Bar[j];
}
지표저[1]= value[n2];
지표저Bar[1] = n2;
if 지표고Bar[1] > 지표저Bar[2] then {
for j = 8 downto 1 {
지표고[j+1]= 지표고[j];
지표고Bar[j+1] = 지표고Bar[j];
}
k = n2 + 1;
for j = n2 + 2 to 지표저Bar[2]-1 {
if value[k] < value[j] then k = j;
}
지표고[1]= value[k];
지표고Bar[1] = k;
}
}
#=========================================================#
# 다이버전스 계산
#=========================================================#
if 고Bar[1] == n1 or 지표고Bar[1] == n2 or
저Bar[1] == n1 or 지표저Bar[1] == n2 then {
if 고[2] < 고[1] and 지표고[2] > 지표고[1] then {
다이버전스= 하락;
다이버전스Bar = 0;
}
else if 저[2] > 저[1] and 지표저[2] < 지표저[1] then {
다이버전스= 상승;
다이버전스Bar = 0;
}
}
if 다이버전스Bar > 유효기간 then 다이버전스 = 0;
#=========================================================#
# 추세선 계산
#=========================================================#
if 다이버전스 == 상승 then {
추세선 = (고[1]-고[2])/(고Bar[2]-고Bar[1]) * 고Bar[2] + 고[2];
}
if 다이버전스 == 하락 then {
추세선 = (저[1]-저[2])/(저Bar[2]-저Bar[1]) * 저Bar[2] + 저[2];
}
if 다이버전스 == 0 then {
추세선 = 0;
}
#=========================================================#
# 시스템 식
#=========================================================#
if 다이버전스 == 상승 and C > ma(C,20) and CrossUp(C,추세선) then
Buy();
if 다이버전스 == 하락 and C < ma(C,20) and CrossDown(C,추세선) then
Sell();