장기 이동평균선 돌파시 매수 및 분할매도 스크립트 예제
이평선 돌파시 매수 및 분할매도 스크립트 예제
5일 이동평균선이 20일선을 돌파시 매수하고 1%, 2%, 4% 분할매도하고, 장마감시 1%이상이면 전량 매도 예제아래 예제는 아래와 같은 내용을 설명하기 위한 스크립트입니다.
- 매수시간 및 매도시간을 설정하고 시간대에 따른 매매
- 5일 이평선이 20이평선을 돌파하면 매수
- 매수시 양봉이냐 음봉이냐에 따라 매수가격을 지정해서 매수
- 1%, 2% 4% 분할매도 구현
- 매매신호 함수인 Post에서 주문가격 옵션 사용
- 비중계산:1 옵션으로 종목별 매수한도금액 대비 비중계산
- 주문 미체결시 20초간 경과 후에는 주문취소. 재주문 옵션을 0으로 줘서 주문취소후에도 신호가 나오면 재주문됨.
- 주문체결내역 데이터에서 주문기록 이용하는 예
//------------------------------------------------------------------------------------
var 현재시간 = DateTime.Now.TimeOfDay;
var 매수시간_장중 = 현재시간 >= TimeSpan.Parse("09:10:00") && 현재시간 <= TimeSpan.Parse("15:10:00");
var 장마감 = 현재시간 > TimeSpan.Parse("15:21:00");
var 매도시간_장중 = 현재시간 >= TimeSpan.Parse("09:00:00") && 현재시간 <= TimeSpan.Parse("15:20:00");
if (매수시간_장중)
{
// 5일선이 20일선 돌파시 매수
var _매수_0 = N분봉_0봉전.종가 > N분봉_0봉전.MA_단기;
var _매수_1 = N분봉_0봉전.MA_단기 > N분봉_0봉전.MA_장기;
var _매수_2 = N분봉_1봉전.MA_단기 > N분봉_1봉전.MA_장기;
var _매수_3 = N분봉_2봉전.MA_단기 < N분봉_2봉전.MA_장기;
var _매수_4 = N분봉_3봉전.MA_단기 < N분봉_3봉전.MA_장기;
var _매수_5 = N분봉_4봉전.MA_단기 < N분봉_4봉전.MA_장기;
var _매수_6 = N분봉_0봉전.체결강도 > N분봉_1봉전.체결강도;
var _매수_7 = N분봉_1봉전.체결강도 > N분봉_2봉전.체결강도;
var _매수_8 = N분봉_0봉전.체결강도 >= 100;
if (_매수_0 && _매수_2 && _매수_3 && _매수_4 && _매수_5 && _매수_6 && _매수_7 && _매수_8)
{
var _매수가격 = 0;
//양봉일경우,
if (N분봉_1봉전.시가 <= N분봉_1봉전.종가)
_매수가격 = (int)Math.Min(N분봉_1봉전.종가, N분봉_0봉전.종가);
else
_매수가격 = (int)Math.Min(N분봉_1봉전.시가, N분봉_0봉전.종가);
Post(매수, 100, 0, 주문가격:_매수가격, 유지:60, 재주문:0, 메시지:"이평돌파");
}
}
// 1, 2, 4, 종가 매도
if (매도시간_장중)
{
var 마지막매도주문 = 탐색종목.체결내역.FirstOrDefault(w=>w.주문구분 == "매도" || w.주문구분 == "매도정정");
if (탐색종목.평가손익율 >= 4.0)
{
//매도3
if (마지막매도주문 == null)
Post(매도, 75, 0, 비중계산:1, 유지:20, 재주문:0, 메시지:"4% 매도");
else
{
if (마지막매도주문.주문평가손익율 >= 2.0 && 마지막매도주문.주문평가손익율 < 4.0)
Post(매도, 25, 0, 비중계산:1, 유지:20, 재주문:0, 메시지:"4% 매도");
}
}
else if (탐색종목.평가손익율 >= 2.0 && 탐색종목.평가손익율 < 4.0)
{
//매도2
if (마지막매도주문 == null)
Post(매도, 50, 0, 비중계산:1, 유지:20, 재주문:0, 메시지:"2% 매도");
else
{
if (마지막매도주문.주문평가손익율 >= 1.0 && 마지막매도주문.주문평가손익율 < 2.0)
Post(매도, 25, 0, 비중계산:1, 유지:20, 재주문:0, 메시지:"2% 매도");
}
}
else if (탐색종목.평가손익율 >= 1.0 && 탐색종목.평가손익율 < 2.0)
{
//매도1
if (마지막매도주문 == null)
Post(매도, 25, 0, 비중계산:1, 유지:20, 재주문:0, 메시지:"1% 매도");
} else if (탐색종목.평가손익율 < -2.0)
{
//전량 손절
Post(매도, 100, 0, 유지:20, 재주문:0, 메시지:"-2% 손절");
}
}
if(장마감)
if (탐색종목.평가손익율 >= 1.0)
Post(매도, 100, 100, 메시지:"장마감 전량 매도");
댓글
댓글 쓰기