커뮤니티
예스스팟 Q&A
답변완료
고생이 많으세요 문의드립니다.
같은 시스템,지표라고 했을때
선차트(종가선차트)와 봉차트(캔들차트)가 진입,청산이 다르게 반응 할 수 있는지
여쭙고 싶습니다. 감사합니다.
2020-02-04
3152
글번호 225153
답변완료
예제2번 질문
항상 감사드립니다.
예스스팟 공부중인데 인터넷에서 다운 받은 메뉴얼의 예제2번에서 그림과 같이 20001을 레프런스 할 수 없다고 나옵니다. 무엇을 정정해야 하나요???
2020-01-31
3723
글번호 225152
답변완료
property erro 0
안녕하세요?
질의드립니다
1. 프라퍼티 에러0 가 발생합니다.
2. 수식에는 잔고가 있을시 진입이 안되게 되어있습니다만, 유첨 이미지처럼 계속 추가 진입이 되고 있습니다. 차트속성에서도 피라미딩은 허용안함으로 세팅해놨습니다.
문제가 무엇인지요??
var SK,BuyID,BuyNum,SellID,SellNum;
function Main_OnStart()
{
Main.MessageList("Start");
Main.SetTimer(99, 10000);//99번 타이머 10초 셋팅(동시호가 시간 체크 위해)
}
//차트에서 미완성 시호가 신호발생 하면
function Chart1_OnRiseIncompleteSignal(Signal)// 요거만 바꿈
{
SK = Signal.signalKind;
Main.MessageList("신호발생 : 신호종류", SK,"신호가격",Signal.price,"신호수량",Signal.count);
//매수신호 발생
if (SK == 1) // 메수 신호면이면
{
//종목잔고셋팅
Account1.SetBalance(Main.GetOrderCode(MarketData1.code),0);
//종목잔고가 없으면
if (Account1.Balance.count == 0)
{
//매도3호가로 1계약 매수주문 ==>3호가 위로 매수할꺼야
BuyID = Account1.OrderBuy(Main.GetOrderCode(MarketData1.code),1,MarketData1.Ask(3),0);//종목, 계약수, 3호가위로,지정가로
}
//잔고에 매도포지션이 있으면
if (Account1.Balance.count > 0 && Account1.Balance.position == 1)// 1은 매도 2는 매수야 ==> 매도보유하고 있으면 5초 딜레이야?
{
//1번 타이머 5초 셋팅(N초지연주문을 위해)
Main.SetTimer(1, 5000);
}
}
//매수청산신호 발생
if (SK == 2)// 매수청산신호면
{
//매수진입주문 번호로 미체결 객체 셋팅
Account1.SetUnfill(BuyNum);
//미체결이 잇으면 ==>청산신호가 나왔는데 이전에 주문 들어간게 있으면 취소하자
if (Account1.Unfill.count > 0)
{
//취소주문
Account1.OrderCancel(BuyNum);
}
//잔고셋팅
Account1.SetBalance(Main.GetOrderCode(MarketData1.code),0);
//잔고에 매수포지션이 있으면
if (Account1.Balance.count > 0 && Account1.Balance.position == 2)// 매수포지션을 가지고 있으면,(1은 매도 2는 매수)
{
//전량 매수3호가로 매도주문 ==>3호가 아래로 매도
Account1.OrderSell(Main.GetOrderCode(MarketData1.code),Account1.Balance.count,MarketData1.Bid(3),0);
}
}
//매도진입신호발생
if (SK == 3) // 매도신호 바생하면
{
//신호수량
SP = Signal.count;//???????
//잔고셋팅
Account1.SetBalance(Main.GetOrderCode(MarketData1.code),0);
//잔고가 없으면
if (Account1.Balance.count == 0)
{
//매수3호가로 1계약 매도주문 ==>3혹 아래로 매도
SellID = Account1.OrderSell(Main.GetOrderCode(MarketData1.code),1,MarketData1.Bid(3),0);
}
//잔고에 매수포지션이 있으면
if (Account1.Balance.count > 0 && Account1.Balance.position == 2)// 매수 포지션이 있으면 5초 딜레이
{
//2번 타이머 5초 셋팅(N초지연주문을 위해)
Main.SetTimer(1, 5000);
}
}
//매도청산신호 발생
if (SK == 4) // ==>매도청산하자
{
//매도진입주문번호로 미체결 객체 셋팅
Account1.SetUnfill(SellNum);
//미체결이 잇으면
if (Account1.Unfill.count > 0)
{
//취소주문
Account1.OrderCancel(SellNum);
}
//잔고셋팅
Account1.SetBalance(Main.GetOrderCode(MarketData1.code),0);
//잔고에 매도포지션이 있으면 청산
if (Account1.Balance.count > 0 && Account1.Balance.position == 1) //매도포지션이 있으면
{
//전량 매도3호가로 매수주문 ==>3호가 위로 매수주문
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code),Account1.Balance.count,MarketData1.Ask(3),0);
}
}
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
//1번 타이머가 동작하면
if (nEventID == 1) // 매수를 해야하는데 매도를 가지고 있었으면 1계약 청산 후 5초 딜레이후 매수 진입(증거금문제로 2계약 안됨)
{
//매도3호가로 1계약 매수주문
BuyID = Account1.OrderBuy(Main.GetOrderCode(MarketData1.code),1,MarketData1.Ask(3),0);
//1번 타이머 종료
Main.KillTimer(1);
}
//2번 타이머가 동작하면 // 매도를 해야하는데 수도를 가지고 있었으면 1계약 청산 후 5초 딜레이후 매도 진입(증거금문제로 2계약 안됨)
if (nEventID == 2)
{
//매수3호가로 1계약 매도주문
SellID = Account1.OrderSell(Main.GetOrderCode(MarketData1.code),1,MarketData1.Bid(3),0);
//2번 타이머 종료
Main.KillTimer(2);
}
//99번 타이머 동작하고 15시36분 이후이면 ==> 동시호가에 미완성신호 발생시 들어갈 것인가 말 것인가 문제
if (nEventID == 99 && HHMMSS >= 153600)
{
//99q번 타이머 종료
Main.KillTimer(99);
//마지막봉 미완성 신호정보 셋팅
var Incom = Chart1.GetIncompleteSignal();
//매수진입 미완성 신호가 발생해 있다면
if (Incom[0].signalKind == 1)
{
//잔고셋팅
Account1.SetBalance(Main.GetOrderCode(MarketData1.code),0);
//잔고가 없으면
if (Account1.Balance.count == 0)
{
//매도3호가로 1계약 매수주문
BuyID = Account1.OrderBuy(Main.GetOrderCode(MarketData1.code),1,MarketData1.Ask(3),0);
}
//잔고에 매도포지션이 있으면
if (Account1.Balance.count > 0 && Account1.Balance.position == 1)
{
//직전진입이 매도진입이므로 매도진입주문번호로 미체결 객체 셋팅
Account1.SetUnfill(SellNum);
//미체결이 잇으면
if (Account1.Unfill.count > 0)
{
//취소주문
Account1.OrderCancel(SellNum);
}
//청산
//잔고전량 매수3호가로 매수주문
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code),Account1.Balance.count,MarketData1.Ask(3),0);
//진입주문 위해 1번 타이머 5초 셋팅(N초지연주문을 위해)
Main.SetTimer(1, 5000);
}
}
//매수청산 미완성 신호가 발생해 있다면
if (Incom[0].signalKind == 2)
{
//직전진입이 매수진입이므로 매수진입주문번호로 미체결 객체 셋팅
Account1.SetUnfill(BuyNum);
//미체결이 잇으면
if (Account1.Unfill.count > 0)
{
//취소주문
Account1.OrderCancel(BuyNum);
}
//청산
//잔고전량 매수3호가로 매도주문
Account1.OrderSell(Main.GetOrderCode(MarketData1.code),Account1.Balance.count,MarketData1.Bid(3),0);
}
//매도진입 미완성 신호가 발생해 있다면
if (Incom[0].signalKind == 3)
{
//잔고가 없으면
if (Account1.Balance.count == 0)
{
//매수3호가로 1계약 매도주문
SellID = Account1.OrderSell(Main.GetOrderCode(MarketData1.code),1,MarketData1.Bid(3),0);
}
//잔고에 매수포지션이 있으면
if (Account1.Balance.count > 0 && Account1.Balance.position == 2)
{
//직전진입이 매수진입이므로 매수진입주문번호로 미체결 객체 셋팅
Account1.SetUnfill(BuyNum);
//미체결이 잇으면
if (Account1.Unfill.count > 0)
{
//취소주문
Account1.OrderCancel(BuyNum);
}
//청산
//잔고전량 매수3호가로 매도주문
Account1.OrderSell(Main.GetOrderCode(MarketData1.code),Account1.Balance.count,MarketData1.Bid(3),0);
//진입주문 위해 2번 타이머 5초 셋팅(N초지연주문을 위해)
Main.SetTimer(1, 5000);
}
}
//매도청산 미완성 신호가 발생해 있다면
if (Incom[0].signalKind == 2)
{
//직전진입이 매도진입이므로 매도진입주문번호로 미체결 객체 셋팅
Account1.SetUnfill(SellNum);
//미체결이 잇으면
if (Account1.Unfill.count > 0)
{
//취소주문
Account1.OrderCancel(SellNum);
}
//청산
//잔고전량 매수3호가로 매수주문
Account1.OrderBuy(Main.GetOrderCode(MarketData1.code),Account1.Balance.count,MarketData1.Ask(3),0);
}
}
}
//각 진입주문 후 주문번호 저장
function Main_OnOrderResponse(OrderResponse)
{
if (OrderResponse.orderID == BuyID)
{
BuyNum = OrderResponse.orderNum;
}
if (OrderResponse.orderID == SellID)
{
SellNum = OrderResponse.orderNum;
2020-01-31
3744
글번호 225151
답변완료
문의드립니다.
안녕하세요.
고생 많으십니다.
다음과 같은 전략을 사용하고자 합니다.
1. 장중 5분마다 종목검색
- 일봉기준 종목검색(볼밴 20,2 상단 돌파)
2. 검색된 종목 5분봉 감시
- 관심종목 추가나 다른방법 이용하여 중복 제거
- 매수 감시 종목 은 최대 10종목 제한
- 매도 감시 종목은 제한 없음
3. 검색시점 이후 매수조건 충족하면 시장가 진입
- CCI(9) 기준선(-100) 하향 돌파시 매수
- 봉완성시 말고 신호 발생 시
- 종목감시 시작 후 2거래일 동안 매수 안될 시 감시 취소
4. 매수진입 후 매도 조건 충족하면 시장가 청산
- CCI(9) 기준선(100) 상향 돌파시 마다 25%씩 청산
- 봉완성시 말고 신호 발생 시
가이드 수식 부탁드립니다.
감사합니다.
2020-01-30
3659
글번호 225150
답변완료
코드가 잘 실행이 안되는데, 수정 및 주석추가 부탁드려요
Re : 코스피200 선물 장종료 5분전 전량 청산
안녕하세요
예스스탁입니다.
문의하신 내용은 수식의 내용은 동일합니다.
특정시간을 선물에 대해 청산하는 내용이므로
아래식에서 시간(xtime)만 별도로 지정해 사용하시면 됩니다.
스크립트 객체설정
계좌객체 추가 --> 속성에서 객체명은 Account1, 주문계좌지정
종목객체 추가 --> 속성에서 객체명은 MarketData1, 연결선물로 지정
var xtime = 153000;//동시호가는 154000
function Main_OnStart()
{
Main.SetTimer(1, 5000);
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
if (nEventID == 1 && HHMMSS >= xtime)
{
Main.KillTimer(1);
Account1.SetBalance(Main.GetOrderCode(MarketData1.code), 0);
if (Account1.Balance.count > 0 && Account1.Balance.position == 1)
{
Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,0,1);
}
if (Account1.Balance.count > 0 && Account1.Balance.position == 2)
{
Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,0,1);
}
}
}
즐거운 하루되세요
> 퀀트드래곤 님이 쓴 글입니다.
> 제목 : 코스피200 선물 장종료 5분전 전량 청산
> 코스피200 선물 장종료 5분전 전량 청산 로직 부탁드립니다.
혹시몰라서 두개로 나눠서 부탁드릴게요
1) 코스피 장종료 5분전 시장가로 전량 청산
2) 코스피 장종료 후 동시호가 때 시장가로 전량 청산
2020-01-17
3575
글번호 225147
달무드 님에 의해서 삭제되었습니다.
2020-01-15
1
글번호 225144
bin 님에 의해서 삭제되었습니다.
2020-01-14
5
글번호 225143
회원 님에 의해서 삭제되었습니다.
2020-01-13
6
글번호 225138
달무드 님에 의해서 삭제되었습니다.
2020-01-10
15
글번호 225137
cs아빠 님에 의해서 삭제되었습니다.
2020-01-09
1
글번호 225136