커뮤니티
함수각주요청(11-1)
2015-12-28 22:11:19
151
글번호 93862
안녕하세요?
아래 함수의 각 구문 의미가 어떤 것인지 // 요청드립니다.
아울러 스크립트의 논리상 문제가 없는지도 검토부탁드립니다.
------------------------------------------------------------------------------------
var : entry1(0);
var : ho1(0),OL1(0),HL1(0);
var : maho1(0),maOL1(0),maHL1(0);
var : cnt1(0),sumho1(0),sumOL1(0),sumHL1(0);
var : EntryCnt1(0);
var : V1(0),V2(0),V3(0),V4(0),V5(0);
var : V6(0),V7(0),V8(0),V9(0),V10(0);
if bdate != bdate[1] Then
entry1 = 0;
if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then
entry1 = entry1+1;
ho1 = Dayhigh-Dayopen;
OL1 = DayOpen-DayLow;
HL1 = DayHigh-DayLow;
sumho1 = 0;
sumOL1 = 0;
sumHL1 = 0;
for cnt1 = 1 to 10{
sumho1 = sumho1 + (dayhigh(cnt1)-dayopen(cnt1));
sumOL1 = sumOL1 + (DayOpen(cnt1)-DayLow(cnt1));
sumHL1 = sumHL1 + (DayHigh(cnt1)-DayLow(cnt1));
}
maho1 = sumho1/10;
maOL1 = sumOL1/10;
maHL1 = sumHL1/10;
V1 = dayopen(0)+maho1;
V2 = DayOpen(0)-maOL1;
V3 = DayOpen(0)+maHL1;
V4 = DayOpen(0)-maHL1;
V5 = NthMaxList(1,V1,V2,V3,V4);
V6 = NthMaxList(2,V1,V2,V3,V4);
V7 = NthMaxList(3,V1,V2,V3,V4);
V8 = NthMaxList(4,V1,V2,V3,V4);
if MarketPosition == 0 and entry1 == 0 Then{
sell("s",AtStop,V6);
}
if MarketPosition == -1 and IsEntryName("s") == true Then{
ExitShort("sp",atlimit,V7);
ExitShort("sl",AtStop,V5);
}
var : TF(0);
var : Xtime(0), Etime(false),cnt(0),mav1(0),mav2(0);
var : HV(0),LV(0),HV1(0),LV1(0),HV2(0),LV2(0);
Array : HH[50](0),LL[50](0),CC[50](0);
mav1 = ma(c,5);
mav2 = ma(C,20);
TF = TimeToMinutes(stime)%30;
if Bdate != Bdate[1] Then{
Etime = true;
if stime >= 090000 Then
Xtime = 050000;
Else
Xtime = 060000;
}
if Bdate != Bdate[1] or (TF < TF[1] and stime > stime[1]) or date != date[1] Then{
HH[0] = H;
LL[0] = L;
for cnt = 1 to 49{
HH[cnt] = HH[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
CC[cnt] = CC[cnt-1][1];
}
}
if H > HH[0] Then
HH[0] = H;
if L < LL[0] Then
LL[0] = L;
CC[0] = C;
if HH[25+2] > 0 Then{
HV = HH[0];
LV = LL[0];
HV1 = HH[1];
LV1 = LL[1];
HV2 = HH[2];
LV2 = LL[2];
for cnt = 0 to 25{
if HH[cnt] > HV Then
HV = HH[cnt];
if LL[cnt] < LV Then
LV = LL[cnt];
if HH[cnt+1] > HV Then
HV = HH[cnt+1];
if LL[cnt+1] < LV Then
LV = LL[cnt+1];
if HH[cnt+2] > HV Then
HV = HH[cnt+2];
if LL[cnt+2] < LV Then
LV = LL[cnt+2];
}
var1 = (HV+LV)/2;
var2 = (HV1+LV1)/2;
var3 = (HV2+LV2)/2;
if Etime == true then{
if MarketPosition == 0 and CC[0] > var1 and CC[1] < var2 and CC[2] < var3 and C >= daylow+0.5 Then
buy("b",AtMarket);
if MarketPosition == 1 and c <= highest(H,BarsSinceEntry)-0.5 and CrossDown(mav1,mav2) Then
ExitLong("bx",AtMarket);
}
}
if stime == Xtime or (stime > Xtime and stime[1] < Xtime) Then{
Etime = false;
ExitLong();
}
답변 1
예스스탁 예스스탁 답변
2015-12-29 14:04:49
안녕하세요
예스스탁입니다.
수식에 특별한 논리적 오류는 보이지 않습니다.
주석 내용 참고하시기 바랍니다.
var : entry1(0);
var : ho1(0),OL1(0),HL1(0);
var : maho1(0),maOL1(0),maHL1(0);
var : cnt1(0),sumho1(0),sumOL1(0),sumHL1(0);
var : EntryCnt1(0);
var : V1(0),V2(0),V3(0),V4(0),V5(0);
var : V6(0),V7(0),V8(0),V9(0),V10(0);
#새로운 영업일 시작
#진입횟수 카운트하는 변수 entry1는 0
if bdate != bdate[1] Then
entry1 = 0;
#포지션이 변경되어 매수나 매도진입하면
#entry1을 1씩증가해서 당일진입횟수 카운트
if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then
entry1 = entry1+1;
#당일고가와 당일시가의 차이
ho1 = Dayhigh-Dayopen;
#당일시가와 당일저가의 차이
OL1 = DayOpen-DayLow;
#당일고가와 당일저가의 차이
HL1 = DayHigh-DayLow;
sumho1 = 0;
sumOL1 = 0;
sumHL1 = 0;
for cnt1 = 1 to 10{
#1일전~10일전의 당일고가-당일시가값 합산
sumho1 = sumho1 + (dayhigh(cnt1)-dayopen(cnt1));
#1일전~10일전의 당일시가-당일저가값 합산
sumOL1 = sumOL1 + (DayOpen(cnt1)-DayLow(cnt1));
#1일전~10일전의 당일고가-당일저가값 합산
sumHL1 = sumHL1 + (DayHigh(cnt1)-DayLow(cnt1));
}
#10으로 나누어 평균값 계산
maho1 = sumho1/10;
maOL1 = sumOL1/10;
maHL1 = sumHL1/10;
#시가+10일간 고가-시가의 평균
V1 = dayopen(0)+maho1;
#시가+10일간 시가-저가의 평균
V2 = DayOpen(0)-maOL1;
#시가+10일간 고가-저가의 평균
V3 = DayOpen(0)+maHL1;
#시가-10일간 고가-시가의 평균
V4 = DayOpen(0)-maHL1;
#위 4개위 값중 가장큰값
V5 = NthMaxList(1,V1,V2,V3,V4);
#위 4개위 값중 두번째큰값
V6 = NthMaxList(2,V1,V2,V3,V4);
#위 4개위 값중 세번째큰값
V7 = NthMaxList(3,V1,V2,V3,V4);
#위 4개위 값중 네번째큰값
V8 = NthMaxList(4,V1,V2,V3,V4);
#무포지션이고 당일 진입이 없을때
if MarketPosition == 0 and entry1 == 0 Then{
#v6이하의 시세가 발생하면 매도지닙
sell("s",AtStop,V6);
}
#s매도진입후에
if MarketPosition == -1 and IsEntryName("s") == true Then{
#v7이하의 시세가 발생하면 매도청산
ExitShort("sp",atlimit,V7);
#v5이상의 시세가 발생하면 매도청산
ExitShort("sl",AtStop,V5);
}
var : TF(0);
var : Xtime(0), Etime(false),cnt(0),mav1(0),mav2(0);
var : HV(0),LV(0),HV1(0),LV1(0),HV2(0),LV2(0);
Array : HH[50](0),LL[50](0),CC[50](0);
mav1 = ma(c,5);
mav2 = ma(C,20);
#시간을 30분 단위로 구분
TF = TimeToMinutes(stime)%30;
#새로운영업일이 시작하면
if Bdate != Bdate[1] Then{
#Etime은 true
Etime = true;
#시간이 9시이후이면 xtime은 5시
if stime >= 090000 Then
Xtime = 050000;
Else#아이면 xtime은 6시
Xtime = 060000;
}
#새로운 영업일이 시작하거나 30분 단위의 첫봉이 시작하거나 날짜가 변경이 되면
if Bdate != Bdate[1] or (TF < TF[1] and stime > stime[1]) or date != date[1] Then{
#HH[0]에 초기값으로 고가저장
HH[0] = H;
#LL[0]에 초기값으로 저가저장
LL[0] = L;
#이전 30분간 최고가/최저가/종가를 저장
#기존 [0]번방의 값은[1]번방, 기존[1]번방은 [2]번방 순으로 옮겨 30분기준 이전 49개까지 저장
for cnt = 1 to 49{
HH[cnt] = HH[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
CC[cnt] = CC[cnt-1][1];
}
}
#30분간 최고가 계산
#현재봉 고가가 HH[0]보다 크면 HH[0]의 값을 현재고가로 변경
if H > HH[0] Then
HH[0] = H;
#30분간 최저가 계산
#현재봉 저가가 LLH[0]보다 작으면면 LL[0]의 값을 현재저가로 변경
if L < LL[0] Then
LL[0] = L;
#종가 저장
CC[0] = C;
#이전 30분간 최고가 27개까지 계산되었으면
if HH[25+2] > 0 Then{
HV = HH[0];
LV = LL[0];
HV1 = HH[1];
LV1 = LL[1];
HV2 = HH[2];
LV2 = LL[2];
#0~25까지 이전값을 불러와 최고값 최저값 계산
#1~26까지 이전값을 불러와 최고값 최저값 계산
#2~27까지 이전값을 불러와 최고값 최저값 계산
for cnt = 0 to 25{
if HH[cnt] > HV Then
HV = HH[cnt];
if LL[cnt] < LV Then
LV = LL[cnt];
if HH[cnt+1] > HV Then
HV = HH[cnt+1];
if LL[cnt+1] < LV Then
LV = LL[cnt+1];
if HH[cnt+2] > HV Then
HV = HH[cnt+2];
if LL[cnt+2] < LV Then
LV = LL[cnt+2];
}
#0~25개까지의 최고값과 최저값의 평균
var1 = (HV+LV)/2;
#1~26개까지의 최고값과 최저값의 평균
var2 = (HV1+LV1)/2;
#2~27개까지의 최고값과 최저값의 평균
var3 = (HV2+LV2)/2;
#Etime이 true일때
if Etime == true then{
#무포지션이고
#현재 30분간 종가가 var1보다 크고
#직전 30분간 종가는 var2보다 작고
#전전 30분간 종가는 var3보다 작고
#현재 종가가 당일저가+0.5이상이면 다음봉 시가에 매수
if MarketPosition == 0 and CC[0] > var1 and CC[1] < var2 and CC[2] < var3 and C >= daylow+0.5 Then
buy("b",AtMarket);
#매수진입후 종가가 진입이후 최고가-0.5보다 작고 이평 데드발생하면 다음봉 시가에 청산
if MarketPosition == 1 and c <= highest(H,BarsSinceEntry)-0.5 and CrossDown(mav1,mav2) Then
ExitLong("bx",AtMarket);
}
}
#xtime이 되면 Etime은 false
if stime == Xtime or (stime > Xtime and stime[1] < Xtime) Then{
Etime = false;
ExitLong();
}
즐거운 하루되세요
> 통큰베팅 님이 쓴 글입니다.
> 제목 : 함수각주요청(11-1)
> 안녕하세요?
아래 함수의 각 구문 의미가 어떤 것인지 // 요청드립니다.
아울러 스크립트의 논리상 문제가 없는지도 검토부탁드립니다.
------------------------------------------------------------------------------------
var : entry1(0);
var : ho1(0),OL1(0),HL1(0);
var : maho1(0),maOL1(0),maHL1(0);
var : cnt1(0),sumho1(0),sumOL1(0),sumHL1(0);
var : EntryCnt1(0);
var : V1(0),V2(0),V3(0),V4(0),V5(0);
var : V6(0),V7(0),V8(0),V9(0),V10(0);
if bdate != bdate[1] Then
entry1 = 0;
if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then
entry1 = entry1+1;
ho1 = Dayhigh-Dayopen;
OL1 = DayOpen-DayLow;
HL1 = DayHigh-DayLow;
sumho1 = 0;
sumOL1 = 0;
sumHL1 = 0;
for cnt1 = 1 to 10{
sumho1 = sumho1 + (dayhigh(cnt1)-dayopen(cnt1));
sumOL1 = sumOL1 + (DayOpen(cnt1)-DayLow(cnt1));
sumHL1 = sumHL1 + (DayHigh(cnt1)-DayLow(cnt1));
}
maho1 = sumho1/10;
maOL1 = sumOL1/10;
maHL1 = sumHL1/10;
V1 = dayopen(0)+maho1;
V2 = DayOpen(0)-maOL1;
V3 = DayOpen(0)+maHL1;
V4 = DayOpen(0)-maHL1;
V5 = NthMaxList(1,V1,V2,V3,V4);
V6 = NthMaxList(2,V1,V2,V3,V4);
V7 = NthMaxList(3,V1,V2,V3,V4);
V8 = NthMaxList(4,V1,V2,V3,V4);
if MarketPosition == 0 and entry1 == 0 Then{
sell("s",AtStop,V6);
}
if MarketPosition == -1 and IsEntryName("s") == true Then{
ExitShort("sp",atlimit,V7);
ExitShort("sl",AtStop,V5);
}
var : TF(0);
var : Xtime(0), Etime(false),cnt(0),mav1(0),mav2(0);
var : HV(0),LV(0),HV1(0),LV1(0),HV2(0),LV2(0);
Array : HH[50](0),LL[50](0),CC[50](0);
mav1 = ma(c,5);
mav2 = ma(C,20);
TF = TimeToMinutes(stime)%30;
if Bdate != Bdate[1] Then{
Etime = true;
if stime >= 090000 Then
Xtime = 050000;
Else
Xtime = 060000;
}
if Bdate != Bdate[1] or (TF < TF[1] and stime > stime[1]) or date != date[1] Then{
HH[0] = H;
LL[0] = L;
for cnt = 1 to 49{
HH[cnt] = HH[cnt-1][1];
LL[cnt] = LL[cnt-1][1];
CC[cnt] = CC[cnt-1][1];
}
}
if H > HH[0] Then
HH[0] = H;
if L < LL[0] Then
LL[0] = L;
CC[0] = C;
if HH[25+2] > 0 Then{
HV = HH[0];
LV = LL[0];
HV1 = HH[1];
LV1 = LL[1];
HV2 = HH[2];
LV2 = LL[2];
for cnt = 0 to 25{
if HH[cnt] > HV Then
HV = HH[cnt];
if LL[cnt] < LV Then
LV = LL[cnt];
if HH[cnt+1] > HV Then
HV = HH[cnt+1];
if LL[cnt+1] < LV Then
LV = LL[cnt+1];
if HH[cnt+2] > HV Then
HV = HH[cnt+2];
if LL[cnt+2] < LV Then
LV = LL[cnt+2];
}
var1 = (HV+LV)/2;
var2 = (HV1+LV1)/2;
var3 = (HV2+LV2)/2;
if Etime == true then{
if MarketPosition == 0 and CC[0] > var1 and CC[1] < var2 and CC[2] < var3 and C >= daylow+0.5 Then
buy("b",AtMarket);
if MarketPosition == 1 and c <= highest(H,BarsSinceEntry)-0.5 and CrossDown(mav1,mav2) Then
ExitLong("bx",AtMarket);
}
}
if stime == Xtime or (stime > Xtime and stime[1] < Xtime) Then{
Etime = false;
ExitLong();
}
다음글
이전글