예스스탁
예스스탁 답변
2020-04-02 15:12:30
안녕하세요
예스스탁입니다.
var : cnt(0);
var : sum1(0),sum2(0),sum3(0),sum4(0),sum5(0);
var : v1(0),v2(0),v3(0),v4(0),v5(0),v6(0),v7(0),v8(0),v9(0),v10(0);
var : h1(0),l1(0);
var : h2(0),l2(0);
var : h3(0),l3(0);
var : h4(0),l4(0);
var : h5(0),l5(0);
var : Summer(False);
var : S1(0),S2(0),E1(0),E2(0),OpenTime(0),entry(0);
if sdate != sdate[1] Then
{
S1 = Floor(sdate/10000)*10000+0300;
E1 = Floor(sdate/10000)*10000+1100;
var1 = 0;
var2 = 0;
for cnt = 1 to 31
{
if DayOfWeek(S1+cnt) == 0 Then
{
var1 = var1+1;
if var1 == 2 then
{
S2 = S1+cnt;
}
}
if DayOfWeek(E1+cnt) == 0 and cnt <= 31 Then
{
var2 = var2+1;
if var2 == 1 then
{
E2 = E1+cnt;
}
}
}
Summer = sdate > S2 And sdate < E2;
if Summer == true then
OpenTime = 160000;
Else
OpenTime = 170000;
}
sum1 = 0;
sum2 = 0;
sum3 = 0;
sum4 = 0;
sum5 = 0;
h1 = 0;
l1 = 0;
for cnt = 1 to 12
{
sum1 = sum1 + (DayHigh(cnt)-dayopen(cnt));
sum2 = sum2 + (DayOpen(cnt)-DayLow(cnt));
sum3 = sum3 + abs(DayClose(cnt+1)-DayHigh(cnt));
sum4 = sum4 + abs(DayClose(cnt+1)-DayLow(cnt));
sum5 = sum5 + abs(DayClose(cnt+1)-dayopen(cnt));
if h1 == 0 or (h1 > 0 and DayHigh(cnt)-dayopen(cnt) > h1) then
h1 = DayHigh(cnt)-dayopen(cnt);
if l1 == 0 or (l1 > 0 and DayHigh(cnt)-dayopen(cnt) < l1) then
l1 = DayHigh(cnt)-dayopen(cnt);
if h2 == 0 or (h2 > 0 and DayOpen(cnt)-DayLow(cnt) > h2) then
h2 = DayOpen(cnt)-DayLow(cnt);
if l2 == 0 or (l2 > 0 and DayOpen(cnt)-DayLow(cnt) < l2) then
l2 = DayOpen(cnt)-DayLow(cnt);
if h3 == 0 or (h3 > 0 and abs(DayClose(cnt+1)-DayHigh(cnt)) > h3) then
h3 = abs(DayClose(cnt+1)-DayHigh(cnt));
if l3 == 0 or (l3 > 0 and abs(DayClose(cnt+1)-DayHigh(cnt)) < l3) then
l3 = abs(DayClose(cnt+1)-DayHigh(cnt));
if h4 == 0 or (h4 > 0 and abs(DayClose(cnt+1)-DayLow(cnt)) > h4) then
h4 = abs(DayClose(cnt+1)-DayLow(cnt));
if l4 == 0 or (l4 > 0 and abs(DayClose(cnt+1)-DayLow(cnt)) < l4) then
l4 = abs(DayClose(cnt+1)-DayLow(cnt));
if h5 == 0 or (h5 > 0 and abs(DayClose(cnt+1)-dayopen(cnt)) > h5) then
h5 = abs(DayClose(cnt+1)-dayopen(cnt));
if l5 == 0 or (l5 > 0 and abs(DayClose(cnt+1)-dayopen(cnt)) < l5) then
l5 = abs(DayClose(cnt+1)-dayopen(cnt));
}
v6 = (sum1-h1-l1)/10;
v7 = (sum2-h2-l2)/10;
v8 = (sum3-h3-l3)/10;
v9 = (sum4-h4-l4)/10;
v10 = (sum5-h5-l5)/10;
if bdate != bdate[1] Then
{
entry = 0;
SetStopEndofday(0);
}
if (sdate != sdate[1] and stime >= OpenTime) or
(sdate == sdate[1] and stime >= OpenTime and stime[1] < OpenTime) Then
entry = 0;
if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then
entry = entry+1;
value1 = NthMaxList(3,dayopen+v6,dayopen-v7,DayClose(1)+v8,DayVolume(1)-v9,iff(dayopen>DayClose(1),DayClose(1)+v10,DayClose(1)-v10));
if entry < 1 then
{
if crossup(c,value1) Then
buy("b",AtMarket);
if CrossDown(c,value1) Then
sell("s",AtMarket);
}
if sdate != sdate[1] Then
SetStopEndofday(033000);
즐거운 하루되세요
> 흰둥이아빠 님이 쓴 글입니다.
> 제목 : 함수요청
> 안녕하세요?
함수요청드립니다.
상품의 주기: 크루드 오일 5분봉
매수: 힘의 균형대 돌파 완성 익봉 시가에 진입
매도: 힘의 균형대 이탈 완성 익봉 시가에 진입
16시(써머타임 해지시 17시)를 기준으로 16시(써머타임 해지시 17시) 이전에 진입기준으로 최대 1번만 생성하고, 다시 16시(써머타임 해지시 17시) 이후에 진입기준으로 최대 1번만 생성하되 3시 30분(써머타임 해지시 4시 30분에 강제청산)
힘의 균형대는 v1~v5까지 변수를 산출하여 내림차순 했을 경우 3번째 값
v1= 당일 시가에 v6을 더한 값
v2= 당일 시가에 v7을 뺀 값
v3= 전일 종가에 v8을 더한 값
v4= 전일 종가에 v9을 뺀 값
v5= 당일 시가 > 전일 종가이면 전일 종가에 v10을 더하고, 당일 시가 < 전일종가이면 전일 종가에 v10을 뺀 값
v6= 과거 12영업일 동안 일별 (고가-시가) 값의 최대값과 최소값을 제외한 10일의 평균값
v7= 과거 12영업일 동안 일별 (시가-저가) 값의 최대값과 최소값을 제외한 10일의 평균값
v8= 과거 12영업일 동안 일별 abs(종가[1]-고가) 값의 최대값과 최소값을 제외한 10일의 평균값
v9= 과거 12영업일 동안 일별 abs(종가[1]-저가) 값의 최대값과 최소값을 제외한 10일의 평균값
v10= 과거 12영업일 동안 일별 (종가[1]-시가) 값의 최대값과 최소값을 제외한 절대값의 10일
의 평균값