커뮤니티
재문의 드립니다.
2013-07-31 12:06:00
157
글번호 65969
답변감사드립니다.
아래 답변내용에서,
if crossup(ma21,ma22) Then buy("매수30"); 와 같이 이평선의 Cross를 이용하는 경우에는
문제가 없으나, if ma21 > ma22 Then buy("매수30")과 같이 정배열을 이용하는 전략의
경우 "매도3"번 진입직후 매수30이 진입하는 문제가 생기네요.
"매도3"번으로 진입하면 손절익절종가청산후 재매수가 되어야 하는데 매수30이
같은봉에서 발생하였습니다.
이 문제를 해결하기 위해 수식을 수정 부탁드립니다.
--------------------------------------------------------------------
안녕하세요
예스스탁입니다.
기본종목은 3분봉, 참조데이터(ata2)로 30분봉 데이터를 추가하신후에
식을 적용하셔야 합니다.
당일 청산후에 바로 이전 30분봉 진입포지션으로 진입해야 하므로
당일 청산함수를 사용할수 없어 if문으로 15시봉 완성시에
청산후 진입하게 작성했습니다.
#주종목 3분
#참조종목 data2 30분
var : ma11(0,data2),ma12(0,data2),ma21(0,data2),ma22(0,data2),cond(false);
ma11 = data1(ma(c,5));
ma12 = data1(ma(c,20));
ma21 = data2(ma(c,5));
ma22 = data2(ma(c,20));
if data1(date != date[1]) Then
cond = false;
if MarketPosition != 0 and (IsEntryName("매수3") or IsEntryName("매도3")) Then
Cond = true;
if crossup(ma21,ma22) Then
buy("매수30");
if CrossDown(ma21,ma22) Then
sell("매도30");
#30분봉 전략이 진입되어 있을 경우 반대시호시 하루에 한번 발생
if MarketPosition == 1 and IsEntryName("매수30") == True Then{
if CrossDown(ma11,ma12) and cond == false Then
sell("매도3");
}
if MarketPosition == -1 and IsEntryName("매도30") == True Then{
if CrossUp(ma22,ma12) and cond == false Then
Buy("매수3");
}
#매수3 진입일때만 발생
#매수청산 후에 매도로 포지션 진입
if MarketPosition == 1 Then{
if isEntryName("매수3") == true Then{
Sell("BL-sell",AtStop,EntryPrice-1);
Sell("BP-Sell",AtLimit,EntryPrice+1);
if stime == 150000 Then
sell("Bx-sell");
}
}
#청산후 기존 30분봉 포지션으로 진입
#매도3 진입일때만 발생
#매도청산 후에 매수로 포지션 진입
if MarketPosition == -1 Then{
if IsEntryName("매도3") == true Then{
buy("SL-buy",AtStop,EntryPrice+1);
buy("SP-buy",AtLimit,EntryPrice-1);
if stime == 150000 Then
buy("Sx-buy");
}
}
즐거운 하루되세요
> 착한이 님이 쓴 글입니다.
> 제목 : 전략 문의드립니다.
> 수고하십니다.
포지션전략과 데이전략을 합친 수식을 부탁드립니다.
포지션전략은 30분봉에서 이동평균 5, 20선 교차시 매수 매도의 Reverse전략입니다.
데이전략은 3분봉에서 이동평균 5, 20선 교차시 매수 매도 하되, 손절, 익절, 및 당일청산이
있습니다.
데이전략은 포지션전략의 포지션과 반대신호가 나올 경우만 실행되며(당일1회), 손익절 및 당일청산이
완료되면 곧바로 포지션전략의 원래 포지션으로 진입한 후, OverNight합니다.
감사합니다.
답변 1
예스스탁 예스스탁 답변
2013-07-31 14:18:29
안녕하세요
예스스탁입니다.
if ma21 > ma22 and !(MarketPosition ==-1 and IsEntryName("매도3") == true) Then
buy("매수30");
if CrossDown(ma21,ma22) and !(MarketPosition == 1 and IsEntryName("매수3") == true) Then
sell("매도30");
위와 같이 작성해 주시면 됩니다.
매수30은 현재봉이 매도포지션이고 매도진입의 이름이 매도3만 아니면
ma21 > ma22일대 진입하라는 내용입니다.
매도30도 반대로 현재봉이 매수포지션이고 매도진입의 이름이 매수3만 아니면
진입하라는 내용이 됩니다.
!(조건)은 조건이 아니다라는 표현입니다.
아래는 수정한 식입니다.
#주종목 3분
#참조종목 data2 30분
var : ma11(0,data2),ma12(0,data2),ma21(0,data2),ma22(0,data2),cond(false);
ma11 = data1(ma(c,5));
ma12 = data1(ma(c,20));
ma21 = data2(ma(c,5));
ma22 = data2(ma(c,20));
if data1(date != date[1]) Then
cond = false;
if MarketPosition != 0 and (IsEntryName("매수3") or IsEntryName("매도3")) Then
Cond = true;
if ma21 > ma22 and !(MarketPosition ==-1 and IsEntryName("매도3") == true) Then
buy("매수30");
if CrossDown(ma21,ma22) and !(MarketPosition == 1 and IsEntryName("매수3") == true) Then
sell("매도30");
#30분봉 전략이 진입되어 있을 경우 반대시호시 하루에 한번 발생
if MarketPosition == 1 and IsEntryName("매수30") == True Then{
if CrossDown(ma11,ma12) and cond == false Then
sell("매도3");
}
if MarketPosition == -1 and IsEntryName("매도30") == True Then{
if CrossUp(ma22,ma12) and cond == false Then
Buy("매수3");
}
#매수3 진입일때만 발생
#매수청산 후에 매도로 포지션 진입
if MarketPosition == 1 Then{
if isEntryName("매수3") == true Then{
Sell("BL-sell",AtStop,EntryPrice-1);
Sell("BP-Sell",AtLimit,EntryPrice+1);
if stime == 150000 Then
sell("Bx-sell");
}
}
#청산후 기존 30분봉 포지션으로 진입
#매도3 진입일때만 발생
#매도청산 후에 매수로 포지션 진입
if MarketPosition == -1 Then{
if IsEntryName("매도3") == true Then{
buy("SL-buy",AtStop,EntryPrice+1);
buy("SP-buy",AtLimit,EntryPrice-1);
if stime == 150000 Then
buy("Sx-buy");
}
}
즐거운 하루되세요
> 착한이 님이 쓴 글입니다.
> 제목 : 재문의 드립니다.
> 답변감사드립니다.
아래 답변내용에서,
if crossup(ma21,ma22) Then buy("매수30"); 와 같이 이평선의 Cross를 이용하는 경우에는
문제가 없으나, if ma21 > ma22 Then buy("매수30")과 같이 정배열을 이용하는 전략의
경우 "매도3"번 진입직후 매수30이 진입하는 문제가 생기네요.
"매도3"번으로 진입하면 손절익절종가청산후 재매수가 되어야 하는데 매수30이
같은봉에서 발생하였습니다.
이 문제를 해결하기 위해 수식을 수정 부탁드립니다.
--------------------------------------------------------------------
안녕하세요
예스스탁입니다.
기본종목은 3분봉, 참조데이터(ata2)로 30분봉 데이터를 추가하신후에
식을 적용하셔야 합니다.
당일 청산후에 바로 이전 30분봉 진입포지션으로 진입해야 하므로
당일 청산함수를 사용할수 없어 if문으로 15시봉 완성시에
청산후 진입하게 작성했습니다.
#주종목 3분
#참조종목 data2 30분
var : ma11(0,data2),ma12(0,data2),ma21(0,data2),ma22(0,data2),cond(false);
ma11 = data1(ma(c,5));
ma12 = data1(ma(c,20));
ma21 = data2(ma(c,5));
ma22 = data2(ma(c,20));
if data1(date != date[1]) Then
cond = false;
if MarketPosition != 0 and (IsEntryName("매수3") or IsEntryName("매도3")) Then
Cond = true;
if crossup(ma21,ma22) Then
buy("매수30");
if CrossDown(ma21,ma22) Then
sell("매도30");
#30분봉 전략이 진입되어 있을 경우 반대시호시 하루에 한번 발생
if MarketPosition == 1 and IsEntryName("매수30") == True Then{
if CrossDown(ma11,ma12) and cond == false Then
sell("매도3");
}
if MarketPosition == -1 and IsEntryName("매도30") == True Then{
if CrossUp(ma22,ma12) and cond == false Then
Buy("매수3");
}
#매수3 진입일때만 발생
#매수청산 후에 매도로 포지션 진입
if MarketPosition == 1 Then{
if isEntryName("매수3") == true Then{
Sell("BL-sell",AtStop,EntryPrice-1);
Sell("BP-Sell",AtLimit,EntryPrice+1);
if stime == 150000 Then
sell("Bx-sell");
}
}
#청산후 기존 30분봉 포지션으로 진입
#매도3 진입일때만 발생
#매도청산 후에 매수로 포지션 진입
if MarketPosition == -1 Then{
if IsEntryName("매도3") == true Then{
buy("SL-buy",AtStop,EntryPrice+1);
buy("SP-buy",AtLimit,EntryPrice-1);
if stime == 150000 Then
buy("Sx-buy");
}
}
즐거운 하루되세요
> 착한이 님이 쓴 글입니다.
> 제목 : 전략 문의드립니다.
> 수고하십니다.
포지션전략과 데이전략을 합친 수식을 부탁드립니다.
포지션전략은 30분봉에서 이동평균 5, 20선 교차시 매수 매도의 Reverse전략입니다.
데이전략은 3분봉에서 이동평균 5, 20선 교차시 매수 매도 하되, 손절, 익절, 및 당일청산이
있습니다.
데이전략은 포지션전략의 포지션과 반대신호가 나올 경우만 실행되며(당일1회), 손익절 및 당일청산이
완료되면 곧바로 포지션전략의 원래 포지션으로 진입한 후, OverNight합니다.
감사합니다.
다음글