커뮤니티

예스스팟 Q&A

답변완료

수식 문의

1. 예스스팟 초보라 수식좀 부탁드리겠습니다. 종목객체명: CMD 어카운트: CAC 확장차트객체: CCX 차트는 모두 시장시간으로 세팅됨 해외선물 미니다운존스 C1[이름] 메인차트에서 A라는 매수 신호발생시 확장차트 생성 확장차트 종목은 Emini S&P 500으로 설정 M1선이 M2선을 CROSSUP하고 스토캐스틱 30을 빠져나올때 매수신호 발생후 진입 파라볼릭선을 하향이탈하면 청산 메인차트는 기본적으로 포지션 트레이딩이며 A라는 신호가 국내서버 리셋시간이전까지 유효하다면 국내서버 리셋시간 1분전에 메인차트의 진입명, 진입종목명, 진입시간, 진입가격 등을 저장해야 하고, 다시 예스스팟을 켰을때 해당 진입이 있을경우 정보를 불러들임 이 정보는 진입이 되어 있을경우 매 15분마다 한번씩 저장되는 기능도 추가부탁드립니다. (정전이나 네트웍 단절시 대비) 가이드 라인만 잡아주시면 고맙겠습니다. 2. 엑셀객체를 추가하고 스팟을 가동하면 처음에는 정상적으로 엑셀이 실행됩니다. 이후 엑셀을 닫고 전략을 다시 적용하기 위해 예스스팟에서 삭제하고 다시 적용하면 예스스팟 편집기에서 아래와 같은 메시지가 뜹니다. 엑셀을 정상적으로 호출할 수 없습니다. CXL: 객체를 생성할 수 없습니다. 이후 파일 이름을 BB.xlsx로 바꾸고 실행하면 또 불러집니다. 마찬가지로 예스스팟에서 전략을 삭제하면 "엑셀을 정상적으로 호출할 수 없습니다."라는 메시지가 뜹니다. 엑셀을 닫으면 윈도우 작업관리자에서 EXCEL.EXE *32라는 부분이 삭제되어야 하는데 그렇치않고 계속 떠 있더군요. 설정환경은 아래와 같습니다. 객체명: CXL 파일명: AA.xlsx 프로세스 생성: 아니오 원인이 무엇인가요? 참고로 윈도우7, 엑셀2013을 씁니다. 3. 예스스팟 편집기에서 자동완성기능은 끌수 없나요?? 익숙치 않은 사용자에게느 많이 불편하군요. 마지막으로 예스스팟 답변들이 통상적으로 많이 늦는데 조금만 빨리 달아주실수는 없는지요?? 부탁드리는 입장에서 이런말씀드리기가 좀 뭐하지만, 이곳 게시판도 신경써주시면 감사드리겠습니다. 예스스팟 QA질문란을 예스스팟수식 Q&A와 예스스팟 프로그램 Q&A로 분리해서 운용하는 것도 나쁘지 않을 듯 합니다. 수고하십시요.
프로필 이미지
gt
2014-06-16
1464
글번호 223016

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

프로필 이미지
훈sys
2014-06-10
10
글번호 223015
답변완료

간단한 질문 문의

안녕하세요 기존 게시판에 공개된 스팟전략으로 공부중인데 초보라 이해부탁드려요 아래는 선물신호시 3.0~1.5의 프리값중 2.3에 가까운 옵션 종목을 매도하는 스팟전략인데요 장중의 프리값의 큰변동시 진입종목이 변경될때가 있는데 이와 상관없이 처음 진입한 종목을 당일 장중 내내 거래하고 싶습니다. 어려우셔도 아래식을 지정종목으로 거대될수 있도록 스팟전략 부탁드립니다. - 예)금일의 경우 장중내내 선물 매수신호시 ---> 풋 외가 1호가(P257.5) 매도 선물 매도신호시 ---> 콜 외가 1호가(C262.5) 매도 ============================================================================= var Start; var UNum; var LNum; var CallCode; var CallPrice; var PutCode; var PutPrice; var CC; var PP; var CallOrderCode; var PutOrderCode; function Main_OnStart() { Start = 0; } function Chart1_OnRiseSignal(Signal) { UNum = Option.uppersATM; LNum = Option.lowersATM; CallCode = new Array(UNum+LNum+1); PutCode = new Array(UNum+LNum+1); CallPrice = new Array(UNum+LNum+1); PutPrice = new Array(UNum+LNum+1); for (var i = -LNum; i <= UNum; i++) { if (Option.GetCurrent(0, i) <= 3.0 && Option.GetCurrent(0, i) >= 1.5) { CallPrice[i+LNum] = Math.abs(Option.GetCurrent(0, i)-2.3); CallCode[i+LNum] = Option.GetATMCallRecent(i); } else { CallPrice[i+LNum] = 9999999; CallCode[i+LNum] = 9999999; } } for (var ii = -UNum; ii <= LNum; ii++) { if (Option.GetCurrent(1, ii) <= 3.0 && Option.GetCurrent(1, ii) >= 1.5) { PutPrice[ii+UNum] = Math.abs(Option.GetCurrent(1, ii)-2.3); PutCode[ii+UNum] = Option.GetATMPutRecent(ii); } else { PutPrice[ii+UNum] = 9999999; PutCode[ii+UNum] = 9999999; } } //buy신호 발생시 if (Signal.signalKind == 1) { Start = 1; PP = 9999999; PutOrderCode = 9999999; for (var iii = -LNum; iii <= UNum; iii++) { if (PutPrice[iii+LNum] < PP) { PP = PutPrice[iii+LNum]; PutOrderCode = PutCode[iii+LNum] } } if (PP < 9999999) { Account1.OrderSell(PutOrderCode, 1, 0, 1); Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드:"+PutOrderCode+" /START:"+Start); } else { Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start); } } // Exitlong신호 발생시 if (Start == 1 && Signal.signalKind == 2) { Start = 0; if (PP > 0) { Account1.OrderBuy(PutOrderCode, 1, 0, 1); Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드:"+PutOrderCode+" /START:"+Start); } else { Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start); } } //sell신호 발생시 if (Signal.signalKind == 3) { Start = -1; CC = 9999999; CallOrderCode = 9999999; for (var iiii = -UNum; iiii <= LNum; iiii++) { if (CallPrice[iiii+UNum] < CC) { CC = CallPrice[iiii+UNum]; CallOrderCode = CallCode[iiii+UNum]; } } if (CC < 9999999) { Account1.OrderSell(CallOrderCode, 1, 0, 1); Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드:"+CallOrderCode+" /START:"+Start); } else { Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start); } } //exitshort신호 발생시 if ( Start == -1 && Signal.signalKind == 4) { Start = 0; if (CC > 0) { Account1.OrderBuy(CallOrderCode, 1, 0, 1); Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드:"+CallOrderCode+" /START:"+Start); } else { Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start); } } } ================================================================================ 수고하세요~
프로필 이미지
탄젠트80
2014-06-09
1370
글번호 223014
답변완료

진입체결 확인 즉시 청산주문

안녕하세요. 다음 수식 부탁드립니다. 연결선물 분봉, YT 리버스신호에 의한 YesSpot주문, 데이트레이딩 -------------------------- 1) 장개시후 YT에서 조건 충족시 신호 발생 (리버스 신호) 2) YesSpot에서 YT신호 발생 종가로 주문 - YT신호가 발생한 후 5봉이 경과하기 전에 체결이 안되면 주문 취소 - 5봉 경과전 새로운 YT신호는 모두 무시 3) YT기준 5봉이내 2)의 주문 체결시 - 체결확인 즉시, Spot에서 매수진입신호발생 종가 +0.50 매수청산주문 매도진입신호발생 종가 -0.50 매도청산주문 (YT의 Atlimit의 주문방식이 아니고, 종가 + - 0.50 주문대기 방식임) - 주문체결시, Spot에서 3) 4)에 의한 청산이 발생하기 전까지 YT의 새로운 신호는 모두 무시 - 3) 4)에 의한 청산이후, YT의 새로운 리버스 신호발생하면 Spot 진입 4) 실제 진입체결가 기준으로 1pt 손절 ---> YT와 진입기준이 다르므로 Spot으로 제어 - Atstop 개념 - 손절 발생시 당일 추가적인 매매 없음 (Spot으로 제어) 5) 14:30 포지션 청산 (Spot으로 제어) - 계좌에 다른 시스템들이 혼합되어 있으므로, 계좌 진고포지션 기준이 아닌 시스템 기준으로 요망 참고로 위의 방식을 사용할 경우 YT의 리버스 신호와 다르게 주문이 진행됩니다. (예를들어, YT의 신호발생후 Spot에서 5봉이내에 체결이 되었을 경우, 이후에도 YT는 리버스신호가 계속 발생할 수 있으나, 위의 경우 Spot에서는 0.5pt 익절 또는 1pt 손절이 발생할 때까지 YT의 모든 신호가 무시됨) 이상입니다. 그럼 오늘도 즐거운 하루되시기를 바라겠습니다. 감사합니다.
프로필 이미지
새로운세상
2014-06-17
1412
글번호 223013
답변완료

오류 확인 부탁드립니다.

안녕하세요. 이제 막 예스스팟을 시작한 초보입니다 선물 신호를 옵션 신호로 전환하는데 다음과 같은 에러가 떴습니다. EeferenceError:ACC6268 is not defined 무엇이 잘못된건지 잘 모르겠습니다 ㅜㅜ
프로필 이미지
린포체
2014-06-09
1252
글번호 223012
답변완료

질문드립니다.

예스스팟으로 옵션매수거래를 하고 있는데 두 가지 질문사항이 있습니다. 1. 만약 청산조건이 두 가지가 있는데... 이게 두가지가 동시에 충족되는 경우.. 계좌에 보유하고 있는 옵션을 청산하고 매도포지션까지 들어가게 되는 상황이 발생하는 거 같은데 ordersell명령을 할 때 신규매도는 금지하게 할수 있는 방법이 있을까요?(즉 매수한 옵션을 청산만 하고 신규매도는 못하도록) 2. "전일 종가 대비 당일 시가가 1%이상 갭상승 또는 갭하락하는 경우 해당 챠트의 첫번째 신호는 무시한다" 를 수식으로 전환가능할까요? 감사합니다.
프로필 이미지
지나리
2014-06-15
1280
글번호 223011
답변완료

문의 올립니다.

안녕하세요. 922 문의글에 올려 주신 답변 대단히 감사합니다. 그와 관련하여 부분적으로 보완 질의 드리고자 합니다. 상황: 1. 차트와 지표들을 눈으로 관찰하면서, 일정 조건에 손으로 시장가 주문을 클릭해서 진입하고, 2. 또 계속 지표들을 눈으로 관찰하면서 손으로 시장가 주문 클릭으로 청산하고 나오는 방식으로 매매하는데, 3. 혹시라도 손으로 청산을 제대로 못하는 경우를 대비해서 안전방책으로 넉넉한 스탑 거리를 두고 Spot을 이용한 자동 청산 예약주문을 해 둠. 4. 원하는 대로 손으로 제대로 시장가 주문 클릭으로 청산하고 나온 경우, 이제 필요 없어진, Spot으로 주문한 자동 청산 예약 미체결 주문은, Spot으로 자동 최소되게 함. (스팟 식으로 부탁드리고 싶은 부분은 위의 3번, 4번 내용입니다.)) 예를 들어서, 아래와 같은 상황을 위한 Spot식을 알려 주시면 대단히 감사하겠습니다. A. 손으로 시장가 주문 클릭해서 100포인트로 매수진입함. ((이 것은 스팟 소스 필요 없음)) B. 이렇게 손으로 진입된 잔고가 발생하면, Spot에서 자동으로 이를 감지해서, 그 밑에 좀 넉넉한 안전 장치로서, 20틱 아래인 99.80포인트((1틱 = 0.01포인트))에 sell stop 주문이 자동으로 나가도록 Spot을 작동시킴. C. 눈으로 다른 지표들 보면서 관찰하다가 진입가격의 5틱 아래인 99.95포인트에서 바로 손으로 시장가 주문 클릭해서 손절 청산 했다고 가정. ((이 C 부분은 스팟 소스 필요 없음)) 이제 Spot이 99.80포인트에 sell stop 주문한 것은 필요가 없어진 상황임. D. 그래서 이 99.80포인트에 sell stop되도록 한 미체결 주문이, Spot으로 취소되게 함. 즉, Spot으로 아래의 내용 가동시킴: 가. (손으로든, 또는 예스 랭귀지 시스템식으로든 간에) 매수진입된 롱포지션이 있는 경우, 스팟이 그 잔고를 감지해서, Spot으로, 초기스탑으로써, 그 매수평균단가의 20틱 아래에 셀 스탑 주문이 나가서 유지되게 하고, ((요체: 잔고가 생기면 스팟이 스탑 주문 내보냄)) ((여기에, 추가해서, 25틱 이익 발생 후 최고가 10틱 아래에 추적스탑하는 것을 추가해 주셔도 감사하겠습니다.)) 나. (손이나 시스템 식 자동거래로 매수진입된) 롱포지션이 (손거래나 시스템 식 자동거래로) 청산되어서, 사라지고 없어 지면 ((즉, 잔고가 있다가 없어 진 것이 확인된 후에)), 그와 동시에 즉시, (스팟으로 셀 스탑 주문이 된) 미체결 주문을 취소해 버림. ((요체: 잔고가 없어 지면 즉시 미체결 스탑주문 취소)) 이런 내용의 스팟식을 알려 주시면 대단히 감사하겠습니다. 그러면 알려 주신 내용을 바탕으로 해서, 매수나 매도 진입 후 여러 가격 변동 상황에 대한 (익절, 손절, 추적스탑 등의) 청산소스들을 제가 만들어 보도록 하겠습니다. 감사합니다.
프로필 이미지
즐겁게
2014-06-05
1318
글번호 223010

즐겁게 님에 의해서 삭제되었습니다.

프로필 이미지
즐겁게
2014-06-04
1
글번호 223009
답변완료

오버잔고가 있을시 확장챠트 구성

안녕하세요 콜옵션과 대항 풋옵션 255-255 풋옵션과 대항 콜옵션.. 으로 확장챠트 구성. 잔고가 없을때는 위의 구성으로 오버잔고가 있을시는 잔고의 구분에 따라 오버 옵션의 콜풋으로 주종목을 구성하고 싶습니다 감사합니다. var Start; var S1, S2; var OrderCode1; var OrderCode2; var P1; var AvgCost; var PLsum; var Nth = 0; var ItemCode = new Array(100);//갯수 var ItemObject = new Array(100);//갯수 var ItemHigh = new Array(100);//갯수 var ItemLow = new Array(100);//갯수 var Balnum; var UNum; var LNum; var CallCode; var CallPrice; var CallATM; var PutATM; var PutCode; var PutPrice; var CoCall; var CoPut; var CC; var PP; var vol1; var vol3; var vol4; var vol5; var vol2; var vol6; var vol7; var CaBuyID, CaSellID; var CBcond, CScond; var CaBuyNum, CaSellNum; var PuBuyID, PuSellID; var PBcond, PScond; var PuBuyNum, PuSellNum; var BFill,SFill; var CallStart; var PutStart; var ChartEx11 ;//= null; var ChartEx12 ;//= null; function Main_OnStart() { Start = 0; Main.MessageList("시 작:"); Nth = 0; Balnum = Account1.GetTheNumberOfBalances() Main.MessageList("잔고종목수",Balnum); if (Balnum > 0) { //계좌의 잔고리스트에서 첫번째 잔고 셋팅 Account1.SetBalanceIndex(Nth);//잔고는 순번이 0부터 시작 //셋팅된 잔고의 수량이 0이상이면 if (Account1.Balance.count > 0) { //1번째 종목객체 생성요청 Main.ReqMarketData(Account1.Balance.code, 20,0); //ItemCode의 [Nth]번째 방에 종목코드 저장 ItemCode[Nth] = Account1.Balance.code; Main.MessageList("종목요청",Account1.Balance.code); } if (Account1.Balance.categoryEx == 31 ) CallOrderCode = Account1.Balance.code; if (Account1.Balance.categoryEx == 32 ) PutOrderCode = Account1.Balance.code; } //코스피200선물에 가장 가까운 콜/풋 종목 선정 var var1 = MarketData1.open;//current;//expectedPrice var var2 = parseInt(var1/10)*10; var var3 = var1%10; var ATM = -1; if (var3 >= 8.75) ATM = var2+10; else if (var3 < 8.75 && var3 >= 6.25) ATM = var2+7.5; else if (var3 < 6.25 && var3 >= 3.75) ATM = var2+5.0; else if (var3 < 3.75 && var3 >= 1.25) ATM = var2+2.5; else ATM = var2+0.0; CallATM = Option.GetCodeByExercisePrice(0, ATM); PutATM = Option.GetCodeByExercisePrice(1, ATM); Main.MessageList("선물시가 :",MarketData1.open,"ATM",ATM,"콜ATM :",CallATM ,"풋ATM :",PutATM); //2.0에 가장 가까운 콜/풋 종목 UNum = Option.uppersATM; LNum = Option.lowersATM; CallCode = new Array(UNum+LNum+1); PutCode = new Array(UNum+LNum+1); CallPrice = new Array(UNum+LNum+1); PutPrice = new Array(UNum+LNum+1); if (Balnum == 0 || Account1.Balance.categoryEx != 31) { for (var i = -LNum; i <= UNum; i++) { CallPrice[i+LNum] = Math.abs(Option.GetCurrent(0, i)-2.0); CallCode[i+LNum] = Option.GetATMCallRecent(i); } CC = 99999999; CallOrderCode = -1; for (var i = -LNum; i <= UNum; i++) { if (CallPrice[i+LNum] < CC) { CC = CallPrice[i+LNum]; CallOrderCode = CallCode[i+LNum]; } if (CallOrderCode == CallCode[i+LNum]) { CallOrderCode1 = CallCode[i+LNum-1]; CallOrderCode2 = CallCode[i+LNum+1]; CallOrderCode3 = CallCode[i+LNum+2]; } } } if (Balnum == 0 || Account1.Balance.categoryEx != 32) { for (var ii = -UNum; ii <= LNum; ii++) { PutPrice[ii+UNum] = Math.abs(Option.GetCurrent(1, ii)-2.0); PutCode[ii+UNum] = Option.GetATMPutRecent(ii); } PP = 99999999; PutOrderCode = -1; for (var ii = -UNum; ii < LNum; ii++) { if (PutPrice[ii+UNum] <= PP) { PP = PutPrice[ii+UNum]; PutOrderCode = PutCode[ii+UNum]; } if (PutOrderCode == PutCode[ii+UNum]) { PutOrderCode1 = PutCode[ii+UNum-1]; PutOrderCode2 = PutCode[ii+UNum+1]; PutOrderCode3 = PutCode[ii+UNum+2]; PutOrderCode4 = PutCode[ii+UNum+3]; } } } //2.0과 가장 가까운 콜의 반대 옵션종목 CoPut = Option.GetCodeByExercisePrice(1,Option.GetExercisePrice(CallOrderCode)); CoCall = Option.GetCodeByExercisePrice(0,Option.GetExercisePrice(PutOrderCode)); Main.MessageList("2.0근접콜",CallOrderCode,"콜반대",CoPut,"2.0근접풋",PutOrderCode,"풋반대",CoCall); //확장 차트객체 요청 //주종목 시가기준 콜 var ChartSet4 = new ReqChartItem(CallOrderCode,3, CHART_PERIOD_MINUTE, 5000, CHART_REQCOUNT_BAR, false, false); var ChartSet5 = new ReqChartItem(PutOrderCode,3, CHART_PERIOD_MINUTE, 5000, CHART_REQCOUNT_BAR, false, false); //시스템 설정 var TradeSet4 = new SystemTradeInfo(TRADE_FIXCAPITAL,1, 10000000,1, // 자산 0.07, 0.07,CALCMETHOD_PERCENT, // 진입/청산 수수료 0.01, 0.01,CALCMETHOD_POINT, // 진입/청산 슬리피지 PYRAMIDING_ENTRY, // 피라미딩 설정여부 50, //1000, // 최대진입수량 10); // 최대진입횟수 var SystemSet4 = new SystemInfo("Opover",YL_TYPE_NORMAL,null,TradeSet4,null); //지표 설정 I1 = new IndicatorInfo("중심", YL_TYPE_NORMAL,new Array(new YLInputVar(null,null))); var IndicatorSet4 = new Array(I1); //참조데이터 추가 //data2 2.0 근접콜 var R31 = new ReqChartItem(CallOrderCode, 3, CHART_PERIOD_MINUTE, 5000, CHART_REQCOUNT_BAR, false, false); //data3 2.0 근접콜 반대종목 var R32 = new ReqChartItem(CoPut, 3, CHART_PERIOD_MINUTE, 5000, CHART_REQCOUNT_BAR, false, false); //data4 3.0 근접풋 var R33 = new ReqChartItem(PutOrderCode, 3, CHART_PERIOD_MINUTE, 5000, CHART_REQCOUNT_BAR, false, false); //data4 3.0 근접풋 반대종목 var R34 = new ReqChartItem(CoCall, 3, CHART_PERIOD_MINUTE, 5000, CHART_REQCOUNT_BAR, false, false); var ReferDataSet4 = new Array(R32); var ReferDataSet5 = new Array(R34); //지정한 설정으로 챠트 생성을 요청 Main.ReqChartEx(ChartSet4, SystemSet4, IndicatorSet4, ReferDataSet4); Main.ReqChartEx(ChartSet5, SystemSet4, IndicatorSet4, ReferDataSet5); } function Main_OnU*pdateAccount(sAccntNum, sItemCode, lU*pdateID) { //계좌에 변동이 생기면 if (sAccntNum == Account1.number && (lU*pdateID == 30001 )) { Account1.SetBalanceIndex(Nth);//잔고는 순번이 0부터 시작 //Nth번째 종목객체 생성요청 Main.ReqMarketData(Account1.Balance.code,20,0); //ItemCode의 [Nth]번째 방에 종목코드 저장 ItemCode[Nth] = Account1.Balance.code; Main.MessageList("종목요청",Account1.Balance.code); } } //요청한 종목객체 수신되면 function Main_OnRcvMarketData(MarketData) { Main.MessageList("종목객체수신",MarketData.code); //수신받은 종목객체의 종목코드와 직전에 요청한 종목과 같은지 확인 후에 if (MarketData.code == ItemCode[Nth]) { Main.MessageList(Nth,"번째","종목객체생성완료 : ",ItemCode[Nth]); ItemObject[Nth] = MarketData;//ItemObject의 [Nth]방에 수신받은 객체를 저장 ItemHigh[Nth] = 0; //ItemHigh의 [Nth]방의 값을 0으로 셋팅 (이후 최고값 계산해 저장할 변수) ItemLow[Nth] = 99999; //ItemHigh의 [Nth]방의 값을 0으로 셋팅 (이후 최저값 계산해 저장할 변수) Nth = Nth+1; //종목객체 수신완료되면 다음 종목 종목객체 요청 if (Balnum > 0) { //계좌의 잔고리스트에서 다음 순번 잔고 셋팅 Account1.SetBalanceIndex(Nth); //셋팅된 잔고의 수량이 0이상이면 if (Account1.Balance.count > 0) { //Nth번째 종목객체 생성요청 Main.ReqMarketData(Account1.Balance.code, 0,0); //ItemCode의 [Nth]번째 방에 종목코드 저장 ItemCode[Nth] = Account1.Balance.code; Main.MessageList("종목요청",Account1.Balance.code); } } } } //요청한 차트객체 생성이 완료되면 function Main_OnRcvChartEx(ChartEx) { if ( ChartEx.GetCode(1) == CallOrderCode) { ChartEx4 = ChartEx; OrderCode1 = Main.GetOrderCode(ChartEx4.GetCode(1));//ATM단위로 사용할때 Main.MessageList("Cx코드 :",ChartEx4.GetCode(1)); } if ( ChartEx.GetCode(1) == PutOrderCode) { ChartEx5 = ChartEx; OrderCode2 = Main.GetOrderCode(ChartEx5.GetCode(1));//ATM단위로 사용할때 Main.MessageList("Px코드 :",ChartEx5.GetCode(1)); } Start = 1; }
프로필 이미지
파문일기
2014-05-31
1263
글번호 223004

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

프로필 이미지
무명
2014-05-30
0
글번호 223003