커뮤니티

문의_pointless

프로필 이미지
좌오비우오비
2024-11-15 09:47:52
713
글번호 225926
답변완료

첨부 이미지

<p>1) 체결오류 메세지 건(별첨파일 참조) 모의투자로 한달 동안 체결에 이상이 없었는데 금일 2024년 1월 19일 090200 주문가격이 하한가 미만이란 메세지를 받았습니다. 주문 건들은 모두 등가격이고 주문형식은 지정가 5를 사용하고 있습니다. 다시 한 번 주문을 내보았는데 102800 주문 건은 정상 체결되었습니다. 모의투자라서 발생할 수 있는 오류인가요? 2) 아래수식에 트레일링스탑 내용을 추가하고 싶습니다. &nbsp;&nbsp;&nbsp;진입가격이 등가격까지 상승했을 때 고점에서 0.5 하락시 청산 &nbsp;&nbsp;&nbsp;위 조건에서 청산되지 않고 내가격 1까지 상승했을 때 고점에서 1.25 하락시 청산 항상 고맙습니다. ************************************************************************************ var UNum; var LNum; var PutCode; var PutPrice; var PP; var PutOrderCode; var PutExit; function Main_OnStart() { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PutExit = false; &nbsp;&nbsp;&nbsp;&nbsp;Main.SetTimer(1, 5000); } //차트에서 신호가 발생하면 function Chart1_OnRiseSignal(Signal) { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//해당 신호가 매도신호이면 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (Signal.signalKind == 3) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Main.MessageList("--------------------------------------------"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Main.MessageList("매수신호 발생"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//0.5 이하 중 가장 큰 가격을 가지는 종목을 찾음 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//ATM위 행사가 갯수 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UNum = Option1.uppersATM; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//ATM아래 행사가 갯수 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;LNum = Option1.lowersATM; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//각 행사가의 풋종목의 종목코드를 저장할 변수를 배열변수로 선언 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PutCode = new Array(UNum+LNum+1); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//각 행사가의 풋종목의 현재가를 저장할 변수를 배열변수로 선언 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PutPrice = new Array(UNum+LNum+1); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//풋종목 찾기 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//풋옵션은 ATM기준 아래 행사가 +단계, 위가 -단계이므로&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//for문에서 HNum의 역수부터 시작해서 LNum까지 1씩 증가하면서 수행하도록 함 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (var ii = -UNum; ii &lt;= LNum; ii++) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//ii단계 풋종목이 0.5 이하이면&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (Option1.GetCurrent(1, ii) &lt;= 0.5 ) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//해당종목의 현재가를 배열변수 PutPrice의 방번호 ii+LNum에 저장 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PutPrice[ii+UNum] = Option1.GetCurrent(1, ii); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//해당종목의 현재가를 배열변수 PutCode의 방번호 ii+LNum에 저장 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PutCode[ii+UNum] = Option1.GetATMPutRecent(ii); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else //0.5 보다 크면 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//배열변수 PutPrice의 방번호 ii+LNum에 -1 저장 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PutPrice[ii+UNum] = -1; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//배열변수 PutCode의 방번호 ii+LNum에 -1 저장 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PutCode[ii+UNum] = -1; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//배열변수 PutPrice의 각 배열방의 값중 가장 큰값을 찾아 PP에 저장하고 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//PutCode의 동일 방번호의 값을 PutOrderCode에 저장 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PP = -1; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PutOrderCode = -1; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (var iiii = -UNum; iiii &lt;= LNum; iiii++) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (PutPrice[iiii+UNum] &gt; PP) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PP = PutPrice[iiii+UNum]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;PutOrderCode = PutCode[iiii+UNum]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Main.MessageList("--------------------------------------------"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Main.MessageList("풋종목코드:",PutOrderCode,"/풋현재가 :",PP); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//풋옵션종목 매수 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (PutExit == false) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//지정가 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Account1.OrderBuy(PutOrderCode, 1, Option1.GetAskByCode(PutOrderCode, 5), 0); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//시장가 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//Account1.OrderSell(PutOrderCode, 1, 0, 1); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} if (Signal.signalKind == 4) { Account1.OrderSell(PutOrderCode, 1, Option1.GetBidByCode(PutOrderCode, 5), 0); } &nbsp;&nbsp; }</p>
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2024-02-20 12:48:54

안녕하세요 예스스탁입니다. 1 특정 매수호가나 매도호가를 주문시 지정한 호가가 없으면 값이 0이 리턴됩니다. 지정한 호가가 없으면 그 아래 호가로 주문이 집행되게 수정해 드립니다. 2 2번 내용은 정확히 이해하지 못했습니다. 진입가격이 등가격이나 1내가격까지 상승이 어떤 의미인지 모르겠습니다. 진입종목이 ATM종목이 되면 최고가에서 0.5하락시 청산, 진입종목이 +1내가격이 되면 최고가에서 1.25하락하면 청산으로 작성해 드립니다. 3 var UNum; var LNum; var PutCode; var PutPrice; var PP; var PutOrderCode; var PutExit; var BID, Bnum,Fill; function Main_OnStart() { PutExit = false; Main.SetTimer(1, 5000); } //차트에서 신호가 발생하면 function Chart1_OnRiseSignal(Signal) { //해당 신호가 매도신호이면 if (Signal.signalKind == 3) { Main.MessageList("--------------------------------------------"); Main.MessageList("매수신호 발생"); //0.5 이하 중 가장 큰 가격을 가지는 종목을 찾음 //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.5 이하이면 if (Option1.GetCurrent(1, ii) <= 0.5 ) { //해당종목의 현재가를 배열변수 PutPrice의 방번호 ii+LNum에 저장 PutPrice[ii+UNum] = Option1.GetCurrent(1, ii); //해당종목의 현재가를 배열변수 PutCode의 방번호 ii+LNum에 저장 PutCode[ii+UNum] = Option1.GetATMPutRecent(ii); } else //0.5 보다 크면 { //배열변수 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) { //1~5매도호가 중는 가장 높은 가격 var OP = 0; for (var i = 5; i >= 1; i--) { if (OP == 0 && Option1.GetAskByCode(PutOrderCode, i) > 0) { OP = Option1.GetAskByCode(PutOrderCode, i) } } //1~5 매도호가가 모두 없으면 현재가 if (OP == 0) { OP = Option1.GetCurrent(PutOrderCode); } //지정가 BID = Account1.OrderBuy(PutOrderCode, 1, OP, 0); Fill = false; //시장가 //Account1.OrderSell(PutOrderCode, 1, 0, 1); } } if (Signal.signalKind == 4) { Main.KillTimer(3); //1~5매수호가 중는 가장 낮은 가격 var OP = 0; for (var i = 5; i >= 1; i--) { if (OP == 0 && Option1.GetBidByCode(PutOrderCode, i) > 0) { OP = Option1.GetBidByCode(PutOrderCode, i) } } //1~5 매수호가가 모두 없으면 현재가 if (OP == 0) { OP = Option1.GetCurrent(PutOrderCode); } Account1.OrderSell(PutOrderCode, 1, OP, 0); } } //타이머 function Main_OnTimer(nEventID) { //3번타이머 if (nEventID == 3) { //PutOrderCode코드 종목 잔고 셋팅 Account1.SetBalance(PutOrderCode, 0); //매수포지션 수량이 있으면 if (Account1.Balance.count > 0 && Account1.Balance.position == 2) { //PutOrderCode가 ATM이면 if (Option1.GetATMPutRecent(0) == PutOrderCode) { //PutOrderCode종목 당일최고가에서 0.5하락하면 청산 if (Option1.GetCurrent(PutOrderCode) <= Option1.GetHigh(PutOrderCode)-0.5) { //1~5매수호가 중는 가장 낮은 가격 var OP = 0; for (var i = 5; i >= 1; i--) { if (OP == 0 && Option1.GetBidByCode(PutOrderCode, i) > 0) { OP = Option1.GetBidByCode(PutOrderCode, i) } } //1~5 매수호가가 모두 없으면 현재가 if (OP == 0) { OP = Option1.GetCurrent(PutOrderCode); } Account1.OrderSell(PutOrderCode, 1, OP, 0); Main.KillTimer(3); } } //PutOrderCode종목이 1내가격이면 if (Option1.GetATMPutRecent(-1) == PutOrderCode) { //PutOrderCode종목 당일최고가에서 1.25하락하면 청산 if (Option1.GetCurrent(PutOrderCode) <= Option1.GetHigh(PutOrderCode)-1.25) { //1~5매수호가 중는 가장 낮은 가격 var OP = 0; for (var i = 5; i >= 1; i--) { if (OP == 0 && Option1.GetBidByCode(PutOrderCode, i) > 0) { OP = Option1.GetBidByCode(PutOrderCode, i) } } //1~5 매수호가가 모두 없으면 현재가 if (OP == 0) { OP = Option1.GetCurrent(PutOrderCode); } Account1.OrderSell(PutOrderCode, 1, OP, 0); Main.KillTimer(3); } } } } } //진입주문 주문번호 function Main_OnOrderResponse(OrderResponse) { if (BID == OrderResponse.orderID) { Bnum = OrderResponse.orderNum; } } //진입주문 체결발생 function Main_OnNotifyFill(NotifyFill) { if (Fill == false && NotifyFill.orderNum == Bnum) { Fill = true; //3번 타이머 동작 Main.SetTimer(3, 1000); } } 즐거운 하루되세요 > 좌오비우오비 님이 쓴 글입니다. > 제목 : 문의 > 1) 체결오류 메세지 건(별첨파일 참조) 모의투자로 한달 동안 체결에 이상이 없었는데 금일 2024년 1월 19일 090200 주문가격이 하한가 미만이란 메세지를 받았습니다. 주문 건들은 모두 등가격이고 주문형식은 지정가 5를 사용하고 있습니다. 다시 한 번 주문을 내보았는데 102800 주문 건은 정상 체결되었습니다. 모의투자라서 발생할 수 있는 오류인가요? 2) 아래수식에 트레일링스탑 내용을 추가하고 싶습니다. 진입가격이 등가격까지 상승했을 때 고점에서 0.5 하락시 청산 위 조건에서 청산되지 않고 내가격 1까지 상승했을 때 고점에서 1.25 하락시 청산 항상 고맙습니다. ************************************************************************************ 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.5 이하 중 가장 큰 가격을 가지는 종목을 찾음 //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.5 이하이면 if (Option1.GetCurrent(1, ii) <= 0.5 ) { //해당종목의 현재가를 배열변수 PutPrice의 방번호 ii+LNum에 저장 PutPrice[ii+UNum] = Option1.GetCurrent(1, ii); //해당종목의 현재가를 배열변수 PutCode의 방번호 ii+LNum에 저장 PutCode[ii+UNum] = Option1.GetATMPutRecent(ii); } else //0.5 보다 크면 { //배열변수 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); } }