커뮤니티
시스템식 문의드립니다.
2014-04-08 23:36:32
201
글번호 74259
안녕하세요.
전에 1차매수 1차청산 2차매수 2차청산및 수익매도에 대해 식을 말씀해주셨는데
다음은 비츠로테크 14년 4월8일날 적용한 예인데여.
if marketposition == 0 and L > 매수1차 then {
이부분을
if marketposition <2 and L > 매수1차 then {
으로 고쳐보고 적용했는데
그림과 같이 나왔습니다.
질문 드리고 싶은 사항은 1차에 매수한 직후 30분이나 60분안에는 같은 매수조건에 다시 온다해도 매수가 안되게 하고 30분이나 60분이 지난다음 같은 매수조건이 성립할때 2차추가매수할수 있게 수식을 작성하고 싶습니다.
옵션값에 1차 매수가 4010 1차청산이 3950 2차 매수가 3900 2차 청산을 3800으로 해놓았는데
2차 추가매수는 3900에서의 추가매수가 아니라(3900에서의 매수는 그대로 작동을 하고 ) 1차매수조건인 4010에 왔을때 매수되고 다시 60분동안은 4010조건일때 매수가 안되다가 60분이 지난후에 4010에 왔을때 다시 매수가 한번 더 되게 하고 싶은 수식을 작성하고 싶습니다.
왜 이런 수식을 필요로 하는지 설명드리면
예를 들면 본인이 컴퓨터를 오전에 자리를 비웠다 오후에 다시 컴퓨터앞에 왔을때 시스템을 켜면 이미 오전에 같은 1차조건이 성립된 매수가 됬다는 표시가 되있는 상태에서 다시 1차조건과 같은 가격대로 내려올때 1차로 성립된 매매는 시스템을 켜도 다시 매수가 안되기때문에 오후에 시스템을 켜서 다시 1차매수 조건가격에 내려올때 실제로 매수할수 있게 하기 위해서 입니다. 잘 부탁드립니다. 그리고 그 매수사이의 매수가 안되는 시간 간격을 넣고 싶어서입니다.
조리있게 설명드리지 못해 죄송합니다;
//======
input : 매수금액(1000000);
var : 매수수량(0),청산수량1(0),청산수량2(0);
Input : 매수1차(9470),매수2차(9200),청산1차(9400),청산2차(9100);
#매수1차 = 9400;
#매수2차 = 9270;
#청산1차 = 9340;
#청산2차 = 9240;
If CodeCategoryEx== 11 and BasePrice < 50000 Then{
매수수량 = floor(int((매수금액/C)/10)*10);
청산수량1 = floor(int((매수수량*0.5)/10)*10);
}
Else{
매수수량 =floor((매수금액/C)*0.5);
청산수량1 =floor(매수수량*0.5);
}
# if MarketPosition == 0 and L > 매수1차 Then{
#이 부분을 고쳤습니다.
if marketposition < 2 and L > 매수1차 then{
#
buy("매수가B1",atlimit,매수1차,매수수량);
#1차 진입과 동일봉에서 신호가 발생하기 위한 내용
ExitLong("손절11",AtStop,청산1차,"",청산수량1,1);
buy("매수가B2",atlimit,매수2차,청산수량1);
ExitLong("손절21",AtStop,청산2차);
}
#진입봉 다음봉부터 동작
if MarketPosition == 1 Then{
#if MaxEntries >= 2 Then #추가진입이후에
ExitLong("목표수익",atlimit,AvgEntryPrice*1.03);#평균단가대비 3%이상 상승하면 전량충산
If CodeCategoryEx== 11 and BasePrice < 50000 Then
청산수량2 = floor(int((MaxContracts*0.5)/10)*10);
Else
청산수량2 =floor(Maxcontracts*0.5);
if lowest(L,BarsSinceEntry+1) > 청산1차 Then
ExitLong("손절C12",atstop,청산1차,"",청산수량2,1);
if MaxEntries == 1 and lowest(L,BarsSinceEntry+1) > 매수2차 Then
Buy("매수가B3",atlimit,매수2차,청산수량2);
if lowest(L,BarsSinceEntry+1) > 청산2차 Then
ExitLong("손절22",atstop,청산2차);
}
- 1. 매수간__타이밍.JPG (0.21 MB)
답변 1
예스스탁 예스스탁 답변
2014-04-09 11:41:28
안녕하세요
예스스탁입니다.
1
포지션 함수인 MarketPosition은 2라는 값이 없습니다.
매수진입상태이면 1, 매도진입상태이면 -1, 무포지션이면 0으로만 값이 리턴됩니다.
2. 아래 수정한 내용입니다.
첫진입이후에 60분이상 경과된 이후에
아래 조건이 한번더 만족하면 추가매수 합니다
if L > 매수1차 then{
buy("매수가B1추가",atlimit,매수1차,매수수량);
input : 매수금액(1000000);
var : 매수수량(0),청산수량1(0),청산수량2(0);
Input : 매수1차(9470),매수2차(9200),청산1차(9400),청산2차(9100);
#매수1차 = 9400;
#매수2차 = 9270;
#청산1차 = 9340;
#청산2차 = 9240;
If CodeCategoryEx== 11 and BasePrice < 50000 Then{
매수수량 = floor(int((매수금액/C)/10)*10);
청산수량1 = floor(int((매수수량*0.5)/10)*10);
}
Else{
매수수량 =floor((매수금액/C)*0.5);
청산수량1 =floor(매수수량*0.5);
}
if MarketPosition == 0 and L > 매수1차 Then{
buy("매수가B1",atlimit,매수1차,매수수량);
#1차 진입과 동일봉에서 신호가 발생하기 위한 내용
ExitLong("손절11",AtStop,청산1차,"",청산수량1,1);
buy("매수가B2",atlimit,매수2차,청산수량1);
ExitLong("손절21",AtStop,청산2차);
}
#진입봉 다음봉부터 동작
if MarketPosition == 1 Then{
ExitLong("목표수익",atlimit,AvgEntryPrice*1.03);#평균단가대비 3%이상 상승하면 전량충산
#추가 부분
#매수가 2회 이하로 되어 있는 상태(첫진입이후 매수2차가 발생했거나 발생하지 않은 상황)
#첫진입이후 60분이상 경과했고
#"매수가B1추가"라는 이름으로 한번도 신호가 발생하지 않았다면(1번만 발동하라는 의미)
if MaxEntries >= 1 and MaxEntries <= 2 and
TimeToMinutes(stime) >= TimeToMinutes(EntryTime)+60 And
countif(LatestEntryName(0) == "매수가B1추가",BarsSinceEntry) < 1 then{
if L > 매수1차 Then
Buy("매수가B1추가",atlimit,매수1차,매수수량);
}
If CodeCategoryEx== 11 and BasePrice < 50000 Then
청산수량2 = floor(int((MaxContracts*0.5)/10)*10);
Else
청산수량2 =floor(Maxcontracts*0.5);
if lowest(L,BarsSinceEntry+1) > 청산1차 Then
ExitLong("손절C12",atstop,청산1차,"",청산수량2,1);
if MaxEntries >= 1 and lowest(L,BarsSinceEntry+1) > 매수2차 Then
Buy("매수가B3",atlimit,매수2차,청산수량2);
if lowest(L,BarsSinceEntry+1) > 청산2차 Then
ExitLong("손절22",atstop,청산2차);
}
3.
문의하신 내용은 시스템의 적용시점을 염두에 두고 추가하시는 부분인데
시스템에서는 해당 부분을 인지하지 못합니다.
그러므로 추가된 부분은 아침부터 시스템을 적용해
첫매수를 자동으로 주문을 한 상태에서도 발동하게 됩니다.
또한 청산의 수량이 시스템상에서 진입된 수량으로 기준으로 하므로
청산에서 수량부족으로 에러가 날 가능성이 높습니다.
4 아래는 시스템의 신호발생시간을 지정하는 식입니다.
지정한 시간 이후에만 신호를 발생하라는식입니다.
input : 매수금액(1000000),시작시간(120000);
var : 매수수량(0),청산수량1(0),청산수량2(0);
Input : 매수1차(9470),매수2차(9200),청산1차(9400),청산2차(9100);
#매수1차 = 9400;
#매수2차 = 9270;
#청산1차 = 9340;
#청산2차 = 9240;
if CodeCategoryEx== 11 and BasePrice < 50000 Then{
매수수량 = floor(int((매수금액/C)/10)*10);
청산수량1 = floor(int((매수수량*0.5)/10)*10);
}
Else{
매수수량 =floor((매수금액/C)*0.5);
청산수량1 =floor(매수수량*0.5);
}
if stime >= 시작시간 then{
if MarketPosition == 0 and L > 매수1차 Then{
buy("매수가B1",atlimit,매수1차,매수수량);
#1차 진입과 동일봉에서 신호가 발생하기 위한 내용
ExitLong("손절11",AtStop,청산1차,"",청산수량1,1);
buy("매수가B2",atlimit,매수2차,청산수량1);
ExitLong("손절21",AtStop,청산2차);
}
#진입봉 다음봉부터 동작
if MarketPosition == 1 Then{
#if MaxEntries >= 2 Then #추가진입이후에
ExitLong("목표수익",atlimit,AvgEntryPrice*1.03);#평균단가대비 3%이상 상승하면 전량충산
If CodeCategoryEx== 11 and BasePrice < 50000 Then
청산수량2 = floor(int((MaxContracts*0.5)/10)*10);
Else
청산수량2 =floor(Maxcontracts*0.5);
if lowest(L,BarsSinceEntry+1) > 청산1차 Then
ExitLong("손절C12",atstop,청산1차,"",청산수량2,1);
if MaxEntries == 1 and lowest(L,BarsSinceEntry+1) > 매수2차 Then
Buy("매수가B3",atlimit,매수2차,청산수량2);
if lowest(L,BarsSinceEntry+1) > 청산2차 Then
ExitLong("손절22",atstop,청산2차);
}
}
즐거운 하루되세요
> 비엔에프 님이 쓴 글입니다.
> 제목 : 시스템식 문의드립니다.
> 안녕하세요.
전에 1차매수 1차청산 2차매수 2차청산및 수익매도에 대해 식을 말씀해주셨는데
다음은 비츠로테크 14년 4월8일날 적용한 예인데여.
if marketposition == 0 and L > 매수1차 then {
이부분을
if marketposition <2 and L > 매수1차 then {
으로 고쳐보고 적용했는데
그림과 같이 나왔습니다.
질문 드리고 싶은 사항은 1차에 매수한 직후 30분이나 60분안에는 같은 매수조건에 다시 온다해도 매수가 안되게 하고 30분이나 60분이 지난다음 같은 매수조건이 성립할때 2차추가매수할수 있게 수식을 작성하고 싶습니다.
옵션값에 1차 매수가 4010 1차청산이 3950 2차 매수가 3900 2차 청산을 3800으로 해놓았는데
2차 추가매수는 3900에서의 추가매수가 아니라(3900에서의 매수는 그대로 작동을 하고 ) 1차매수조건인 4010에 왔을때 매수되고 다시 60분동안은 4010조건일때 매수가 안되다가 60분이 지난후에 4010에 왔을때 다시 매수가 한번 더 되게 하고 싶은 수식을 작성하고 싶습니다.
왜 이런 수식을 필요로 하는지 설명드리면
예를 들면 본인이 컴퓨터를 오전에 자리를 비웠다 오후에 다시 컴퓨터앞에 왔을때 시스템을 켜면 이미 오전에 같은 1차조건이 성립된 매수가 됬다는 표시가 되있는 상태에서 다시 1차조건과 같은 가격대로 내려올때 1차로 성립된 매매는 시스템을 켜도 다시 매수가 안되기때문에 오후에 시스템을 켜서 다시 1차매수 조건가격에 내려올때 실제로 매수할수 있게 하기 위해서 입니다. 잘 부탁드립니다. 그리고 그 매수사이의 매수가 안되는 시간 간격을 넣고 싶어서입니다.
조리있게 설명드리지 못해 죄송합니다;
//======
input : 매수금액(1000000);
var : 매수수량(0),청산수량1(0),청산수량2(0);
Input : 매수1차(9470),매수2차(9200),청산1차(9400),청산2차(9100);
#매수1차 = 9400;
#매수2차 = 9270;
#청산1차 = 9340;
#청산2차 = 9240;
If CodeCategoryEx== 11 and BasePrice < 50000 Then{
매수수량 = floor(int((매수금액/C)/10)*10);
청산수량1 = floor(int((매수수량*0.5)/10)*10);
}
Else{
매수수량 =floor((매수금액/C)*0.5);
청산수량1 =floor(매수수량*0.5);
}
# if MarketPosition == 0 and L > 매수1차 Then{
#이 부분을 고쳤습니다.
if marketposition < 2 and L > 매수1차 then{
#
buy("매수가B1",atlimit,매수1차,매수수량);
#1차 진입과 동일봉에서 신호가 발생하기 위한 내용
ExitLong("손절11",AtStop,청산1차,"",청산수량1,1);
buy("매수가B2",atlimit,매수2차,청산수량1);
ExitLong("손절21",AtStop,청산2차);
}
#진입봉 다음봉부터 동작
if MarketPosition == 1 Then{
#if MaxEntries >= 2 Then #추가진입이후에
ExitLong("목표수익",atlimit,AvgEntryPrice*1.03);#평균단가대비 3%이상 상승하면 전량충산
If CodeCategoryEx== 11 and BasePrice < 50000 Then
청산수량2 = floor(int((MaxContracts*0.5)/10)*10);
Else
청산수량2 =floor(Maxcontracts*0.5);
if lowest(L,BarsSinceEntry+1) > 청산1차 Then
ExitLong("손절C12",atstop,청산1차,"",청산수량2,1);
if MaxEntries == 1 and lowest(L,BarsSinceEntry+1) > 매수2차 Then
Buy("매수가B3",atlimit,매수2차,청산수량2);
if lowest(L,BarsSinceEntry+1) > 청산2차 Then
ExitLong("손절22",atstop,청산2차);
}
다음글
이전글