커뮤니티
시스템
2019-02-08 19:13:56
178
글번호 125986
안녕하세요 새해복많이받으세요
예스함수로렌코차트을 함수식으로 구현되는걸로 알고있습니다
아래식에서 DMI관련식을 제외한 렌코와 파라만 함수식을 수정부탁드립니디
input:renkoSize(0.2), //렌코 크기
af(0.02), maxAF(0.2),
Period(14);
var:j(0),k(0),renkoCnt(0),gubun(0),
printOK(false), //데이터 출력/미출력(True/False)
filename("renko.txt"), //데이터 출력 생성 위치(C:₩예스트레이더₩YesLang₩)
value(0);
array:OO[50](0),HH[50](0),LL[50](0),CC[50](0),gubunSave[5](0);
If DayIndex == 0 Then { //break on session에 일자 계산 초기화
gubun = 0; //렌코 방향 초기화
For j = 49 DownTo 1 { //금일 시가봉을 신규 추가
OO[j] = OO[j-1];
HH[j] = HH[j-1];
LL[j] = LL[j-1];
CC[j] = CC[j-1];
}
OO[0] = C; //분봉의 종가를 기반으로 계산하기 때문에 당일 시초가 아니다
HH[0] = C;
LL[0] = C;
CC[0] = C;
}
Else {
If gubun == 0 and CC[0] > 0 Then { //일 첫봉이 완성되지 않으면
If OO[0] - renkoSize >= C Then { //상방향 렌코인지 확인
gubun = -1; //상방향 결정
CC[0] = OO[0] - renkoSize;
HH[0] = OO[0];
LL[0] = CC[0];
j = 0; //마지막 1봉만 출력
if printOK then print(filename,"1=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",
j,gubun,OO[j],HH[j],LL[j],CC[j]);
}
Else If OO[0] + renkoSize <= C Then { //하방향 렌코인지 확인
gubun = 1; //하방향 결정
CC[0] = OO[0] + renkoSize;
HH[0] = CC[0];
LL[0] = OO[0];
j = 0;
if printOK then print(filename,"2=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",
j,gubun,OO[j],HH[j],LL[j],CC[j]);
}
}
If LL[0] - renkoSize >= C Then { //아래 방향으로 렌코 형성
gubun = -1;
renkoCnt = Int(Round((LL[0]-C)/renkoSize,9)); //추가될 렌코 개수
if renkoCnt > 49 then renkoCnt = 49; //오류방지를 위한 방어코드
For j = 49 DownTo renkoCnt {
OO[j] = OO[j-renkoCnt];
HH[j] = HH[j-renkoCnt];
LL[j] = LL[j-renkoCnt];
CC[j] = CC[j-renkoCnt];
}
For j = renkoCnt-1 DownTo 0 {
OO[j] = LL[j+1];
CC[j] = LL[j+1] - renkoSize;
HH[j] = OO[j];
LL[j] = CC[j];
if printOK then print(filename,"3=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",
j,gubun,OO[j],HH[j],LL[j],CC[j]); //봉이 생길 때마다 출력
}
}
Else If HH[0] + renkoSize <= C Then { //위 방향으로 렌코 형성
gubun = 1;
renkoCnt = Int(Round((C-HH[0])/renkoSize,9));
if renkoCnt > 49 then renkoCnt = 49;
For j = 49 DownTo renkoCnt {
OO[j] = OO[j-renkoCnt];
HH[j] = HH[j-renkoCnt];
LL[j] = LL[j-renkoCnt];
CC[j] = CC[j-renkoCnt];
}
For j = renkoCnt-1 DownTo 0 {
OO[j] = HH[j+1];
CC[j] = HH[j+1] + renkoSize;
HH[j] = CC[j];
LL[j] = OO[j];
if printOK then print(filename,"4=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",
j,gubun,OO[j],HH[j],LL[j],CC[j]); //봉이 생길 때마다 출력
}
}
Else If Time >= 151500 Then { //당일 종가봉에서,
For j = 49 DownTo 1 {
OO[j] = OO[j-1];
HH[j] = HH[j-1];
LL[j] = LL[j-1];
CC[j] = CC[j-1];
}
If LL[1] > C Then { //종가가 이전 봉보다 아래 형성
OO[0] = LL[1];
CC[0] = C;
HH[0] = OO[0];
LL[0] = CC[0];
} Else If HH[1] < C Then { //종가가 이전 봉보다 위에 형성
OO[0] = HH[1];
CC[0] = C;
HH[0] = CC[0];
LL[0] = OO[0];
} Else { //종가가 이전 봉의 중간에 형성
OO[0] = C;
CC[0] = C;
HH[0] = C;
LL[0] = C;
}
j = 0; //마지막 1봉만 출력
if printOK then print(filename,"5=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",
j,gubun,OO[j],HH[j],LL[j],CC[j]);
}
}
//If OO[0] > 0 Then Plot1(OO[0],"OO");
//If CC[0] > 0 Then Plot2(CC[0],"CC");
for j= 4 downTo 1{
gubunSave[j] = gubunSave[j-1];
}
gubunSave[0] = gubun;
value = sar(af,maxAF);
value1 = DIPlus(Period);
value2 = DIMinus(Period);
# 매수/매도청산
If CrossUP(value1, value2) and (C > value) and (/*(gubunSave[2] = -1) and (gubunSave[1] = 1) and*/ (gubun = 1) or ((gubun = -1) and (gubunSave[1] = 1))) Then
{
buy();
}
# 매도/매수청산
If CrossDown(value1, value2) and (C < value) and (/*(gubunSave[2] = 1) and (gubunSave[1] = -1) and*/ (gubun = -1) or ((gubun = 1) and (gubunSave[1] = -1))) Then
{
Sell();
}
감사합니다
답변 1
예스스탁 예스스탁 답변
2019-02-11 11:16:56
안녕하세요
예스스탁입니다.
input:renkoSize(0.2), //렌코 크기
af(0.02), maxAF(0.2),
Period(14);
var:j(0),k(0),renkoCnt(0),gubun(0),
printOK(false), //데이터 출력/미출력(True/False)
filename("renko.txt"), //데이터 출력 생성 위치(C:₩예스트레이더₩YesLang₩)
value(0);
array:OO[50](0),HH[50](0),LL[50](0),CC[50](0),gubunSave[5](0);
If DayIndex == 0 Then { //break on session에 일자 계산 초기화
gubun = 0; //렌코 방향 초기화
For j = 49 DownTo 1 { //금일 시가봉을 신규 추가
OO[j] = OO[j-1];
HH[j] = HH[j-1];
LL[j] = LL[j-1];
CC[j] = CC[j-1];
}
OO[0] = C; //분봉의 종가를 기반으로 계산하기 때문에 당일 시초가 아니다
HH[0] = C;
LL[0] = C;
CC[0] = C;
}
Else {
If gubun == 0 and CC[0] > 0 Then { //일 첫봉이 완성되지 않으면
If OO[0] - renkoSize >= C Then { //상방향 렌코인지 확인
gubun = -1; //상방향 결정
CC[0] = OO[0] - renkoSize;
HH[0] = OO[0];
LL[0] = CC[0];
j = 0; //마지막 1봉만 출력
if printOK then print(filename,"1=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",
j,gubun,OO[j],HH[j],LL[j],CC[j]);
}
Else If OO[0] + renkoSize <= C Then { //하방향 렌코인지 확인
gubun = 1; //하방향 결정
CC[0] = OO[0] + renkoSize;
HH[0] = CC[0];
LL[0] = OO[0];
j = 0;
if printOK then print(filename,"2=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",
j,gubun,OO[j],HH[j],LL[j],CC[j]);
}
}
If LL[0] - renkoSize >= C Then { //아래 방향으로 렌코 형성
gubun = -1;
renkoCnt = Int(Round((LL[0]-C)/renkoSize,9)); //추가될 렌코 개수
if renkoCnt > 49 then renkoCnt = 49; //오류방지를 위한 방어코드
For j = 49 DownTo renkoCnt {
OO[j] = OO[j-renkoCnt];
HH[j] = HH[j-renkoCnt];
LL[j] = LL[j-renkoCnt];
CC[j] = CC[j-renkoCnt];
}
For j = renkoCnt-1 DownTo 0 {
OO[j] = LL[j+1];
CC[j] = LL[j+1] - renkoSize;
HH[j] = OO[j];
LL[j] = CC[j];
if printOK then print(filename,"3=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",
j,gubun,OO[j],HH[j],LL[j],CC[j]); //봉이 생길 때마다 출력
}
}
Else If HH[0] + renkoSize <= C Then { //위 방향으로 렌코 형성
gubun = 1;
renkoCnt = Int(Round((C-HH[0])/renkoSize,9));
if renkoCnt > 49 then renkoCnt = 49;
For j = 49 DownTo renkoCnt {
OO[j] = OO[j-renkoCnt];
HH[j] = HH[j-renkoCnt];
LL[j] = LL[j-renkoCnt];
CC[j] = CC[j-renkoCnt];
}
For j = renkoCnt-1 DownTo 0 {
OO[j] = HH[j+1];
CC[j] = HH[j+1] + renkoSize;
HH[j] = CC[j];
LL[j] = OO[j];
if printOK then print(filename,"4=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",
j,gubun,OO[j],HH[j],LL[j],CC[j]); //봉이 생길 때마다 출력
}
}
Else If Time >= 151500 Then { //당일 종가봉에서,
For j = 49 DownTo 1 {
OO[j] = OO[j-1];
HH[j] = HH[j-1];
LL[j] = LL[j-1];
CC[j] = CC[j-1];
}
If LL[1] > C Then { //종가가 이전 봉보다 아래 형성
OO[0] = LL[1];
CC[0] = C;
HH[0] = OO[0];
LL[0] = CC[0];
} Else If HH[1] < C Then { //종가가 이전 봉보다 위에 형성
OO[0] = HH[1];
CC[0] = C;
HH[0] = CC[0];
LL[0] = OO[0];
} Else { //종가가 이전 봉의 중간에 형성
OO[0] = C;
CC[0] = C;
HH[0] = C;
LL[0] = C;
}
j = 0; //마지막 1봉만 출력
if printOK then print(filename,"5=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",
j,gubun,OO[j],HH[j],LL[j],CC[j]);
}
}
//If OO[0] > 0 Then Plot1(OO[0],"OO");
//If CC[0] > 0 Then Plot2(CC[0],"CC");
for j= 4 downTo 1{
gubunSave[j] = gubunSave[j-1];
}
gubunSave[0] = gubun;
value = sar(af,maxAF);
# 매수/매도청산
If crossup(c,value) and (/*(gubunSave[2] = -1) and (gubunSave[1] = 1) and*/ (gubun == 1) or ((gubun == -1) and (gubunSave[1] == 1))) Then
{
buy();
}
# 매도/매수청산
If CrossDown(c,value) and (/*(gubunSave[2] = 1) and (gubunSave[1] = -1) and*/ (gubun == -1) or ((gubun == 1) and (gubunSave[1] == -1))) Then
{
Sell();
}
즐거운 하루되세요
> 유인력11 님이 쓴 글입니다.
> 제목 : 시스템
> 안녕하세요 새해복많이받으세요
예스함수로렌코차트을 함수식으로 구현되는걸로 알고있습니다
아래식에서 DMI관련식을 제외한 렌코와 파라만 함수식을 수정부탁드립니디
input:renkoSize(0.2), //렌코 크기
af(0.02), maxAF(0.2),
Period(14);
var:j(0),k(0),renkoCnt(0),gubun(0),
printOK(false), //데이터 출력/미출력(True/False)
filename("renko.txt"), //데이터 출력 생성 위치(C:₩예스트레이더₩YesLang₩)
value(0);
array:OO[50](0),HH[50](0),LL[50](0),CC[50](0),gubunSave[5](0);
If DayIndex == 0 Then { //break on session에 일자 계산 초기화
gubun = 0; //렌코 방향 초기화
For j = 49 DownTo 1 { //금일 시가봉을 신규 추가
OO[j] = OO[j-1];
HH[j] = HH[j-1];
LL[j] = LL[j-1];
CC[j] = CC[j-1];
}
OO[0] = C; //분봉의 종가를 기반으로 계산하기 때문에 당일 시초가 아니다
HH[0] = C;
LL[0] = C;
CC[0] = C;
}
Else {
If gubun == 0 and CC[0] > 0 Then { //일 첫봉이 완성되지 않으면
If OO[0] - renkoSize >= C Then { //상방향 렌코인지 확인
gubun = -1; //상방향 결정
CC[0] = OO[0] - renkoSize;
HH[0] = OO[0];
LL[0] = CC[0];
j = 0; //마지막 1봉만 출력
if printOK then print(filename,"1=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",
j,gubun,OO[j],HH[j],LL[j],CC[j]);
}
Else If OO[0] + renkoSize <= C Then { //하방향 렌코인지 확인
gubun = 1; //하방향 결정
CC[0] = OO[0] + renkoSize;
HH[0] = CC[0];
LL[0] = OO[0];
j = 0;
if printOK then print(filename,"2=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",
j,gubun,OO[j],HH[j],LL[j],CC[j]);
}
}
If LL[0] - renkoSize >= C Then { //아래 방향으로 렌코 형성
gubun = -1;
renkoCnt = Int(Round((LL[0]-C)/renkoSize,9)); //추가될 렌코 개수
if renkoCnt > 49 then renkoCnt = 49; //오류방지를 위한 방어코드
For j = 49 DownTo renkoCnt {
OO[j] = OO[j-renkoCnt];
HH[j] = HH[j-renkoCnt];
LL[j] = LL[j-renkoCnt];
CC[j] = CC[j-renkoCnt];
}
For j = renkoCnt-1 DownTo 0 {
OO[j] = LL[j+1];
CC[j] = LL[j+1] - renkoSize;
HH[j] = OO[j];
LL[j] = CC[j];
if printOK then print(filename,"3=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",
j,gubun,OO[j],HH[j],LL[j],CC[j]); //봉이 생길 때마다 출력
}
}
Else If HH[0] + renkoSize <= C Then { //위 방향으로 렌코 형성
gubun = 1;
renkoCnt = Int(Round((C-HH[0])/renkoSize,9));
if renkoCnt > 49 then renkoCnt = 49;
For j = 49 DownTo renkoCnt {
OO[j] = OO[j-renkoCnt];
HH[j] = HH[j-renkoCnt];
LL[j] = LL[j-renkoCnt];
CC[j] = CC[j-renkoCnt];
}
For j = renkoCnt-1 DownTo 0 {
OO[j] = HH[j+1];
CC[j] = HH[j+1] + renkoSize;
HH[j] = CC[j];
LL[j] = OO[j];
if printOK then print(filename,"4=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",
j,gubun,OO[j],HH[j],LL[j],CC[j]); //봉이 생길 때마다 출력
}
}
Else If Time >= 151500 Then { //당일 종가봉에서,
For j = 49 DownTo 1 {
OO[j] = OO[j-1];
HH[j] = HH[j-1];
LL[j] = LL[j-1];
CC[j] = CC[j-1];
}
If LL[1] > C Then { //종가가 이전 봉보다 아래 형성
OO[0] = LL[1];
CC[0] = C;
HH[0] = OO[0];
LL[0] = CC[0];
} Else If HH[1] < C Then { //종가가 이전 봉보다 위에 형성
OO[0] = HH[1];
CC[0] = C;
HH[0] = CC[0];
LL[0] = OO[0];
} Else { //종가가 이전 봉의 중간에 형성
OO[0] = C;
CC[0] = C;
HH[0] = C;
LL[0] = C;
}
j = 0; //마지막 1봉만 출력
if printOK then print(filename,"5=>,%.0f,%.0f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f",
j,gubun,OO[j],HH[j],LL[j],CC[j]);
}
}
//If OO[0] > 0 Then Plot1(OO[0],"OO");
//If CC[0] > 0 Then Plot2(CC[0],"CC");
for j= 4 downTo 1{
gubunSave[j] = gubunSave[j-1];
}
gubunSave[0] = gubun;
value = sar(af,maxAF);
value1 = DIPlus(Period);
value2 = DIMinus(Period);
# 매수/매도청산
If CrossUP(value1, value2) and (C > value) and (/*(gubunSave[2] = -1) and (gubunSave[1] = 1) and*/ (gubun = 1) or ((gubun = -1) and (gubunSave[1] = 1))) Then
{
buy();
}
# 매도/매수청산
If CrossDown(value1, value2) and (C < value) and (/*(gubunSave[2] = 1) and (gubunSave[1] = -1) and*/ (gubun = -1) or ((gubun = 1) and (gubunSave[1] = -1))) Then
{
Sell();
}
감사합니다