첨부 이미지
그림1
해외선물 나스닥 1분봉 기준입니다
사진에 보시는것처럼
매주 월요일마다 진입과 청산이 안되고요
휴장다음날 또한 진입과 청산이 안되네요
한번 돌려보시고 수식 수정 부탁드립니다
//써머타임 변수
var : Summer(False),Year(0);
var : V1(0),V2(0),V3(0),V4(0);
var: Tcond(False);
//써머타임 변수
input: p(20);
var1 = ma(c,20);
// 써머타임
if sdate != sdate[1] Then
{
Year = Floor(sdate/10000);
V1 = (10000 * Year) + (100 * 3) + 1;
V2 = 15 - dayofweek(v1); // 3월 두번째 일요일 날짜
v3 = (10000 * Year) + (100 * 11) + 1;
v4 = 8 - dayofweek(v3); // 11월 첫번째 일요일 날짜
Summer = (sdate > (10000 * Year) + (100 * 3) + v2) And (sdate < (10000 * Year) + (100 * 11) + v4);
}
// 써머타임
// 써머타임 3월~11월
if Summer == true then{
if (sdate != sdate[1] and stime >= 070000) or
(sdate == sdate[1] and stime >= 070000 and stime[1] < 070000) then
{
Tcond = true;
}
if sdate == 20190419 then { //써머 휴일청산
if (sdate != sdate[1] and stime >= 054500) or
(sdate == sdate[1] and stime >= 054500 and stime[1] < 054500) then
{
Tcond = false;
if MarketPosition == 1 Then
ExitLong("써머휴일매수청");
if MarketPosition == -1 Then
ExitShort("써머휴일매도청");
}
}
else if sdate == 20190528 or sdate == 20190704 or sdate == 20190705 or sdate == 20190903 then { //써머 조기장
if (sdate != sdate[1] and stime >= 014500) or
(sdate == sdate[1] and stime >= 014500 and stime[1] < 014500) then
{
Tcond = false;
if MarketPosition == 1 Then
ExitLong("써머조기장매수청");
if MarketPosition == -1 Then
ExitShort("써머조기장매도청");
}
}
else {
if (sdate != sdate[1] and stime >= 054500 ) or
(sdate == sdate[1] and stime >= 054500 and stime[1] < 054500 ) then
{
Tcond = false;
if MarketPosition == 1 Then
ExitLong("써머매수청");
if MarketPosition == -1 Then
ExitShort("써머매도청");
}
}
}
Else { //11월~3월까지
if (sdate != sdate[1] and stime >= 080000) or
(sdate == sdate[1] and stime >= 080000 and stime[1] < 080000) then
{
Tcond = true;
}
if sdate == 20190101 or sdate == 20200101 then { //노써머 휴일청산
if (sdate != sdate[1] and stime >= 064500) or
(sdate == sdate[1] and stime >= 064500 and stime[1] < 064500) then
{
Tcond = false;
if MarketPosition == 1 Then
ExitLong("노써머휴일매수청");
if MarketPosition == -1 Then
ExitShort("노써머휴일매도청");
}
}
else if sdate == 20190122 or sdate == 20190219 or sdate == 20191129 or sdate == 20191130 or sdate == 20191225
or sdate == 20200121 or sdate == 20200218 then { //노써머 조기장
if (sdate != sdate[1] and stime >= 024500) or
(sdate == sdate[1] and stime >= 024500 and stime[1] < 024500) then
{
Tcond = false;
if MarketPosition == 1 Then
ExitLong("노써머조기장매수청");
if MarketPosition == -1 Then
ExitShort("노써머조기장매도청");
}
}
else{
if (sdate != sdate[1] and stime >= 064500 ) or
(sdate == sdate[1] and stime >= 064500 and stime[1] < 064500 ) then
{
Tcond = false;
if MarketPosition == 1 Then
ExitLong("노써머매수청");
if MarketPosition == -1 Then
ExitShort("노써머매도청");
}
}
}
// 써머타임
//--------- 진입 로직 ---------//
If Tcond == true Then
{
if CrossUp(c,var1) Then
buy();
if CrossDown(c,var1) Then
sell();
}
답변 1
예스스탁
예스스탁 답변
2020-02-26 11:40:57
안녕하세요
예스스탁입니다.
Tcond가 true 와 false 조건이 동시 충족되는 경우가 있습니다.
예를 들어 월요일의 경우 날짜 변경되고 첫 봉이 8시이므로
sdate != sdate[1] and stime >= 070000와
sdate != sdate[1] and stime >= 054500 같은 조건이 동시충족이 되고
수식은 위에서 아래로 읽어 내려 가므로 최종적으로 false 가 저장되어
이런날은 신호가 발생되지 않습니다.
true가 되는 조건을 false보다 아랫줄에 작성하시면 됩니다.
//써머타임 변수
var : Summer(False),Year(0);
var : V1(0),V2(0),V3(0),V4(0);
var: Tcond(False);
//써머타임 변수
input: p(20);
var1 = ma(c,20);
// 써머타임
if sdate != sdate[1] Then
{
Year = Floor(sdate/10000);
V1 = (10000 * Year) + (100 * 3) + 1;
V2 = 15 - dayofweek(v1); // 3월 두번째 일요일 날짜
v3 = (10000 * Year) + (100 * 11) + 1;
v4 = 8 - dayofweek(v3); // 11월 첫번째 일요일 날짜
Summer = (sdate > (10000 * Year) + (100 * 3) + v2) And (sdate < (10000 * Year) + (100 * 11) + v4);
}
// 써머타임
// 써머타임 3월~11월
if Summer == true then
{
if sdate == 20190419 then //써머 휴일청산
{
if (sdate != sdate[1] and stime >= 054500) or
(sdate == sdate[1] and stime >= 054500 and stime[1] < 054500) then
{
Tcond = false;
if MarketPosition == 1 Then
ExitLong("써머휴일매수청");
if MarketPosition == -1 Then
ExitShort("써머휴일매도청");
}
}
else if sdate == 20190528 or sdate == 20190704 or sdate == 20190705 or sdate == 20190903 then //써머 조기장
{
if (sdate != sdate[1] and stime >= 014500) or
(sdate == sdate[1] and stime >= 014500 and stime[1] < 014500) then
{
Tcond = false;
if MarketPosition == 1 Then
ExitLong("써머조기장매수청");
if MarketPosition == -1 Then
ExitShort("써머조기장매도청");
}
}
else
{
if (sdate != sdate[1] and stime >= 054500 ) or
(sdate == sdate[1] and stime >= 054500 and stime[1] < 054500 ) then
{
Tcond = false;
if MarketPosition == 1 Then
ExitLong("써머매수청");
if MarketPosition == -1 Then
ExitShort("써머매도청");
}
}
if (sdate != sdate[1] and stime >= 070000) or
(sdate == sdate[1] and stime >= 070000 and stime[1] < 070000) then
{
Tcond = true;
}
}
Else //11월~3월까지
{
if sdate == 20190101 or sdate == 20200101 then //노써머 휴일청산
{
if (sdate != sdate[1] and stime >= 064500) or
(sdate == sdate[1] and stime >= 064500 and stime[1] < 064500) then
{
Tcond = false;
if MarketPosition == 1 Then
ExitLong("노써머휴일매수청");
if MarketPosition == -1 Then
ExitShort("노써머휴일매도청");
}
}
else if sdate == 20190122 or sdate == 20190219 or sdate == 20191129 or sdate == 20191130 or sdate == 20191225
or sdate == 20200121 or sdate == 20200218 then //노써머 조기장
{
if (sdate != sdate[1] and stime >= 024500) or
(sdate == sdate[1] and stime >= 024500 and stime[1] < 024500) then
{
Tcond = false;
if MarketPosition == 1 Then
ExitLong("노써머조기장매수청");
if MarketPosition == -1 Then
ExitShort("노써머조기장매도청");
}
}
else
{
if (sdate != sdate[1] and stime >= 064500 ) or
(sdate == sdate[1] and stime >= 064500 and stime[1] < 064500 ) then
{
Tcond = false;
if MarketPosition == 1 Then
ExitLong("노써머매수청");
if MarketPosition == -1 Then
ExitShort("노써머매도청");
}
}
if (sdate != sdate[1] and stime >= 080000) or
(sdate == sdate[1] and stime >= 080000 and stime[1] < 080000) then
{
Tcond = true;
}
}
// 써머타임
//--------- 진입 로직 ---------//
If Tcond == true Then
{
if CrossUp(c,var1) Then
buy();
if CrossDown(c,var1) Then
sell();
}
즐거운 하루되세요
> 추우세추우종 님이 쓴 글입니다.
> 제목 : 수식 수정 부탁드려요~
> 해외선물 나스닥 1분봉 기준입니다
사진에 보시는것처럼
매주 월요일마다 진입과 청산이 안되고요
휴장다음날 또한 진입과 청산이 안되네요
한번 돌려보시고 수식 수정 부탁드립니다
//써머타임 변수
var : Summer(False),Year(0);
var : V1(0),V2(0),V3(0),V4(0);
var: Tcond(False);
//써머타임 변수
input: p(20);
var1 = ma(c,20);
// 써머타임
if sdate != sdate[1] Then
{
Year = Floor(sdate/10000);
V1 = (10000 * Year) + (100 * 3) + 1;
V2 = 15 - dayofweek(v1); // 3월 두번째 일요일 날짜
v3 = (10000 * Year) + (100 * 11) + 1;
v4 = 8 - dayofweek(v3); // 11월 첫번째 일요일 날짜
Summer = (sdate > (10000 * Year) + (100 * 3) + v2) And (sdate < (10000 * Year) + (100 * 11) + v4);
}
// 써머타임
// 써머타임 3월~11월
if Summer == true then{
if (sdate != sdate[1] and stime >= 070000) or
(sdate == sdate[1] and stime >= 070000 and stime[1] < 070000) then
{
Tcond = true;
}
if sdate == 20190419 then { //써머 휴일청산
if (sdate != sdate[1] and stime >= 054500) or
(sdate == sdate[1] and stime >= 054500 and stime[1] < 054500) then
{
Tcond = false;
if MarketPosition == 1 Then
ExitLong("써머휴일매수청");
if MarketPosition == -1 Then
ExitShort("써머휴일매도청");
}
}
else if sdate == 20190528 or sdate == 20190704 or sdate == 20190705 or sdate == 20190903 then { //써머 조기장
if (sdate != sdate[1] and stime >= 014500) or
(sdate == sdate[1] and stime >= 014500 and stime[1] < 014500) then
{
Tcond = false;
if MarketPosition == 1 Then
ExitLong("써머조기장매수청");
if MarketPosition == -1 Then
ExitShort("써머조기장매도청");
}
}
else {
if (sdate != sdate[1] and stime >= 054500 ) or
(sdate == sdate[1] and stime >= 054500 and stime[1] < 054500 ) then
{
Tcond = false;
if MarketPosition == 1 Then
ExitLong("써머매수청");
if MarketPosition == -1 Then
ExitShort("써머매도청");
}
}
}
Else { //11월~3월까지
if (sdate != sdate[1] and stime >= 080000) or
(sdate == sdate[1] and stime >= 080000 and stime[1] < 080000) then
{
Tcond = true;
}
if sdate == 20190101 or sdate == 20200101 then { //노써머 휴일청산
if (sdate != sdate[1] and stime >= 064500) or
(sdate == sdate[1] and stime >= 064500 and stime[1] < 064500) then
{
Tcond = false;
if MarketPosition == 1 Then
ExitLong("노써머휴일매수청");
if MarketPosition == -1 Then
ExitShort("노써머휴일매도청");
}
}
else if sdate == 20190122 or sdate == 20190219 or sdate == 20191129 or sdate == 20191130 or sdate == 20191225
or sdate == 20200121 or sdate == 20200218 then { //노써머 조기장
if (sdate != sdate[1] and stime >= 024500) or
(sdate == sdate[1] and stime >= 024500 and stime[1] < 024500) then
{
Tcond = false;
if MarketPosition == 1 Then
ExitLong("노써머조기장매수청");
if MarketPosition == -1 Then
ExitShort("노써머조기장매도청");
}
}
else{
if (sdate != sdate[1] and stime >= 064500 ) or
(sdate == sdate[1] and stime >= 064500 and stime[1] < 064500 ) then
{
Tcond = false;
if MarketPosition == 1 Then
ExitLong("노써머매수청");
if MarketPosition == -1 Then
ExitShort("노써머매도청");
}
}
}
// 써머타임
//--------- 진입 로직 ---------//
If Tcond == true Then
{
if CrossUp(c,var1) Then
buy();
if CrossDown(c,var1) Then
sell();
}