커뮤니티
예스스팟 Q&A
답변완료
특정종목만 미체결주문을 취소하는 방법
가령 잔고에 콜옵션과 풋옵션이 동시에 존재할 경우 콜옵션만 혹은 풋옵션만 청산하는 코드를 작성중인데 과거 캔슬관련 게시글을 보아도 잔고의 전체 미체결을 일괄 취소하는 법 정도만 보이는 것 같아서 특정 종목이든 특정 옵션만 취소하는 방법을 알고 싶습니다.
감사합니다.
2025-07-12
325
글번호 226346
답변완료
문의
아래 수식은 차트 매수신호 (Signal.signalKind == 1) 발생하면 buy로 진입하는 수식입니다.
차트 청산신호 (Signal.signalKind == 2) 발생하면 청산하는 수식을 추가해 주십시요.
참고로
차트수식의 청산내용은 강제청산(익절,손절,트레일링스탑,최소가격)과 일반청산(exitlong)이 혼재되어 있습니다.
항상 고맙습니다.
*********************************************************************************
var UNum;
var LNum;
var CallCode; var CallPrice;
var CC;
var CallOrderCode;
var CallExit;
function Main_OnStart()
{
CallExit = false;
Main.SetTimer(1, 5000);
}
//차트에서 신호가 발생하면
function Chart1_OnRiseSignal(Signal)
{
//해당 신호가 매수신호이면
if (Signal.signalKind == 1)
{
Main.MessageList("--------------------------------------------");
Main.MessageList("매수신호 발생");
//0.2이하 중 가장 큰 가격을 가지는 종목을 찾음
//ATM위 행사가 갯수
UNum = Option1.uppersATM;
//ATM아래 행사가 갯수
LNum = Option1.lowersATM;
//각 행사가의 콜종목의 종목코드를 저장할 변수를 배열변수로 선언
CallCode = new Array(UNum+LNum+1);
//각 행사가의 콜종목의 현재가를 저장할 변수를 배열변수로 선언
CallPrice = new Array(UNum+LNum+1);
//콜종목 찾기
//콜옵션은 ATM기준 위행사가 +단계, 아래가 -단계이므로
//for문에서 LNum의 역수부터 시작해서 UNum까지 1씩 증가하면서 수행하도록 함
for (var i = -LNum; i <= UNum; i++)
{
//값이 1.0이하이면
if (Option1.GetCurrent(0, i) <= 1.00)
{
//해당종목의 현재가를 배열변수 CallPrice의 방번호 i+LNum에 저장
CallPrice[i+LNum] = Option1.GetCurrent(0, i);
//해당종목의 종목코드를 배열변수 CallCode의 방번호 i+LNum에 저장
CallCode[i+LNum] = Option1.GetATMCallRecent(i);
//주의
//배열변수의 방(공간)번호은 -가 없으므로 최하단 행사가를 0번방부터
//저장하도록 작성해야 함
}
else//1.00보다 크면
{
//배열변수 CallPrice의 방번호 i+LNum에 -1 저장
CallPrice[i+LNum] = -1;
//배열변수 CallCode의 방번호 i+LNum에 -1 저장
CallCode[i+LNum] = -1;
}
}
//배열변수 CallPrice의 각 배열방의 값중 가장 큰값을 찾아 CC에 저장하고
//CallCode의 동일 방번호의 값을 CallOrderCode에 저장
CC = -1;
CallOrderCode = -1;
for (var iii = -LNum; iii <= UNum; iii++)
{
if (CallPrice[iii+LNum] > CC)
{
CC = CallPrice[iii+LNum];
CallOrderCode = CallCode[iii+LNum]
}
}
Main.MessageList("--------------------------------------------");
Main.MessageList("콜종목코드:",CallOrderCode,"/콜현재가 :",CC);
//콜옵션종목 매수
if (CallExit == false)
{
//지정가
Account1.OrderBuy(CallOrderCode, 1, Option1.GetAskByCode(CallOrderCode, 2), 0);
//시장가
//Account1.OrderBuy(CallOrderCode, 1, 0, 1);
}
}
}
2025-07-08
352
글번호 226344
답변완료
부탁드립니다
안녕하세요
엑셀 A1 셀에 있는 값을
3분마다 한 번씩 실시간으로 불러와서
var: CLL(0); 변수에 저장하고 싶습니다.
스팟으로 코딩 부탁드립니다.
2025-07-08
314
글번호 226343
답변완료
문의드립니다
항상 노고에 감사드립니다
스팟실행시
1.프로그램 실행시 처음에 잔고를 불러와 각각의 종목들이 7%이상인 종목들만 시장가 매도하기를 구하고싶습니다
2.미체결에 같은 종목이있으면 중복으로 매수하지않게하고싶습니다.
(이미 같은 종목이라는 에러가 나온후 그대로 스탑일때가 종종있습니다)
3.당일 매수한종목과 매도한 종목은 당일 재매수 하지않게 만들고싶습니다
4.종목코드를 불러와서 종목명으로 변환해주는 함수를 알고싶습니다
(숫자코드가 아니고 한글의 종목명을 활용하고 싶습니다)
5.마지막으로 혹시 대체거래소의 종목은 필터링할수있는 방법은 있는지 만약 있다면 추가하고 싶습니다.
var timerInterval = 5; // 5초 타이머
var 매수금 = 1000000;
var MKList = []; // 종목코드 및 가격을 담는 배열 [{code, price}]
var MK = [];
var req;
function Main_OnStart()
{
var d = new Date();
HHMMSS = d.getHours()*10000 + d.getMinutes()*100 + d.getSeconds();
Main.MessageList(HHMMSS,"|Start");
Main.SetTimer(1, timerInterval*1000);
}
function Main_OnTimer(nEventID)
{
var d = new Date();
HHMMSS = d.getHours()*10000 + d.getMinutes()*100 + d.getSeconds();
if (nEventID == 1 )
{
Main.MessageList(HHMMSS,"|종목검색요청");
Main.ReqPowerSearch("www");
}
if (nEventID == 2)
{
Main.KillTimer(2);
Main.MessageList(HHMMSS,"|종목객체재요청");
Main.ReqMarketData(MKList[req].code);
}
}
function Main_OnRcvItemList(aItemList, nCount, aValues)
{
var d = new Date();
HHMMSS = d.getHours()*10000 + d.getMinutes()*100 + d.getSeconds();
Main.KillTimer(1);
Main.MessageList(HHMMSS,"|종목검색완료|검색된종목수:", nCount);
MKList = [];
if (nCount > 0)
{
for (var i = 0; i < nCount; i++)
{
var code = aItemList[i];
var price = parseFloat(aValues[i]);
var isExist = false;
for (var j = 0; j < MK.length; j++)
{
if (code == MK[j].code) isExist = true;
}
if (!isExist)
{
MKList.push({code: code, price: price});
Main.MessageList(HHMMSS, "|대상종목:", code, "|기준가격:", price);
}
}
}
if (MKList.length == 0)
{
Main.SetTimer(1, timerInterval*1000);
}
else
{
req = 0;
Main.ReqMarketData(MKList[req].code);
}
}
function Main_OnRcvMarketData(MarketData)
{
var d = new Date();
var HHMMSS = d.getHours()*10000 + d.getMinutes()*100 + d.getSeconds();
if (MarketData.code == MKList[req].code)
{
var entryPrice = MKList[req].price;
Account1.OrderBuy(MarketData.code, 1, entryPrice, 0);
Main.MessageList(HHMMSS,"|매수주문:", MarketData.code, "|가격:", entryPrice);
MK.push(MarketData);
req = req + 1;
if (req < MKList.length)
{
var S = Main.ReqMarketData(MKList[req].code);
if (S == -1)
{
Main.MessageList(HHMMSS,"|요청제한 15초대기");
Main.SetTimer(2, 15000);
}
}
else
{
Main.MessageList(HHMMSS,"|모든종목처리완료");
Main.SetTimer(1, timerInterval*1000);
}
}
}
2025-07-17
356
글번호 226342
당근인생 님에 의해서 삭제되었습니다.
2025-07-03
26
글번호 226337
답변완료
문의
옵션 거래 수식 2개 요청드립니다.
요청수식1)
콜옵션 행사가들 중 시가 0.50 이상인 종목에서
090000 이후에 0.12 체결이 발생하면
0.12 체결이 발생한 행사가를 대상으로 매수 1개 (GetAsk 5)
거래시작 : 090000
거래횟수 : 1회
익절가격 : 1.12
시간청산 : 150000
요청수식2)
풋옵션 행사가들 중 시가 0.50 이상인 종목에서
090000 이후에 0.06 체결이 발생하면
0.06 체결이 발생한 행사가를 대상으로 매수 1개 (GetAsk 5)
거래시작 : 090000
거래횟수 : 1회
익절가격 : 0.60
시간청산 : 150000
항상 고맙습니다.
2025-06-26
337
글번호 226336
시온사랑 님에 의해서 삭제되었습니다.
2025-06-19
2
글번호 226335
답변완료
문의드립니다.
차트1과 차트2가 있고
각각 예스랭귀지로 만든 지표로 신호를 만들고 있을 때
차트1에서 생긴신호를
차트2에 연결된 지표에서
사용 할 수 있는 방법이 있는지 궁금합니다.
2025-06-18
337
글번호 226331
답변완료
시장가 매도 오류
A1.OrderSell(A1.Balance.code, A1.Balance.count, 0, 1);
어제까지는 이상 없던 코드였지만
오늘부터 갑자기
"신규 주문가격 오류" 라고 에러가 발생합니다.
2025-06-18
353
글번호 226330
답변완료
시장가 매도 오류 관련
안녕하세요
오늘 스팟으로 시장가매도 주문을 넣었는데 주문가격이 0으로 나가 신규주문 오류가 발생했습니다.
어제까지만해도 잘돌아가던 로직인데, 혹시 내부적으로 수정된게 있는지요??
2025-06-18
333
글번호 226329