커뮤니티
주석요청
2018-09-03 14:51:37
162
글번호 121810
안녕하세요?
바쁘시겠지만 아래 스크립트 각 주석을 요청드립니다.
언제나 감사드립니다.
input : N(10);
var : cnt(0);
var : sum1(0),sum2(0),sum3(0),sum4(0),sum5(0);
var : mav1(0),mav2(0),mav3(0),mav4(0),mav5(0);
Array : value[5](0);
if bdate != bdate[1] then
{
sum1 = 0;
sum2 = 0;
sum3 = 0;
sum4 = 0;
sum5 = 0;
for cnt = 1 to N
{
sum1 = sum1 + (DayHigh(cnt)-DayOpen(cnt));
sum2 = sum2 + (DayOpen(cnt)-DayLow(cnt));
sum3 = sum3 + abs(DayOpen(cnt)-DayClose(cnt+1));
sum4 = sum4 + abs(DayHigh(cnt)-DayClose(cnt+1));
sum5 = sum5 + abs(DayLow(cnt)-DayClose(cnt+1));
}
mav1 = sum1/N;
mav2 = sum2/N;
mav3 = sum3/N;
mav4 = sum4/N;
mav5 = sum5/N;
value[0] = DayOpen(0)+mav1;
value[1] = DayOpen(0)+mav2;
value[2] = DayClose(1)+mav3;
value[3] = DayClose(1)+mav4;
value[4] = DayClose(1)+mav5;
var1 = 0;
var2 = 0;
value1 = 0;
value2 = 0;
for cnt = 0 to 4
{
if value[cnt] > dayopen Then
{
if var1 == 0 or (var1 > 0 and abs(value[cnt]-dayopen) < var1) Then
{
var1 = abs(value[cnt]-dayopen);
value1 = value[cnt];
}
}
if value[cnt] < dayopen Then
{
if var2 == 0 or (var2 > 0 and abs(value[cnt]-dayopen) < var2) Then
{
var2 = abs(value[cnt]-dayopen);
value2 = value[cnt];
}
}
}
}
if MarketPosition <= 0 and value1 > 0 and crossup(c,value1) Then
buy("b",AtMarket);
if MarketPosition <= 0 and value2 > 0 and CrossDown(c,value2) Then
sell("s",AtMarket);
if MarketPosition == 1 and value2[BarsSinceEntry] > 0 Then
ExitLong("bx",AtStop,value2[BarsSinceEntry]);
if MarketPosition == -1 and value1[BarsSinceEntry] > 0 Then
ExitShort("sx",AtStop,value1[BarsSinceEntry]);
SetStopEndofday(152500);
답변 1
예스스탁 예스스탁 답변
2018-09-06 11:30:06
안녕하세요
예스스탁입니다.
input : N(10);
var : cnt(0);
var : sum1(0),sum2(0),sum3(0),sum4(0),sum5(0);
var : mav1(0),mav2(0),mav3(0),mav4(0),mav5(0);
Array : value[5](0);
#영업일 변경
if bdate != bdate[1] then
{
sum1 = 0;# 일봉으로 N일간 고가와 시가의 차이를 저장할 변수(초기값은0)
sum2 = 0;# 일봉으로 N일간 시가와 저가의 차이를 저장할 변수(초기값은0)
sum3 = 0;# 일봉으로 N일간 시가와 전일종가의 차이의 절대값을 저장할 변수(초기값은0)
sum4 = 0;# 일봉으로 N일간 고가와 전일종가의 차이의 절대값을 저장할 변수(초기값은0)
sum5 = 0;# 일봉으로 N일간 저가와 전일종가의 차이의 절대값을 저장할 변수(초기값은0)
//for루프를 돌며 N일간값 누적
for cnt = 1 to N
{
sum1 = sum1 + (DayHigh(cnt)-DayOpen(cnt));
sum2 = sum2 + (DayOpen(cnt)-DayLow(cnt));
sum3 = sum3 + abs(DayOpen(cnt)-DayClose(cnt+1));
sum4 = sum4 + abs(DayHigh(cnt)-DayClose(cnt+1));
sum5 = sum5 + abs(DayLow(cnt)-DayClose(cnt+1));
}
mav1 = sum1/N;//sum1을 N으로 나눠 평균값계산
mav2 = sum2/N;//sum2을 N으로 나눠 평균값계산
mav3 = sum3/N;//sum3을 N으로 나눠 평균값계산
mav4 = sum4/N;//sum4을 N으로 나눠 평균값계산
mav5 = sum5/N;//sum5을 N으로 나눠 평균값계산
value[0] = DayOpen(0)+mav1;#당일시가 + 과거 10일(고가-시가)의 평균
value[1] = DayOpen(0)+mav2; #당일시가 + 과거 10일 (시가-저가)의 평균}
value[2] = DayClose(1)+mav3; #전일종가 + 과거 10일 (전영업일 종가-당영업일 시가)의 절대값의 평균
value[3] = DayClose(1)+mav4; #전일종가 + 과거 10일 (전영업일 종가-당영업일 고가)의 절대값의 평균
value[4] = DayClose(1)+mav5; #전일종가 + 과거 10일 (전영업일 종가-당영업일 저가)의 절대값의 평균
var1 = 0;
var2 = 0;
value1 = 0;
value2 = 0;
#value[0]~value[4]까지의 값중
for cnt = 0 to 4
{
#시초가 보다 위이면서
if value[cnt] > dayopen Then
{
#시가와 차이값이 가장 작은값을 찾아 value1에 저장
if var1 == 0 or (var1 > 0 and abs(value[cnt]-dayopen) < var1) Then
{
var1 = abs(value[cnt]-dayopen);
value1 = value[cnt];
}
}
#시초가 보다 아래이면서
if value[cnt] < dayopen Then
{
#시가와 차이값이 가장 작은값을 찾아 value2에 저장
if var2 == 0 or (var2 > 0 and abs(value[cnt]-dayopen) < var2) Then
{
var2 = abs(value[cnt]-dayopen);
value2 = value[cnt];
}
}
}
}
#value1상향돌파시 매수
if MarketPosition <= 0 and value1 > 0 and crossup(c,value1) Then
buy("b",AtMarket);
#value2하향이탈시 매도
if MarketPosition <= 0 and value2 > 0 and CrossDown(c,value2) Then
sell("s",AtMarket);
#매수진입후 진입신호봉의 value2값보다 낮은 시세 발생하면 청산
if MarketPosition == 1 and value2[BarsSinceEntry] > 0 Then
ExitLong("bx",AtStop,value2[BarsSinceEntry]);
#매도진입후 진입신호봉의 value1값보다 높은 시세 발생하면 청산
if MarketPosition == -1 and value1[BarsSinceEntry] > 0 Then
ExitShort("sx",AtStop,value1[BarsSinceEntry]);
SetStopEndofday(152500);
즐거운 하루되세요
> 흰둥이아빠 님이 쓴 글입니다.
> 제목 : 주석요청
> 안녕하세요?
바쁘시겠지만 아래 스크립트 각 주석을 요청드립니다.
언제나 감사드립니다.
input : N(10);
var : cnt(0);
var : sum1(0),sum2(0),sum3(0),sum4(0),sum5(0);
var : mav1(0),mav2(0),mav3(0),mav4(0),mav5(0);
Array : value[5](0);
if bdate != bdate[1] then
{
sum1 = 0;
sum2 = 0;
sum3 = 0;
sum4 = 0;
sum5 = 0;
for cnt = 1 to N
{
sum1 = sum1 + (DayHigh(cnt)-DayOpen(cnt));
sum2 = sum2 + (DayOpen(cnt)-DayLow(cnt));
sum3 = sum3 + abs(DayOpen(cnt)-DayClose(cnt+1));
sum4 = sum4 + abs(DayHigh(cnt)-DayClose(cnt+1));
sum5 = sum5 + abs(DayLow(cnt)-DayClose(cnt+1));
}
mav1 = sum1/N;
mav2 = sum2/N;
mav3 = sum3/N;
mav4 = sum4/N;
mav5 = sum5/N;
value[0] = DayOpen(0)+mav1;
value[1] = DayOpen(0)+mav2;
value[2] = DayClose(1)+mav3;
value[3] = DayClose(1)+mav4;
value[4] = DayClose(1)+mav5;
var1 = 0;
var2 = 0;
value1 = 0;
value2 = 0;
for cnt = 0 to 4
{
if value[cnt] > dayopen Then
{
if var1 == 0 or (var1 > 0 and abs(value[cnt]-dayopen) < var1) Then
{
var1 = abs(value[cnt]-dayopen);
value1 = value[cnt];
}
}
if value[cnt] < dayopen Then
{
if var2 == 0 or (var2 > 0 and abs(value[cnt]-dayopen) < var2) Then
{
var2 = abs(value[cnt]-dayopen);
value2 = value[cnt];
}
}
}
}
if MarketPosition <= 0 and value1 > 0 and crossup(c,value1) Then
buy("b",AtMarket);
if MarketPosition <= 0 and value2 > 0 and CrossDown(c,value2) Then
sell("s",AtMarket);
if MarketPosition == 1 and value2[BarsSinceEntry] > 0 Then
ExitLong("bx",AtStop,value2[BarsSinceEntry]);
if MarketPosition == -1 and value1[BarsSinceEntry] > 0 Then
ExitShort("sx",AtStop,value1[BarsSinceEntry]);
SetStopEndofday(152500);