커뮤니티
문의드립니다.
2019-01-23 10:35:12
148
글번호 125501
도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다.
1. 기타
어제 만들어주신 시스템을 약간 수정했는데요. 일목기간이란 게 선행스팬 수평 이동이라고 보시면 되고 수직퍼센트가 수직 이동이라고 보시면 됩니다. 그런데 일목균형표 기본으로 제공돼 있는 거로 실제 모의 매매를 몇번 해봤는데요. 수평 이동 이건 그려진 것과 동일하게 문제없이 청산이 되는데요.
저 수직퍼센트 외부변수를 추가해서 수직 이동과 관련된 수식을 추가하자 이상하게 일목균형표 선행스팬과 안 맞습니다. 가령 설정창에서 0.04%인 선행스팬을 그린 뒤 시스템에서도 0.04% 더한 값을 추가해줬는데요. 그 부분에서 청산이 안됩니다. 뭐가 잘못된 걸까요. 값을 찍어보진 않았지만 설정창에서 쓴 값(0.04%)보다 더 큰 값이 들어가는 것 같습니다.
input :
진입시간(100000),
진입날짜(20190122),
수량(1),
청산방법(0),
일목기간(15),
수직퍼센트(0.1)
;
var : 전환선(0),기준선(0),후행스팬(0),선행스팬1(0),선행스팬2(0),구름상단(0),구름하단(0);
전환선 = (highest(H,9)+lowest(L,9))/2;
기준선 = (highest(H,26)+lowest(L,26))/2;
후행스팬 = C;
선행스팬1 = (전환선+기준선)/2;
선행스팬2 = (highest(H,52)+lowest(L,52))/2;
var1 = max(선행스팬1[일목기간],선행스팬2[일목기간]);
구름상단 = max(선행스팬1[일목기간],선행스팬2[일목기간]) + (var1 * 수직퍼센트);
구름하단 = min(선행스팬1[일목기간],선행스팬2[일목기간]) + (var1 * 수직퍼센트);
if sdate == 진입날짜 and
((sdate != sdate[1] and stime >= 진입시간) or
(sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간)) Then
{
if 청산방법 == 0 Then
buy("b",OnClose,def,수량);
if 청산방법 == 1 Then
sell("s",OnClose,def,수량);
}
if sdate == 진입날짜 and
((sdate != sdate[1] and stime >=진입시간 + 100) or
(sdate == sdate[1] and stime >= 진입시간+100 and stime[1] < 진입시간 + 100)) Then
Condition1 = true;
if Condition1 == true then
{
if MarketPosition == 1 Then
ExitLong("bx",AtStop,구름상단);
if MarketPosition == -1 Then
ExitShort("sx",AtStop,구름하단);
}
2. 해선 이 수식 왜 이렇게 쓰는 지 좀 설명 좀 부탁드립니다.
if (sdate != sdate[1] and stime >= 진입시간) or
(sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간) then
{
3. 기타
이거 지표가 안나오는데 이유를 모르겠습니다. S&P emini 30분봉
아래 변수로 실험해봤습니다.
input : starttime(70000),endtime(200000);
var : Tcond(false),hh(0),ll(0);
if (sdate != sdate[1] and stime >= starttime) or
(sdate == sdate[1] and stime >= starttime and stime[1] < starttime) then
{
Tcond = true;
hh = h;
ll = l;
}
if (sdate != sdate[1] and stime >= endtime) or
(sdate == sdate[1] and stime >= endtime and stime[1] < endtime) then
{
Tcond = false;
}
if Tcond == true then
{
if h > hh Then
hh = h;
if l < ll Then
ll = l;
var1 = (hh-ll)/PriceScale;
}
답변 1
예스스탁 예스스탁 답변
2019-01-24 13:53:45
안녕하세요
예스스탁입니다.
1.
기존식은 0.01이 1%입니다.
100으로 나눠 되게 수정했습니다.
input :
진입시간(100000),
진입날짜(20190122),
수량(1),
청산방법(0),
일목기간(15),
수직퍼센트(0.1)
;
var : 전환선(0),기준선(0),후행스팬(0),선행스팬1(0),선행스팬2(0),구름상단(0),구름하단(0);
전환선 = (highest(H,9)+lowest(L,9))/2;
기준선 = (highest(H,26)+lowest(L,26))/2;
후행스팬 = C;
선행스팬1 = (전환선+기준선)/2;
선행스팬2 = (highest(H,52)+lowest(L,52))/2;
var1 = max(선행스팬1[일목기간],선행스팬2[일목기간]);
var2 = Min(선행스팬1[일목기간],선행스팬2[일목기간]);
구름상단 = max(선행스팬1[일목기간],선행스팬2[일목기간]) + (var1 * (수직퍼센트/100));
구름하단 = min(선행스팬1[일목기간],선행스팬2[일목기간]) + (var2 * (수직퍼센트/100));
if sdate == 진입날짜 and
((sdate != sdate[1] and stime >= 진입시간) or
(sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간)) Then
{
if 청산방법 == 0 Then
buy("b",OnClose,def,수량);
if 청산방법 == 1 Then
sell("s",OnClose,def,수량);
}
if sdate == 진입날짜 and
((sdate != sdate[1] and stime >=진입시간 + 100) or
(sdate == sdate[1] and stime >= 진입시간+100 and stime[1] < 진입시간 + 100)) Then
Condition1 = true;
if Condition1 == true then
{
if MarketPosition == 1 Then
ExitLong("bx",AtStop,구름상단);
if MarketPosition == -1 Then
ExitShort("sx",AtStop,구름하단);
}
2
해당 수식은 지정한 시간이후의 첫봉을 의미합니다.
거래가 없으면 지정한 시간에 봉이 없을 수 있으므로
지정한 시간이후의 첫봉을 지칭하기 위함입니다.
해선만 사용되는 것은 아닙니다. 모든 종목에 시간을 지정할 때 사용하는 표현입니다.
3
계산식만 있습니다. plot명령어 추가하셔야 합니다.
input : starttime(70000),endtime(200000);
var : Tcond(false),hh(0),ll(0);
if (sdate != sdate[1] and stime >= starttime) or
(sdate == sdate[1] and stime >= starttime and stime[1] < starttime) then
{
Tcond = true;
hh = h;
ll = l;
}
if (sdate != sdate[1] and stime >= endtime) or
(sdate == sdate[1] and stime >= endtime and stime[1] < endtime) then
{
Tcond = false;
}
if Tcond == true then
{
if h > hh Then
hh = h;
if l < ll Then
ll = l;
var1 = (hh-ll)/PriceScale;
}
plot1(var1);
즐거운 하루되세요
> 잡다백수 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다.
1. 기타
어제 만들어주신 시스템을 약간 수정했는데요. 일목기간이란 게 선행스팬 수평 이동이라고 보시면 되고 수직퍼센트가 수직 이동이라고 보시면 됩니다. 그런데 일목균형표 기본으로 제공돼 있는 거로 실제 모의 매매를 몇번 해봤는데요. 수평 이동 이건 그려진 것과 동일하게 문제없이 청산이 되는데요.
저 수직퍼센트 외부변수를 추가해서 수직 이동과 관련된 수식을 추가하자 이상하게 일목균형표 선행스팬과 안 맞습니다. 가령 설정창에서 0.04%인 선행스팬을 그린 뒤 시스템에서도 0.04% 더한 값을 추가해줬는데요. 그 부분에서 청산이 안됩니다. 뭐가 잘못된 걸까요. 값을 찍어보진 않았지만 설정창에서 쓴 값(0.04%)보다 더 큰 값이 들어가는 것 같습니다.
input :
진입시간(100000),
진입날짜(20190122),
수량(1),
청산방법(0),
일목기간(15),
수직퍼센트(0.1)
;
var : 전환선(0),기준선(0),후행스팬(0),선행스팬1(0),선행스팬2(0),구름상단(0),구름하단(0);
전환선 = (highest(H,9)+lowest(L,9))/2;
기준선 = (highest(H,26)+lowest(L,26))/2;
후행스팬 = C;
선행스팬1 = (전환선+기준선)/2;
선행스팬2 = (highest(H,52)+lowest(L,52))/2;
var1 = max(선행스팬1[일목기간],선행스팬2[일목기간]);
구름상단 = max(선행스팬1[일목기간],선행스팬2[일목기간]) + (var1 * 수직퍼센트);
구름하단 = min(선행스팬1[일목기간],선행스팬2[일목기간]) + (var1 * 수직퍼센트);
if sdate == 진입날짜 and
((sdate != sdate[1] and stime >= 진입시간) or
(sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간)) Then
{
if 청산방법 == 0 Then
buy("b",OnClose,def,수량);
if 청산방법 == 1 Then
sell("s",OnClose,def,수량);
}
if sdate == 진입날짜 and
((sdate != sdate[1] and stime >=진입시간 + 100) or
(sdate == sdate[1] and stime >= 진입시간+100 and stime[1] < 진입시간 + 100)) Then
Condition1 = true;
if Condition1 == true then
{
if MarketPosition == 1 Then
ExitLong("bx",AtStop,구름상단);
if MarketPosition == -1 Then
ExitShort("sx",AtStop,구름하단);
}
2. 해선 이 수식 왜 이렇게 쓰는 지 좀 설명 좀 부탁드립니다.
if (sdate != sdate[1] and stime >= 진입시간) or
(sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간) then
{
3. 기타
이거 지표가 안나오는데 이유를 모르겠습니다. S&P emini 30분봉
아래 변수로 실험해봤습니다.
input : starttime(70000),endtime(200000);
var : Tcond(false),hh(0),ll(0);
if (sdate != sdate[1] and stime >= starttime) or
(sdate == sdate[1] and stime >= starttime and stime[1] < starttime) then
{
Tcond = true;
hh = h;
ll = l;
}
if (sdate != sdate[1] and stime >= endtime) or
(sdate == sdate[1] and stime >= endtime and stime[1] < endtime) then
{
Tcond = false;
}
if Tcond == true then
{
if h > hh Then
hh = h;
if l < ll Then
ll = l;
var1 = (hh-ll)/PriceScale;
}
다음글
이전글