커뮤니티

예스스팟 Q&A

답변완료

OrderBuy, OrderSell 질문

안녕 하세요. 질문이 있어 문의 드립니다. 1. currentPos = Account1.Balance.position; 시험 적용을 하고 진입을 했습니다. 그리고 전략을 없애고 나서 다시 시험 적용을 했는데 Account1.Balance.position이 "-1"로 뜹니다. 현재 차트 주문으로 확인을 하면 진입이 된 상태인데 포지션이 없다고 나오는데 원래 그런건지 궁금 합니다. *** 해결 했습니다. => SetBalanceItem(sItemCode, nPosition) 이 함수를 실행하고 사용 하면 되네요. 2. Option 행사가의 갯수를 보고 싶어 간단히 짰는데 모의라서 그런지 값이 0으로 나옵니다. 실제 돈을 입금하고 해야 가능 한건가요? UNum = Option.uppersATM; LNum = Option.lowersATM; 3. 아래와 같이 OrderSell과 OrderBuy를 테스트 하는데 Account1.OrderBuy(OrdeCode, 1, Present.current, 0); 로 사용하면 진입에 문제가 없는데 Account1.OrderBuy(OrdeCode, 1, Present.current, 1); Account1.OrderBuy(OrdeCode, 1, 0, 1); //문서 예제 10번 을 사용하면 "주문 가격이 하한가 이하입니다"로 표시 되고 진입이 안됩니다. OrderBuy의 nPriceKind값이 시장가(1)로 진입이 안되는건지 모르겠네요. function Main_OnStart() { Main.MessageList("선물 START"); OrderCode = Main.GetOrderCode(Present.code); Main.MessageList("OrderCode = ", OrderCode); Main.SetTimer(1, 2000); } function Main_OnTimer(nEventID) { //ret_value = Account1.OrderBuy(OrderCode, 1, Present.current, 0); ret_value = Account1.OrderBuy(OrderCode, 1, Present.current, 1); Main.KillTimer(1); } function Main_OnOrderResponse(OrderResponse) { Main.MessageList("Main_OnOrderResponse"); Main.MessageList("Error=", OrderResponse.error, ", orderCount=", OrderResponse.orderCount); Main.MessageList("orderID=", OrderResponse.orderID, ", orderKind=", OrderResponse.orderKind); Main.MessageList("orderPrice=", OrderResponse.orderPrice, ", priceKind=", OrderResponse.priceKind); } function Main_OnNotifyFill(NotifyFill) { Main.MessageList("Main_OnNotifyFill"); Main.MessageList("fillCount=", NotifyFill.fillCount, ", fillPrice=", NotifyFill.fillPrice); Main.MessageList("Error=", NotifyFill.error, ", orderCount=", NotifyFill.orderCount); Main.MessageList("orderPrice=", NotifyFill.orderPrice, ", priceKind=", NotifyFill.priceKind); }
프로필 이미지
jonathan
2014-04-25
1269
글번호 222943

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

프로필 이미지
jonathan
2014-04-17
0
글번호 222941

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

프로필 이미지
jonathan
2014-04-17
6
글번호 222940
답변완료

사용자 함수 작성 문의

예스 트레이더 예스 스팟 Java Script를 사용해서 특정 이벤트 발생시 email 전송 기능 구현할 수 있을까요?
프로필 이미지
개똥이
2014-04-16
1179
글번호 222934
답변완료

답변부탁드립니다..

또 죄송합니다.. 스팟 질문 좀 드리겠습니다. 예스랭귀지 print 함수를 사용해서 데이타를 저장하는 기능이 스팟에도 있나요.. 호가 잔량을 데이타 화 시켜서 저장하고 싶은데 방법이 있다면 자세하게 알려 주십시요
프로필 이미지
nadogaja
2014-04-16
1190
글번호 222933
답변완료

EuroFX, SnP 미체결 내역 오류 데이타 간혹 발생됨

미체결 내역의 account1,position1.count 가 0 인 미체결이 발생하오니, 확인 부탁합니다.
프로필 이미지
경복궁
2014-04-16
1206
글번호 222932
답변완료

교차차트

콜옵션과풋옵션이서로교차되는시점이보이는교차차트를만들수있나요?가능한수식이있음부탁드립니다
프로필 이미지
하얀그림자
2014-04-15
1185
글번호 222930

시초가기준 등가옵션에서

안녕하세요 1. 연결선물 기준으로 시초가 생성시 등가옵션을 구하고, 양옵션의 위아래 행사가 2개씩 포함 콜 5개 풋 5개의 옵션으로 확장챠트를 만듭니다. 2-11번까지의 옵션참조데이타는 일봉을 포함한 종목생성을 한후에 2. 양옵션의 행사가 중심으로 최근 5일전까지의 전일 고가저가를 비교한후, 콜일봉고가와 풋일봉고가가 0.2 이내에 근접한경우 이의 수치를 구하고 일봉저가의 경우도 마찬가지로 수치를 구하고 싶습니다. --> 3. 가장 최근의 것부터 순서대로 수치를 구하고 싶습니다. 감사합니다. var Start; var CallATM; var PutATM; var Nth = 1; var CallObject; var PutObject; var OrderCode; var MarketData1; var CallHigh = new Array(300); var CallLow = new Array(300); var PutHigh = new Array(300); var PutLow = new Array(300); var HHPrice = new Array(100); var LLPrice = new Array(100); var ItemObject = new Array(100);//갯수 var CallItem = new Array(100);//갯수 var PutItem = new Array(100);//갯수 var CoPutItem = new Array(100);//갯수 //스팟 시작시에 function Main_OnStart() { Start = 0; //날자 및 시계계산 var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); //코스피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; if (Start == 0 && HHMMSS >= 090000 ) { var UNum = Option.uppersATM; var LNum = Option.lowersATM; //CallATM = -1; for (var i = -LNum; i <= UNum; i++) { if (Option.GetExercisePrice(0, i) == ATM) { CallATM = Option.GetATMCallRecent(i+2,0); CallATM1 = Option.GetATMCallRecent(i+1,0); CallATM2 = Option.GetATMCallRecent(i,0); CallATM3 = Option.GetATMCallRecent(i-1,0); CallATM4 = Option.GetATMCallRecent(i-2,0); } } //PutATM = -1; for (var i = -UNum; i <= LNum; i++) { if (Option.GetExercisePrice(1, i) == ATM) { PutATM = Option.GetATMPutRecent(i-2,0); PutATM1 = Option.GetATMPutRecent(i-1,0); PutATM2 = Option.GetATMPutRecent(i,0); PutATM3 = Option.GetATMPutRecent(i+1,0); PutATM4 = Option.GetATMPutRecent(i+2,0); } } Main.MessageList("콜ATM :",CallATM2 ,"풋ATM :",PutATM2); //확장 차트객체 요청 var ChartSet3 = new ReqChartItem("00000000",1, CHART_PERIOD_MINUTE, 5000, CHART_REQCOUNT_BAR, false, false); //시스템 설정 var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT,1, 10000000,1, // 자산 0.003, 0.003,CALCMETHOD_PERCENT, // 진입/청산 수수료 0.05, 0.05,CALCMETHOD_POINT, // 진입/청산 슬리피지 PYRAMIDING_ENTRY, // 피라미딩 설정여부 1000, //1000, // 최대진입수량 10); // 최대진입횟수 var SystemSet3 = new SystemInfo("OpFuture",YL_TYPE_NORMAL,null,TradeSet,null); //참조데이터 추가 var R31 = new ReqChartItem(CallATM, 2, CHART_PERIOD_MINUTE, 2500, CHART_REQCOUNT_BAR, false, false); var R32 = new ReqChartItem(CallATM1, 2, CHART_PERIOD_MINUTE, 2500, CHART_REQCOUNT_BAR, false, false); var R33 = new ReqChartItem(CallATM2, 2, CHART_PERIOD_MINUTE, 2500, CHART_REQCOUNT_BAR, false, false); var R34 = new ReqChartItem(CallATM3, 2, CHART_PERIOD_MINUTE, 2500, CHART_REQCOUNT_BAR, false, false); var R35 = new ReqChartItem(CallATM4, 2, CHART_PERIOD_MINUTE, 2500, CHART_REQCOUNT_BAR, false, false); var R36 = new ReqChartItem(PutATM, 2, CHART_PERIOD_MINUTE, 2500, CHART_REQCOUNT_BAR, false, false); var R37 = new ReqChartItem(PutATM1, 2, CHART_PERIOD_MINUTE, 2500, CHART_REQCOUNT_BAR, false, false); var R38 = new ReqChartItem(PutATM2, 2, CHART_PERIOD_MINUTE, 2500, CHART_REQCOUNT_BAR, false, false); var R39 = new ReqChartItem(PutATM3, 2, CHART_PERIOD_MINUTE, 2500, CHART_REQCOUNT_BAR, false, false); var R40 = new ReqChartItem(PutATM4, 2, CHART_PERIOD_MINUTE, 2500, CHART_REQCOUNT_BAR, false, false); var ReferDataSet3 = new Array(R31,R32,R33,R34,R35,R36,R37,R38,R39,R40); //지정한 설정으로 챠트 생성을 요청 Main.ReqChartEx(ChartSet3,SystemSet3,null,ReferDataSet3); } } //요청한 차트객체 생성이 완료되면 function Main_OnRcvChartEx(ChartEx) { if ( ChartEx.GetCode(1) == MarketData1.code) { ChartEx3 = ChartEx; Start = 1; OrderCode = Main.GetOrderCode(MarketData1.code); if (ChartEx3.GetCode(4) == CallATM2 && ChartEx3.GetCode(9) == PutATM2) { for (var i = 2; i < 12; i++) { Main.ReqMarketData(ChartEx3.GetCode(i),12,0);//CallItem = } } } } function Main_OnRcvMarketData(MarketData) { Main.MessageList("종목객체수신",MarketData.code); for (var i = 2; i < 12; i++) { if (MarketData.code == ChartEx3.GetCode(i)) { Main.MessageList(i,"번째","종목객체생성완료 : ",ChartEx3.GetCode(i)); ItemObject[i] = MarketData; } { if (ItemObject[i] == MarketData && i < 7) { CallItem[i] = MarketData; CoPutItem[i+5] = MarketData; } if (ItemObject[i] == MarketData && i >= 7) { PutItem[i] = MarketData; } } } if (CallItem == MarketData && CoPutItem == MarketData )//&& PutATM2 == MarketData) { for (var ii = 0; ii <= 120; ii++) { for (var iii = 1; iii <= 5; iii++) { CallHigh[ii] = MarketData.GetPrevHigh(iii); CallLow[ii] = MarketData.GetPrevLow(iii); PutHigh[ii] = MarketData.GetPrevHigh(iii); PutLow[ii] = MarketData.GetPrevLow(iii); } } } /* if (CoPutItem == sItemCode && lU*pdateID == 20001) { for (var iii = 1; iii <= 5; iii++) { PutHigh[ii] = MarketData.GetPrevHigh(iii); PutLow[ii] = MarketData.GetPrevLow(iii); } } */ { if (Math.abs(CallHigh[ii]-PutHigh[ii]) <= 0.2 && CallHigh[ii] >= PutHigh[ii]) { HHPrice[ii] = CallHigh[ii]; } else if (Math.abs(CallHigh[ii]-PutHigh[ii]) <= 0.2 && CallHigh[ii] < PutHigh[ii]) { HHPrice[ii] = PutHigh[ii]; } if (Math.abs(CallLow[ii]-PutLow[ii]) <= 0.2 && CallLow[ii] >= PutLow[ii]) { LLPrice[ii] = CallLow[ii]; } else if (Math.abs(CallLow[ii]-PutLow[ii]) <= 0.2 && CallLow[ii] < PutLow[ii]) { LLPrice[ii] = PutLow[ii]; } } Main.MessageList("고저가 :",HHPrice[ii],LLPrice[ii]); }
프로필 이미지
파문일기
2014-04-14
1393
글번호 222929
답변완료

파일 출력 경로

수고하십니다. PrintOnFile (sFilePath, sMsg) 함수의 사용법을 보면. sFilePath 에 경로와 파일명을 넣는 것으로 나와있는데. "C:₩log.txt" 라고 해도. 원하는 경로에 출력되지 않습니다. PrintOnFile 함수는 "C:₩예스트레이더₩Spot₩Export" 안에만 출력이 되나요 ? 그렇다면 원하는 경로에 파일을 생성하는 다른 함수는 없는지요.
프로필 이미지
파생루키
2014-04-11
1358
글번호 222928
답변완료

옵션 손절식 부탁드립니다

1. 9시 이후로 1초 단위로 잔고 카운팅 2. 계좌잔고의 콜옵션이 매도포지션이고 진입가 대비 2.5배 이상이면 손절 3. 계좌잔고의 풋옵션이 매도포지션이고 진입가 대비 2배 이상이면 손절 감사합니다
프로필 이미지
재령
2014-04-11
1274
글번호 222927