커뮤니티

예스스팟 Q&A

답변완료

코스피, 코스닥 지수의 adx, dmi(d+, d-) 값을 구할 수 있는지요?

예스스팟에서코스피, 코스닥 지수의 adx, d+, d- 값 들이 필요한데 예스스팟에서 값을 참조 할려면 어떻게 하면 되나요?감사합니다.
프로필 이미지
cool2020
2026-10-08
32
글번호 233839
답변완료

차트 신호 연동 PUT 옵션 매수 수식에 조건 개선

차트 신호 연동 PUT 옵션 매수 수식의 진입조건을 개선하고 싶습니다.1. 개선 내용체결 조건이 0.50pt 이하지만 가끔 추세가 분출할 때는 0.50pt 을 넘는 체결이 발생합니다.2.체결가격 상승(0.50pt 초과) 시 행사가 변경 로직 추가주문 발주 직전 또는 시세 체크 시 해당 행사가의 현재가(또는 매도1호가)가 0.50pt를 초과하여 상승한 경우,해당 행사가 진입을 취소/제외하고 다시 현재가(또는 매도1호가)가 0.50 이하인 한 단계 아래(더 외가) 풋옵션 행사가를 찾아 매수 주문 발주.다만, 현재가(또는 매도1호가)가 체결 조건 0.50pt에서 10%까지의 상승은 허용함(0.55이하면 최초 선택한 행사가에서 주문 집행)항상 고맙습니다.*******************************************************************************************************************************************var UNum; var LNum;var PutCode; var PutPrice;var PP;var PutOrderCode;var PutExit;function Main_OnStart(){ PutExit = false; Main.SetTimer(1, 5000);}//차트에서 신호가 발생하면function Chart1_OnRiseSignal(Signal){ //해당 신호가 매도신호이면 if (Signal.signalKind == 3) { Main.MessageList("--------------------------------------------"); Main.MessageList("매수신호 발생"); // 0.50 이하 중 가장 큰 가격을 가지는 종목을 찾음 //ATM위 행사가 갯수 UNum = Option1.uppersATM; //ATM아래 행사가 갯수 LNum = Option1.lowersATM; //각 행사가의 풋종목의 종목코드를 저장할 변수를 배열변수로 선언 PutCode = new Array(UNum+LNum+1); //각 행사가의 풋종목의 현재가를 저장할 변수를 배열변수로 선언 PutPrice = new Array(UNum+LNum+1); //풋종목 찾기 //풋옵션은 ATM기준 아래 행사가 +단계, 위가 -단계이므로 //for문에서 HNum의 역수부터 시작해서 LNum까지 1씩 증가하면서 수행하도록 함 for (var ii = -UNum; ii <= LNum; ii++) { //ii단계 풋종목이 0.50 이하이면 if (Option1.GetCurrent(1, ii) <= 0.50) { //해당종목의 현재가를 배열변수 PutPrice의 방번호 ii+LNum에 저장 PutPrice[ii+UNum] = Option1.GetCurrent(1, ii); //해당종목의 현재가를 배열변수 PutCode의 방번호 ii+LNum에 저장 PutCode[ii+UNum] = Option1.GetATMPutRecent(ii); } else // 0.50 보다 크면 { //배열변수 PutPrice의 방번호 ii+LNum에 -1 저장 PutPrice[ii+UNum] = -1; //배열변수 PutCode의 방번호 ii+LNum에 -1 저장 PutCode[ii+UNum] = -1; } } //배열변수 PutPrice의 각 배열방의 값중 가장 큰값을 찾아 PP에 저장하고 //PutCode의 동일 방번호의 값을 PutOrderCode에 저장 PP = -1; PutOrderCode = -1; for (var iiii = -UNum; iiii <= LNum; iiii++) { if (PutPrice[iiii+UNum] > PP) { PP = PutPrice[iiii+UNum]; PutOrderCode = PutCode[iiii+UNum]; } } Main.MessageList("--------------------------------------------"); Main.MessageList("풋종목코드:",PutOrderCode,"/풋현재가 :",PP); //풋옵션종목 매수 if (PutExit == false) { //지정가 Account1.OrderBuy(PutOrderCode, 1, Option1.GetAskByCode(PutOrderCode, 5), 0); //시장가 //Account1.OrderSell(PutOrderCode, 1, 0, 1); } }if (Signal.signalKind == 4){Account1.OrderSell(PutOrderCode, 1, Option1.GetBidByCode(PutOrderCode, 5), 0);} }
프로필 이미지
좌오비우오비
2026-10-02
69
글번호 233797
답변완료

차트 신호 연동 call 옵션 매수 수식에 조건 개선

차트 신호 연동 call 옵션 매수 수식의 진입조건을 개선하고 싶습니다.1. 개선 내용체결 조건이 0.50pt 이하지만 가끔 추세가 분출할 때는 0.50pt 을 넘는 체결이 발생합니다.2. 체결가격 상승(0.50pt 초과) 시 행사가 변경 로직 추가주문 발주 직전 또는 시세 체크 시 해당 행사가의 현재가(또는 매도1호가)가 0.50pt를 초과하여 상승한 경우,해당 행사가 진입을 취소/제외하고 다시 현재가(또는 매도1호가)가 0.50 이하인 한 단계 아래(더 외가) 콜옵션 행사가를 찾아 매수 주문 발주.다만, 현재가(또는 매도1호가)가 체결 조건 0.50pt에서 10%까지의 상승은 허용함(0.55이하면 최초 선택한 행사가에서 주문 집행)항상 고맙습니다.************************************************************************************************************************************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.50 이하 중 가장 큰 가격을 가지는 종목을 찾음 //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++) { //값이 0.50 이하이면 if (Option1.GetCurrent(0, i) <= 0.50) { //해당종목의 현재가를 배열변수 CallPrice의 방번호 i+LNum에 저장 CallPrice[i+LNum] = Option1.GetCurrent(0, i); //해당종목의 종목코드를 배열변수 CallCode의 방번호 i+LNum에 저장 CallCode[i+LNum] = Option1.GetATMCallRecent(i); //주의 //배열변수의 방(공간)번호은 -가 없으므로 최하단 행사가를 0번방부터 //저장하도록 작성해야 함 } else// 0.50 보다 크면 { //배열변수 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, 5), 0); //시장가 //Account1.OrderSell(CallOrderCode, 1, 0, 1); } }if (Signal.signalKind == 2){Account1.OrderSell(CallOrderCode, 1, Option1.GetBidByCode(CallOrderCode, 5), 0);}}
프로필 이미지
좌오비우오비
2026-10-02
74
글번호 233796

초록이 님에 의해서 삭제되었습니다.

프로필 이미지
초록이
2026-09-29
14
글번호 233756
답변완료

엑셀 객체 사용법

엑셀로 매수매도 결과를 출력하고 싶은데 참조할만한 간단한 예제가 없나요? 참조해서 작성하고 싶은데 처음 접근을 어떻게 해야할지 잘 모르겠습니다.
프로필 이미지
후따오
2026-09-20
87
글번호 233693
답변완료

선물에서 난 신호를 옵션적용

// ====================================================================// ★ [사용자 지정 변수 설정 (Input 값)] ★// ====================================================================var MyVolume = 1; // 진입할 고정 계약수// [중요] 현재 코스피 선물 지수(예: 390.50) 흐름에 맞추어 숫자를 적어주셔야 작동합니다!// 콜옵션(MarketData1) 매매 기준 선물 가격 설정var CallEntryIdx = 1084.00; // 위/아래 관계없이 선물 가격이 이 가격을 지나가거나 닿으면 콜 매수!var CallTargetIdx = 1088.00; // 선물 가격이 이 가격 '이상' 올라가면 지정 콜옵션 익절!var CallLossIdx = 388.00; // 선물 가격이 이 가격 '이하'로 떨어지면 지정 콜옵션 손절!// 풋옵션(MarketData2) 매매 기준 선물 가격 설정var PutEntryIdx = 1094.00; // 위/아래 관계없이 선물 가격이 이 가격을 지나가거나 닿으면 풋 매수!var PutTargetIdx = 1080.00; // 선물 가격이 이 가격 '이하'로 떨어지면 지정 풋옵션 익절!var PutLossIdx = 397.00; // 선물 가격이 이 가격 '이상' 올라가면 지정 풋옵션 손절!// ====================================================================// 중복 주문 및 오류 방지를 위한 내부 변수var IsCallOrdered = 0;var IsPutOrdered = 0;// 실시간 선물 체결가를 오차 없이 저장하기 위한 내부 저장소var RealtimeLastPrice = 0;function Main_OnStart(){ Main.MessageLog("★ [2초봉 해결] 선물 마켓데이터3 다이렉트 틱 감시 시스템 가동 ★"); Main.MessageLog("현재 감시 중인 선물 종목명: " + MarketData3.name);}function GetThreeTicks(currentPrice){ if (currentPrice >= 3.00) { return 0.15; } else { return 0.03; }}// 시장 전체에서 내가 등록한 마켓데이터(선물/옵션)들의 시세가 단 1틱이라도 변하면 호출되는 실시간 엔진function Main_OnUpdateMarketData(MarketData){ // 새로 등록한 MarketData3(선물 종목)의 진짜 실시간 체결 현재가를 다이렉트로 가져옵니다. var CurrentFuturePrice = MarketData3.current; // 최초 실행 시 이전 가격 정보 채우기 if (RealtimeLastPrice == 0) { RealtimeLastPrice = CurrentFuturePrice; return; } // ---------------------------------------------------------------- // [파트 1] 지정 콜옵션(MarketData1) 매매 감시 // ---------------------------------------------------------------- var TargetCallCode = MarketData1.code; Account1.SetBalanceItem(TargetCallCode, 0); var CallCount = Account1.Balance.count; if (CallCount == 0 && IsCallOrdered == 0) { // 2초봉 차트가 미처 읽지 못하고 점프한 가격 영역을 실시간 선물 틱 시세(MarketData3)로 완벽히 추적합니다. if ((RealtimeLastPrice >= CallEntryIdx && CallEntryIdx >= CurrentFuturePrice) || (RealtimeLastPrice <= CallEntryIdx && CallEntryIdx <= CurrentFuturePrice)) { IsCallOrdered = 1; // 중복 진입 방지 ?? var OrderPrice = MarketData1.current + GetThreeTicks(MarketData1.current); Account1.OrderBuy(TargetCallCode, MyVolume, OrderPrice, 0); Main.MessageLog("?? [콜 진입 성공] 선물 실시간 틱 관통 완료 -> " + MarketData1.name + " 매수"); } } else if (CallCount > 0 && IsCallOrdered == 1) { if (CurrentFuturePrice >= CallTargetIdx) { IsCallOrdered = 2; var OrderPrice = MarketData1.current - GetThreeTicks(MarketData1.current); Account1.OrderSell(TargetCallCode, CallCount, OrderPrice, 0); Main.MessageLog("?? [콜 익절완료] 선물 실시간 현재가: " + CurrentFuturePrice); } else if (CurrentFuturePrice <= CallLossIdx) { IsCallOrdered = 2; var OrderPrice = MarketData1.current - GetThreeTicks(MarketData1.current); Account1.OrderSell(TargetCallCode, CallCount, OrderPrice, 0); Main.MessageLog("?? [콜 손절완료] 선물 실시간 현재가: " + CurrentFuturePrice); } } // ---------------------------------------------------------------- // [파트 2] 지정 풋옵션(MarketData2) 매매 감시 // ---------------------------------------------------------------- var TargetPutCode = MarketData2.code; Account1.SetBalanceItem(TargetPutCode, 0); var PutCount = Account1.Balance.count; if (PutCount == 0 && IsPutOrdered == 0) { if ((RealtimeLastPrice >= PutEntryIdx && PutEntryIdx >= CurrentFuturePrice) || (RealtimeLastPrice <= PutEntryIdx && PutEntryIdx <= CurrentFuturePrice)) { IsPutOrdered = 1; var OrderPrice = MarketData2.current + GetThreeTicks(MarketData2.current); Account1.OrderBuy(TargetPutCode, MyVolume, OrderPrice, 0); Main.MessageLog("?? [풋 진입 성공] 선물 실시간 틱 관통 완료 -> " + MarketData2.name + " 매수"); } } else if (PutCount > 0 && IsPutOrdered == 1) { if (CurrentFuturePrice <= PutTargetIdx) { IsPutOrdered = 2; var OrderPrice = MarketData2.current - GetThreeTicks(MarketData2.current); Account1.OrderSell(TargetPutCode, PutCount, OrderPrice, 0); Main.MessageLog("?? [풋 익절완료] 선물 실시간 현재가: " + CurrentFuturePrice); } else if (CurrentFuturePrice >= PutLossIdx) { IsPutOrdered = 2; var OrderPrice = MarketData2.current - GetThreeTicks(MarketData2.current); Account1.OrderSell(TargetPutCode, PutCount, OrderPrice, 0); Main.MessageLog("?? [풋 손절완료] 선물 실시간 현재가: " + CurrentFuturePrice); } } // 다음 틱 시세와 비교하기 위해 현재 가격을 이전 가격 저장소에 실시간 업데이트합니다. RealtimeLastPrice = CurrentFuturePrice;}function Main_OnUpdateOrder(UpdateOrder){ Account1.SetBalanceItem(MarketData1.code, 0); if (Account1.Balance.count == 0) IsCallOrdered = 0; Account1.SetBalanceItem(MarketData2.code, 0); if (Account1.Balance.count == 0) IsPutOrdered = 0;}이렇게 하는데 신호가 안나옵니다.늘 감사하는 마음으로 글을 씁니다.
프로필 이미지
sambuck
2026-09-18
89
글번호 233684

초록이 님에 의해서 삭제되었습니다.

프로필 이미지
초록이
2026-09-16
1
글번호 233670
답변완료

자동매매 수식 부탁합니다.

코스피 선물지수아침 8시52분 선물가격 =A, 8시53분25초 선물가격=B 라 하면,1) A > B 면, 8시54분에 풋옵션 매수2) A < B면, 8시54분에 콜옵션 매수3) A = B면, 매수 안함.4) 당일 8시59분20초에 전량 매도(청산)5) 프리미엄 1.00에 가장 가까운 걸로 매수하되, 옵션 만기일이 7일이하로 남은건 배제.6) 매수금액 한도 = 500만원7) 모든 매매는 시장가로이상입니다.
프로필 이미지
초록이
2026-09-16
129
글번호 233669

이스데일 님에 의해서 삭제되었습니다.

프로필 이미지
이스데일
2026-09-14
2
글번호 233603

cool2020 님에 의해서 삭제되었습니다.

프로필 이미지
cool2020
2026-09-14
30
글번호 233602