커뮤니티
예스스팟 Q&A
답변완료
문의_pointless
exit 수식 추가 건입니다. 차트1 exitlong("a"); 차트2 exitlong("b"); 1) a 또는 b 를 만족하면 청산 2) a and b 를 만족해야만 청산 3) 차트참조 없이 setstoploss(2, percentstop); setstoptrailing(5,0,percentstop,1); 위 3가지 경우로 나누어 청산수식 추가 부탁드립니다. ********************************************************************* var UNum; var LNum; var CallCode; var CallPrice; var PutCode; var PutPrice; var CC; var PP; var CallOrderCode; var PutOrderCode; var CallExit,PutExit; function Main_OnStart() { CallExit = false; PutExit = false; Main.SetTimer(1, 5000); } //차트에서 신호가 발생하면 function Chart1_OnRiseSignal(Signal) { //해당 신호가 매수신호이면 if (Signal.signalKind == 1) { CallOrderCode = Option1.GetATMCallRecent(1); //*** 콜옵션 외가격+1 을 찾는다 PutOrderCode = Option1.GetATMPutRecent(1);//*** 풋옵션 외가격-1 을 찾는다 //콜옵션종목 매수 if (CallExit == false) { //지정가 Account1.OrderBuy(CallOrderCode, 1, Option1.GetAskByCode(CallOrderCode, 2), 0); //시장가 //Account1.OrderBuy(CallOrderCode, 1, 0, 1); } } }
2023-05-08
1120
글번호 225798
hello 님에 의해서 삭제되었습니다.
2023-04-26
0
글번호 225793
히익 님에 의해서 삭제되었습니다.
2023-04-17
1
글번호 225792
답변완료
옵션 관련
혹시 예스스팟에서 둘째주 목요일마다 양매도하고 만기때마다 청산(그 다음 월 둘째 주 목요일)하는 전략을 백테스트 해볼 수 있나요?
2023-04-17
1210
글번호 225791
답변완료
장전시간외 거래 가능여부
8시30분~8시40분에 장전시간외 거래에 스팟으로 주문 넣을 수 있는지요?
혹시 가능하다면 계좌에 있는 전종목을 매도주문 넣는 코드 샘플좀 짜주실 수 있으실까요?
너무나 감사드립니다.
2023-04-07
1143
글번호 225788
답변완료
초보질문
예스스팟에 대해 자신이 직접 수식등을 작성 사용하기엔 어려울 경우 유료로 대신 작성 해주는 제휴업체나 또 다른 방법은 없을까요?
2023-04-04
1128
글번호 225785
답변완료
시스템 수식 문의드립니다.
안녕하세요.
YL및 YS 게시판을 통해서 도움을 많이 주셔서 항상 감사합니다.
현재 YS로 거래 중인데 좀 더 정교하게 거래해 보고자 다시 도움을 청합니다.
저는 일봉 거래를 하는데 2회 분할 매수(각각 일봉 종가에 진입) 후 분할매도(장중 분할 매도 후 남은 물량은 종가 매도) 하는 형태로 진행이 되고 하루에 2~5종목 정도 매수하고 15~20일 정도 후 매도합니다.
보통 검색식으로 추출(일 50~100종목)된 종목 중 신호(정규/예비)가 발생한 종목을 관심종목1에 등록한 후 YS를 통해 확장차트를 띄운 후 매수/매도하고 처리가 안된 종목은 수동으로 거래를 합니다.
그런데 정규 신호로는 종가 거래를 할 수 없다 보니,
매수/매도 시에 익일 시가에 진입하게 되다 보니, 결국 시스템 진입가격과 가격 괴리가 발생하고, 수동으로 처리하는 부분이 많다보니 시뮬레이션 결과보다 수익이 떨어지는 결과를 초래합니다.
그래서 예비 신호를 이용하여 장 종가 부근에서 매수/매도를 진행하는 형태로 YS를 새로 만들고 싶습니다.
YS 수식을 하나로 합칠 수 있으면 더할 나위 없이 좋겠지만 프로그래밍 능력의 한계 때문에
2개의 YS 시스템을 사용해서
1번 - 매수/분할매도(2번을 통해 예비신호로 매수되어 잔고에 있으니 실제로는 1번 식으로는 매수 미발생)
2번 - 매수/잔여물량매도
이런 형태로 운용 가능하지 않을까 생각하고 있고, 2번 수식을 작성하다가 도움을 구해봅니다.
가이드 수식을 주시면 큰 도움이 될 것 같습니다.
오늘도 좋은 하루 보내세요. 감사합니다.
---------------------------------------------------------------------------
// 2번 수정/추가사항
// 1) 에비신호로는 일 5종목까지만 매수하고, 매수된 종목이 있으면 관심그룹2에 종목 추가한 후 확장차트 생성
// 2) 예비신호로 매도 시 잔여 보유 물량 일괄 청산(yesspot1번에서 분할매도하기 때문에 남은 물량만 당일 종가 부근에서 매도하면 됩니다)
// 문의사항- 관심그룹 이름을 동적(이름+당일날짜)로 설정가능한지?
//yesspot2번(예비신호)
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
var cond;
function Main_OnStart()
{
if (HHMMSS >= 90000)
{
Main.MessageList("start")
Main.SetTimer(1,1000);
}
}
function Main_OnTimer(nEventID)
{
if (HHMMSS >= 150000)
{
Main.KillTimer(1);
Main.ReqPowerSearch("검색1");
}
}
function Main_OnRcvItemList(aItemList, nCount)
{
if (nCount > 0)
{
Main.SendInterests("관심그룹1", aItemList,false);
}
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1 && cond == false && HHMMSS >= 150000)
{
cond = true;
var Incom = Chart1.GetIncompleteSignal();
if (Incom[0].signalKind == 1 && Account1.Balance.count == 0)
{
Account1.OrderBuy(Main.GetOrderCode(Incom[0].code), 1, 0,1);
Main.MessageList("매수주문");
}
if (Incom[0].signalKind == 2 && HHMMSS >= 151500)
{
Account1.OrderSell(Main.GetOrderCode(Incom[0].code), 1, 0,1);
Main.MessageList("매도주문");
}
}
}
// yesspot(1번) - 현재 사용 중
var ItemList;
var Count;
var ReqCount;
var d;
var H;
function Main_OnStart()
{
Main.MessageLog("스팟시작");
d = new Date();
h=d.getDate();
//지정한 관심그룹의 종목수(관심그룹지정 필요)
Count = Main.GetItemCountOfInterest("관심종목1");
Main.MessageList("지정관심그룹 종목수 : ", Count);
ItemList = [];
//관심그룹 종목코드를 ItemList로 옮김
for(var i = 0 ; i < Count ; i++)
{
//관심그룹지정 필요
ItemList.push(Main.GetItemCodeInInterest("관심종목1", i));
}
ReqCount = 0;
if (Count > 0)
{
Main.SetTimer(1, 500);
}
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
var TradeSet = new SystemTradeInfo(TRADE_FIXCAPITAL,
1, // 거래수량
100000000, // 자산
1, // 단위수량
0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료
0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지
PYRAMIDING_ENTRY, // 피라미딩 설정여부(다른진입신호만 허용)
100000, // 최대진입수량
20); // 최대진입횟수
var ChartSet = new ReqChartItem(ItemList[ReqCount],1,CHART_PERIOD_DAILY,1000,CHART_REQCOUNT_BAR,true,false);
/////SystemInfo(name,kind,inputVar,tradeInfo,stopInfo)
var SystemSet = new SystemInfo("YL_시스템(일봉)", YL_TYPE_NORMAL, null, TradeSet);
Main.ReqChartEx(ChartSet,SystemSet);
Main.MessageList("확장차트생성요청:",ItemList[ReqCount]);
ReqCount = ReqCount+1;
if (ReqCount == Count)
{
Main.KillTimer(1);
Main.MessageList("종목객체생성완료");
}
}
}
//신호발생
function Main_OnRiseSignal(ChartEx, Signal)
{
//신호발생 종목에 대해 잔고셋팅
Account1.SetBalance(Main.GetOrderCode(Signal.code),0);
//매수신호이고 잔고가 없을때만 매수
if (Signal.signalKind == 1) ////// && Account1.Balance.count == 0)
{
Account1.OrderBuy(Main.GetOrderCode(Signal.code), Signal.count, Signal.price, 0);
Main.MessageList("매수주문9");
}
if (Signal.signalKind == 2)
{
//전체미체결주문 갯수
var num = Account1.GetTheNumberOfUnfills();
//전체 미체결수 만큼 루프를 돌면서
for (var i = 0; i < num; i++)
{
//미체결을 하나씩 셋팅하고 Account1.GetTotalAmount(nCategory, nTradeKind)
Account1.SetUnfill(i);
//미체결종목이 신호종목과 같고 미체결수량이 있으면
if (Account1.Unfill.code == Main.GetOrderCode(Signal.code) && Account1.Unfill.count > 0)
{
Account1.OrderCancel(Account1.Unfill.orderNum);
}
}
//잔고수량만큼만 매도
if (Account1.Balance.count > 0)
{
Account1.OrderSell(Main.GetOrderCode(Signal.code), Signal.count, Signal.price, 0);
Main.MessageList("매도주문");
}
}
}
2023-03-31
1334
글번호 225784
주식승부 님에 의해서 삭제되었습니다.
2023-03-30
2
글번호 225783
답변완료
YesSpotMaker 클래스가 등록되지 않았습니다
안녕하세요,
다른 컴으로 YTS를 옮기는 과정에서 발생한 일인데,
YesSpot 스크립트에 대한 스크립트 검증 과정에서 제목과 같은 메시지가 뜹니다.
문제가 뭘까요?
2023-03-29
1075
글번호 225782
답변완료
ReferenceError:GetOpen: 정상적인 값을 반환할 수 없습니다.
확장차트에서 GetOpen으로 데이터를 읽어 올 때,
어쩌다 가끔 "ReferenceError:GetOpen: 정상적인 값을 반환할 수 없습니다."
에러가 발생합니다.
어떻게 해결하면 될까요?
2023-03-28
1076
글번호 225781