커뮤니티
부탁드려요.
2010-09-19 19:13:47
610
글번호 32417
1분봉에서 매매를 실행할 계획입니다.
30분마다 매매가 실행되며 9시와 3시를 뺀 나머지 00분,30분매 실행됩니다.
예를들어 9시30분부터 3분간 이전에 형성된 3개봉 즉 27,28,29분봉의 최고가와 죄저가가 정해질 것인데 9시 30분부터 3분간 최고가와 최저가를 1틱이상인 봉이 발생하면 27~29분봉의 최고가, 최저가에서 -1틱에서 진입합니다.
다시 같은 방법으로 30~33에 진입신호가 발생하지 않으면 30~33분간의 최고가와 최저가를 보고 초과하는 봉이 발생하면 다음 3개봉이내에 진입합니다.
그리고 손절은 최고가-1틱에 진입했다면 저가-1틱에 손절을 둡니다.
그리고 다음 3개봉 36분까지 진입이 없으면 다음 시간대까지 진입하지 않습니다.
다시 설명드리면
9:27 ~ 29분봉의 최고가:227.50,최저가:227.40이면
30~33분까지 고가가 227.55이상인 봉이 있으면 227.45에 매수진입
손절은 227.35입니다.
만일 30~33분사이에 227.45~.50 에서 움직였다면 34~36분동안 이전 3분 30~33분봉의 최고(227.50)가 최저가(227.45)를 보고 진입, 손절을 정합니다.
이런 방식으로 매 00분, 30분 마다 실행하며 9시와 3시는 제외 됩니다.
그리고 진입 후 0.3이상시 청산할 수 있도록 부탁드릴께요.
제가 atstop, atlimit로 0.3 청산을 만든적이 있는데 0.4~0.5이상이 된 후에도 0.3에서 청산을 하더라구요. 0.3이상에서 아래로 1틱이라도 떨어질때 청산될 수 있도록 부탁드릴께요.
답변 1
예스스탁 예스스탁 답변
2010-09-20 19:23:57
안녕하세요? 예스스탁입니다.
문의하신 식은 거의 유사하게 작성하였으나, 의도와 다르게 될 수 있는 부분을 설명드립니다.
먼저 매수에서 최고가 -1틱에 주문을 낸다고 하셨는데, 시스템자동매매에서 정확하게 이 값을 찾아낼 수는 없습니다. 주문가격은 시스템트레이딩 설정창의 매매탭에서 '매매가격'에서만 선택하도록 되어 있는데 말씀하신 가격과 같은 것이 없기 때문입니다. 즉, 신호가 특정한 시점에 발생하도록 하는 것은 시스템식에서 작성가능하지만, 그때 어떤 가격으로 주문을 낼 것인지는 시스템트레이딩 설정창에서 적용하도록 되어 있는데 말씀하신 것과 같은 가격으로는 지정할 수 없습니다. 유사한 방법을 이용하려면 시스템트레이딩 설정창의 매매가격에 보시면 '우선1호가'의 설정이 있습니다. 이 주문으로 주문을 내시면 매수주문의 경우 매수1호가로 매도주문의 경우는 매도1호가로 주문이 나갑니다. 이 주문의 경우는 즉시 체결되지 않는 경우가 대부분이며 경우에 따라서는 주문이 체결되지 않는 경우도 생기게 됩니다.(요청하신 것처럼 최고가-1호가의 경우도 주문이 체결되지 않을 가능성이 있는 것은 마찬가지입니다.)
다음으로 목표수익을 최대수익이 0.3이상 발생한 다음 1틱하락할 경우라고 말씀하셨는데, 식으로 작성한다면 아래 식의 SetStopProfittarget(0.3, PointStop) 대신 SetStopTrailing(0.05, 0.3, PointStop) 으로 대체해 주면 되지만 이렇게 되면 시뮬레이션과 실제매매의 오차가 크게 발생할 수 있습니다. 시뮬레이션에서는 봉중간의 가격움직임을 알지못하기 때문에 중간에 한틱하락했다는 사실을 알지못해 고가에서 한틱아래의 가격에 청산한 것으로 리포트를 내주기 때문입니다.(실매매에서는 의도대로 0.3포인트 수익발생한 이후에 한틱 반대로 움직이면 청산주문이 나가지만, 차트를 새로 띄워서 적용해보면 청산 신호의 위치가 바뀌어 있는 것을 확인하실 수 있을 것입니다.)
이런 문제로 인하여 단순히 0.3포인트의 목표수익에 도달하면 청산하는 식으로 작성하였습니다.
var : dayIdx(0), entryidx(0), HighVal1(0), LowVal1(0),HighVal2(0), LowVal2(0), MP(0);
MP = MarketPosition(0);
if stime%10000 == 5900 or stime%10000 == 2900 Then {
var1 = 1;
dayIdx = dayindex;
}
Else
var1 = 0;
entryidx = dayindex-dayidx;
if entryidx == 0 Then {
HighVal1 = Highest(H,3);
LowVal1 = Lowest(L,3);
}
if entryidx == 3 then {
HighVal2 = Highest(H,3);
LowVal2 = Lowest(L,3);
}
if stime >= 092900 and stime < 150000 then {
#1차진입
if entryidx < 3 and MP[0] == 0 and MP[1] == 0 and MP[2] == 0 then
buy("B1", atstop, HighVal1+PriceScale);
#2차진입
if entryidx < 6 and entryidx >=3 and countif(MP<>0, 6) < 1 Then
buy("B2", atstop, HighVal2+PriceScale);
}
if MarketPosition == 1 then
exitlong("EX", atstop, Lowest(L,3)[BarsSinceEntry]-PriceScale);
SetStopProfittarget(0.3, PointStop);
> 무료한나날 님이 쓴 글입니다.
> 제목 : 부탁드려요.
> 1분봉에서 매매를 실행할 계획입니다.
30분마다 매매가 실행되며 9시와 3시를 뺀 나머지 00분,30분매 실행됩니다.
예를들어 9시30분부터 3분간 이전에 형성된 3개봉 즉 27,28,29분봉의 최고가와 죄저가가 정해질 것인데 9시 30분부터 3분간 최고가와 최저가를 1틱이상인 봉이 발생하면 27~29분봉의 최고가, 최저가에서 -1틱에서 진입합니다.
다시 같은 방법으로 30~33에 진입신호가 발생하지 않으면 30~33분간의 최고가와 최저가를 보고 초과하는 봉이 발생하면 다음 3개봉이내에 진입합니다.
그리고 손절은 최고가-1틱에 진입했다면 저가-1틱에 손절을 둡니다.
그리고 다음 3개봉 36분까지 진입이 없으면 다음 시간대까지 진입하지 않습니다.
다시 설명드리면
9:27 ~ 29분봉의 최고가:227.50,최저가:227.40이면
30~33분까지 고가가 227.55이상인 봉이 있으면 227.45에 매수진입
손절은 227.35입니다.
만일 30~33분사이에 227.45~.50 에서 움직였다면 34~36분동안 이전 3분 30~33분봉의 최고(227.50)가 최저가(227.45)를 보고 진입, 손절을 정합니다.
이런 방식으로 매 00분, 30분 마다 실행하며 9시와 3시는 제외 됩니다.
그리고 진입 후 0.3이상시 청산할 수 있도록 부탁드릴께요.
제가 atstop, atlimit로 0.3 청산을 만든적이 있는데 0.4~0.5이상이 된 후에도 0.3에서 청산을 하더라구요. 0.3이상에서 아래로 1틱이라도 떨어질때 청산될 수 있도록 부탁드릴께요.