커뮤니티
시스템 질문드립니다.
2014-04-04 21:55:15
196
글번호 74153
전에 시스템 질문번호 35402에서 질문드려서
분할매수 분할손절(1차매수에 100주를 매수한다음 1차매수지지라인을 깨면 50주를 손절하고 2차지지매수라인에서 2차매수 50주를 하고 2차매수지지라인도 깨지면 전체 손절)을 할수있게 수식을 설명해주셨는데요.
매수와 손절기능은 있는데 이익을 내구 매도하는걸 강제청산설정에서 목표수익을 설정하고
예를 들면 목표수익 '3%'에 청산시점은 '조건만족시 즉시'로 했는데
막상 실제 장중에 테스트를 해보니 (제가 원하는건 1차 매수후 1차손절하고 2차 매수가 되면
1차매수와 2차매수의 평균값의 3%가 되는 조건만족 즉시 수익매도를 원한건데
강제청산설정에서 목표수익을 설정해놓으면 예를 들면
'1차매수에 1000원에 100주를 매수후 990원에 50주를 1차손절하고 2차에 다시 2차매수900원에 50주가 매수가 다시 되고 난 다음에는 두 평균가격이 된 950의 3%의 조건만족시 매도가 될줄 알았더니 실제로는 2차매수된 900원의 50주만 3%의 조건만족이 되는 시점에서 그 50주만 매도되고 1차매수물량은 그대로 남아있습니다.
질문을 요약드리면 1차매수에 1000원 100주 매수후 990원에 50주 1차손절하고 2차매수 900원에 50주가 다시 매수되서 매수평균가가 물타기가 되서 950원에 물량이 100주가 되었는데 이 매수평균가인 950원의 3%가 조건 만족이 되는 즉시 100주 전부 수익매도를 할수 있게 수식을 작성하고 싶습니다.(1차에 매수가 되고 1차손절이나 2차매수까지 가지 않은 상황에서도 3%만 조건 만족되면 무조건 매도할수있게끔) 잘 부탁드립니다.
예를 들어 테스트해본 신성솔라에너지 14년 3월31일화면입니다.
매수1차 1485 매수2차 1460 청산1차 1470 청산2차는 1400으로 해놓고 해보면
각각 수익이 따로 청산이 됩니다.
=================================
>>
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{
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. 강제청산2.JPG (0.11 MB)
답변 1
예스스탁 예스스탁 답변
2014-04-07 11:45:22
안녕하세요
예스스탁입니다.
강제청산은 진입별로 발생을 합니다.
평균값 대비로 하시려면 수식을 풀어서 작성하셔야 합니다.
목표수익이라는 이름으로 평균단가대비 3%이상 수익이면 전량청산하게 식 추가했습니다.
만약 항상 두번째 진입이후에만 목표수익이 발생하게 하시려면
청산함수위의 주석처리된 부분을 해제하시면 됩니다.
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{
#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차);
}
즐거운 하루되세요
> 비엔에프 님이 쓴 글입니다.
> 제목 : 시스템 질문드립니다.
> 전에 시스템 질문번호 35402에서 질문드려서
분할매수 분할손절(1차매수에 100주를 매수한다음 1차매수지지라인을 깨면 50주를 손절하고 2차지지매수라인에서 2차매수 50주를 하고 2차매수지지라인도 깨지면 전체 손절)을 할수있게 수식을 설명해주셨는데요.
매수와 손절기능은 있는데 이익을 내구 매도하는걸 강제청산설정에서 목표수익을 설정하고
예를 들면 목표수익 '3%'에 청산시점은 '조건만족시 즉시'로 했는데
막상 실제 장중에 테스트를 해보니 (제가 원하는건 1차 매수후 1차손절하고 2차 매수가 되면
1차매수와 2차매수의 평균값의 3%가 되는 조건만족 즉시 수익매도를 원한건데
강제청산설정에서 목표수익을 설정해놓으면 예를 들면
'1차매수에 1000원에 100주를 매수후 990원에 50주를 1차손절하고 2차에 다시 2차매수900원에 50주가 매수가 다시 되고 난 다음에는 두 평균가격이 된 950의 3%의 조건만족시 매도가 될줄 알았더니 실제로는 2차매수된 900원의 50주만 3%의 조건만족이 되는 시점에서 그 50주만 매도되고 1차매수물량은 그대로 남아있습니다.
질문을 요약드리면 1차매수에 1000원 100주 매수후 990원에 50주 1차손절하고 2차매수 900원에 50주가 다시 매수되서 매수평균가가 물타기가 되서 950원에 물량이 100주가 되었는데 이 매수평균가인 950원의 3%가 조건 만족이 되는 즉시 100주 전부 수익매도를 할수 있게 수식을 작성하고 싶습니다.(1차에 매수가 되고 1차손절이나 2차매수까지 가지 않은 상황에서도 3%만 조건 만족되면 무조건 매도할수있게끔) 잘 부탁드립니다.
예를 들어 테스트해본 신성솔라에너지 14년 3월31일화면입니다.
매수1차 1485 매수2차 1460 청산1차 1470 청산2차는 1400으로 해놓고 해보면
각각 수익이 따로 청산이 됩니다.
=================================
>>
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{
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차);
}