커뮤니티

예스스팟 Q&A

답변완료

종목객체

종목객체인 marketdata를 나스닥 최근월물로 지정하고싶은데 어떻게 작성해야 하나요? 자금은 클릭후 월물을 선택하여 사용중인데 코드로 작성하여 최근월물로 자동으로 바뀌게 하고 싶습니다.
프로필 이미지
eiger
301
글번호 226171
답변완료

월평균 나스닥기준 200P 수익나온다면

이게 가능성있는건가요
프로필 이미지
오아시스3
330
글번호 226167

노영철 님에 의해서 삭제되었습니다.

프로필 이미지
노영철
0
글번호 226163
답변완료

검토바랍니다.

검토 후 수정 보완 부탁드립니다.
프로필 이미지
비밀통로
359
글번호 226162
답변완료

보완 부탁드립니다...^^

아래와 같이 보완 부탁드립니다. 1) 매수 수량을 수시로 변경해서 사용 할 수 있도록 조건을 추가 해주세요. // Account1.OrderBuy(MarketData.code,1,0,1); // n주를 시장가 주문 - n주 부분에 수량을 임의로 바꾸어 쓸 수 있도록 2) 매수 후 손절 기준에 오면 자동 매도할 수 있도록 조건을 추가 해주세요. - 매수가 기준 -5%( 수치를 변경해서 사용할 수 있도록 해주세요) 3) 매수 후 익절 기준에 오면 자동 매도할 수 있도록 조건을 추가 해주세요. - 매수가 기준 +5%( 수치를 변경해서 사용할 수 있도록 해주세요)
프로필 이미지
비밀통로
399
글번호 226161

오아시스3 님에 의해서 삭제되었습니다.

프로필 이미지
오아시스3
18
글번호 226156
답변완료

문의

요청내용은 2가지 입니다. 1. 아래 수식은 "084500 부터" 시세감시와 계산을 통해 진입합니다. 이 수식을 "차트에서 sell 신호가 나오면" 그때부터 시세감시와 계산을 하는 수식으로 변경하고 싶습니다. 084500 작동 내용은 삭제하여 주십시요. 2. 오후 3시 15분에 손절 또는 익절이 안된 상태로 미결제 콜풋 한쌍이 남아있을 때 청산하는 수식 추가해 주십시요. 항상 고맙습니다. ********************************************************************************* var ID1,ID2,num1,num2; var Entry,CallCode,PutCode; var Xvol1,Xvol2; function Main_OnStart() { Main.MessageList("Start"); Main.SetTimer(1, 5000); Entry = 0; } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (HHMMSS >= 84500) { var sum = Option1.GetCurrent(0,0)+Option1.GetCurrent(1, 0); var diff = Math.abs(Option1.GetCurrent(0,0)-Option1.GetCurrent(1, 0)); if (Entry == 0 && sum <= 20 && diff <= 0.10) { Entry = sum; CallCode = Option1.GetATMCallRecent(0); PutCode = Option1.GetATMPutRecent(0); ID1 = Account1.OrderBuy(CallCode, 1, Option1.GetAsk(CallCode, 5), 0); ID2 = Account1.OrderBuy(PutCode, 1, Option1.GetAsk(PutCode, 5), 0); Xvo11 = 1; Xvo12 = 1; } if (Entry > 0 && (Option1.GetCurrent(CallCode)+Option1.GetCurrent(PutCode) >= Entry+1) || (Option1.GetCurrent(CallCode)+Option1.GetCurrent(PutCode) <= Entry-1)) { if (Xvol1 > 0) { Account1.SetUnfill(num1); if (Account1.Unfill.count > 0) { Xvol1 = Xvol1-Account1.Unfill.count; Account1.OrderCancel(num1); } } if (Xvol2 > 0) { Account1.SetUnfill(num2); if (Account1.Unfill.count > 0) { Xvol2 = Xvol2-Account1.Unfill.count; Account1.OrderCancel(num2); } } if (Xvol1 > 0) { Account1.OrderSell(CallCode, Xvol1, Option1.GetBid(CallCode, 5), 0); } if (Xvol2 > 0) { Account1.OrderSell(PutCode, Xvol2, Option1.GetBid(PutCode, 5), 0); } //Entry = 0; Main.KillTimer(1); } } } function Main_OnOrderResponse(OrderResponse) { if (OrderResponse.orderID == ID1) { num1 = OrderResponse.orderNum; } if (OrderResponse.orderID == ID2) { num2 = OrderResponse.orderNum; } }
프로필 이미지
좌오비우오비
376
글번호 226155
답변완료

yesspot으로 pair trading을 작성했는데 중복주문이 동시에 여러번 들어갑니다.

MarketData1과 MarketData2 간에 호가차이가 8bp 이하면 entry해서 15bp 이상에서 exit하는 로직입니다. 그런데entry, exit시에 중복으로 3~5건 계약이 중복되고 주문시간이 같아서 Main.SetTimer(1,10000); 를 추가했지만 그래도 중복으로 들어갑니다. 검토 부탁드립니다.ㅠ.ㅜ var A1orderOfUnfills; //A1 미체결 주문 var A2orderOfUnfills; //A2 미체결 주문 var obsevationSpreadForBuy; var obsevationSpreadForSell; var obsevationSpreadForStopLoss; var buySpread = 0.08; var sellSpread = 0.15; function Main_OnU*pdateMarket(sItemCode, lU*pdateID) { obsevationSpreadForBuy = MarketData2.Bid(1) - MarketData1.Ask(1); obsevationSpreadForSell = MarketData2.Ask(1) - MarketData1.Bid(1); obsevationSpreadForStopLoss = MarketData2.Ask(1) - MarketData1.Bid(1); // spread 0 이하인지 Account1.SetBalanceItem(MarketData1.code, 0); //nPosition 0: 구분없음, 1:매도, 2:매수 Account2.SetBalanceItem(MarketData2.code, 0); A1orderOfUnfills = Account1.GetTheNumberOfUnfills(); A2orderOfUnfills = Account2.GetTheNumberOfUnfills() if(Account1.Balance.count == 0 && Account2.Balance.count == 0 && A1orderOfUnfills == 0 && A2orderOfUnfills == 0) { if (obsevationSpreadForBuy <= buySpread) { Main.MessageLog("매수 신호 구간"); Main.MessageLog("MarketData1 Ask/"+ MarketData1.Ask(1)); Main.MessageLog("MarketData2 Bid/"+ MarketData2.Bid(2)); //MarketData1 2계약 매수1호가로 매도 Account1.OrderSell(Main.GetOrderCode(MarketData1.code), 1, MarketData1.Ask(1),2); //MarketData2 1계약 매도1호가로 매수 Account2.OrderBuy(Main.GetOrderCode(MarketData2.code), 1, MarketData2.Bid(1),2); Main.SetTimer(1,10000);//10초 지연. 미체결 주문 확인해도 중복 체결돼서 추가함 ---------------------------------------> 그래도 계속 중복 주문이 들어감 } } else if(Account1.Balance.count == 1 && Account2.Balance.count == 1 && A1orderOfUnfills == 0 && A2orderOfUnfills == 0) { //MarketData1(10년물) 매도1호가와 MarketData2(2년물) 매수1호가 간에 금리차이가 buySpread 이상이면 매수 if (obsevationSpreadForSell > sellSpread) { Main.MessageLog("obsevationSpreadForSell/" + obsevationSpreadForSell); Main.MessageLog("sellSpread/" + sellSpread); Main.MessageLog("청산 신호 구간"); Main.MessageLog("MarketData1 Ask/"+ MarketData1.Ask(1)); Main.MessageLog("MarketData2 Bid/"+ MarketData2.Bid(2)); //MarketData1 2계약 매도1호가로 매수 Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), 1, MarketData1.Bid(1),2); //MarketData2 1계약 매수1호가로 매도 Account2.OrderSell(Main.GetOrderCode(MarketData2.code), 1, MarketData2.Ask(1),2); Main.SetTimer(1,10000);//10초 지연. 미체결 주문 확인해도 중복 체결돼서 추가함 ---------------------------------------> 그래도 계속 중복 주문이 들어감 } } }
프로필 이미지
typeb
369
글번호 226154

오아시스3 님에 의해서 삭제되었습니다.

프로필 이미지
오아시스3
12
글번호 226153
답변완료

처분 관련

A1.SetBalance(Callcode,0); A1.SetBalance(Putcode,0); if ( A1.Balance.count > 0 && A1.Balance.position == 2 && (BuyCond == 0 || SellCond == 0) ) { if ( A1.Balance.current <= A1.Balance.avgUnitCost*0.63 ) { A1.OrderSell(A1.Balance.code, A1.Balance.count, 0, 1); BuyCond = 0; SellCond = 0; Main.MessageList("BuyCond:" ,BuyCond) Main.MessageList("SellCond:" ,SellCond) } }
프로필 이미지
지나리
349
글번호 226152