커뮤니티

예스스팟 Q&A

답변완료

수식 문의드립니다.

예스스팟으로 아래와 같이 수식을 짰는데요. 몇가지 질문사항이 있어서 문의드립니다. =================================================================================== (예시) var S1; var MP; var Callcode; function Main_OnStart() { S1 = 0; MP = 0; } function Chart1_OnRiseSignal(Signal) { S1 = Signal.signalKind; if (S1 == 1) { Callcode = Option.GetATMCallRecent(1); Account1.OrderBuy(Callcode, 5, Option.GetAskByCode(Callcode, 3), 0); MP = 1; ================================================================================== 질문사항 1: "당일 오후 2시 이후부터 챠트에서 발생하는 신호는 진입하지 않는다.(당일 오후 2시에 청산한다는 것이 아니라 새로운 진입을 금지하는 것임)" 를 식으로 추가하고 싶은데요. 어떻게 해야 하나요? 질문사항 2: 예스스탓에서 저렇게 식을 작성해서 돌리면 당월물 옵션을 거래하게 되는데요. 혹시 차월물 옵션을 거래할려면 어떻게 해야 하나요? 질문사항 3: 상기 수식에 따르면 5개의 수량이 거래가 되는데, 주문가능수량으로 할려면 어떻게 해야 하나요?
프로필 이미지
극동해
2013-09-03
1041
글번호 222545
답변완료

문의 드립니다.

가정에서 자동매매를 가동해놓고 퇴근해서 오면 매매신호가 나왔는데도 인터넷 연결문제로 매매가 되지 않고 있을 때가 있는데, "시스템연결이 끊겼습니다." 이럴경우 자동으로 재연결하는 방법이나.... 기타 이런 문제를 해결 할 수 있는 대안이 있는지요?
프로필 이미지
쌀사비팔
2013-09-02
1024
글번호 222543
답변완료

예약주문

선물시스템으로 예스스팟을 이용해 옵션 거래하고 있습니다... 혹시 예스스팟을 이용해 예약주문도 가능한지요?
프로필 이미지
카라얀
2013-08-31
954
글번호 222542

카라얀 님에 의해서 삭제되었습니다.

프로필 이미지
카라얀
2013-08-30
0
글번호 222541

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

프로필 이미지
santus
2013-08-29
13
글번호 222540
답변완료

Data Manager 업그레이드

8월 26일부터 Data Manager를 이용한 Data를 주차트에 차팅된다고 나와있는데요. 예스트레이더 접속시에 설정에서 '모든 파일 다시받기'를 해서 업데이트를 했구요. 그런데 여전히 참조데이터로는 잘나오고 주데이터는 나오지 않네요. 아직 안정화가 덜 된 것인가요? 아니면 제가 실수를 한 것일까요? 참조데이터가 정상적으로 나오는 것으로 보아 Data Manager를 이용한 차팅 진행에 문제는 없었던 것 같은데.. 확인 좀 부탁드립니다.^_^
프로필 이미지
유선수
2013-08-29
914
글번호 222539
답변완료

문의

질문 수정할게요. 선물신호 타종목주문. 현재 아래식은 1~2 사이 옵션중 2 에 가까운 종목이 진입 되는데요. 1에 가까운 종목으로 진입되게 수정 부탁드립니다. 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) <= 2.0 && Option.GetCurrent(0, i) >= 1.0) { CallPrice[i+LNum] = Option.GetCurrent(0, i); CallCode[i+LNum] = Option.GetATMCallRecent(i); } else { CallPrice[i+LNum] = -1; CallCode[i+LNum] = -1; } } for (var ii = -UNum; ii <= LNum; ii++) { if (Option.GetCurrent(1, ii) <= 2.0 && Option.GetCurrent(1, ii) >= 1.0) { PutPrice[ii+UNum] = Option.GetCurrent(1, ii); PutCode[ii+UNum] = Option.GetATMPutRecent(ii); } else { PutPrice[ii+UNum] = -1; PutCode[ii+UNum] = -1; } } //buy신호 발생시 if (Signal.signalKind == 1) { Start = 1; CC = -1; CallOrderCode = -1; for (var iii = -LNum; iii <= UNum; iii++) { if (CallPrice[iii+LNum] > CC) { CC = CallPrice[iii+LNum]; CallOrderCode = CallCode[iii+LNum] } } 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); } } // Exitlong신호 발생시 if (Start == 1 && Signal.signalKind == 2) { Start = 0; if (CC > 0) { Account1.OrderSell(CallOrderCode, 1, 0, 1); Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드:"+CallOrderCode+" /START:"+Start); } else { Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start); } } //sell신호 발생시 if (Signal.signalKind == 3) { Start = -1; PP = -1; PutOrderCode = -1; for (var iiii = -UNum; iiii <= LNum; iiii++) { if (PutPrice[iiii+UNum] > PP) { PP = PutPrice[iiii+UNum]; PutOrderCode = PutCode[iiii+UNum]; } } 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); } } //exitshort신호 발생시 if ( Start == -1 && Signal.signalKind == 4) { Start = 0; if (PP > 0) { Account1.OrderSell(PutOrderCode, 1, 0, 1); Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드:"+PutOrderCode+" /START:"+Start); } else { Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start); } } }
프로필 이미지
털보
2013-08-30
899
글번호 222538
답변완료

옵션 종목 찾기 (1 이하이면서 가장 가까운 종목)

안녕하세요. 아래 예제 식은 프리미엄 1 이상이면서 가장 가까운 종목을 찾는 것인데요, 약간 다르게 1 "이하"이면서 가장 가까운 종목을 찾도록 변경하고 싶습니다. 배열 순서를 바꾸면 될 것 같은데 막상 하려니 잘 안되네요. 도움 주시면 고맙겠습니다. 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) { //Buy신호이면 if (Signal.signalKind == 1) { Start = 1; //옵션 1.0 이상 종목 중 1에 가장 가까운 가격을 가지는 콜/풋 종목을 찾음 UNum = Option.uppersATM; LNum = Option.lowersATM; CallCode = new Array(UNum+LNum+1); CallPrice = new Array(UNum+LNum+1); PutCode = new Array(UNum+LNum+1); PutPrice = new Array(UNum+LNum+1); for (var i = -LNum; i <= UNum; i++) { if (Option.GetCurrent(0, i) >= 1.0) { CallPrice[i+LNum] = Option.GetCurrent(0, i); 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) >= 1.0 ) { PutPrice[ii+UNum] = Option.GetCurrent(1, ii); PutCode[ii+UNum] = Option.GetATMPutRecent(ii); } else { PutPrice[ii+UNum] = 9999999; PutCode[ii+UNum] = 9999999; } } var CC = 9999999; var CallOrderCode = 9999999; for (var iii = -LNum; iii <= UNum; iii++) { if (CallPrice[iii+LNum] < CC) { CC = CallPrice[iii+LNum]; CallOrderCode = CallCode[iii+LNum] } } var PP = 9999999; var PutOrderCode = 9999999; for (var iiii = -UNum; iiii <= LNum; iiii++) { if (PutPrice[iiii+UNum] < PP) { PP = PutPrice[iiii+UNum]; PutOrderCode = PutCode[iiii+UNum]; } } //콜매수 if (CC < 9999999) Account1.OrderBuy(CallOrderCode, 1, 0,1); //풋매도 if (PP < 9999999) Account1.OrderSell(PutOrderCode, 1, 0,1); } //exitlong신호 발생하면 if (Signal.signalKind == 2 && Start == 1) { Account1.OrderSell(CallOrderCode, 1, 0, 1); Account1.OrderBuy(PutOrderCode, 1, 0, 1); } //Sell신호이면 if (Signal.signalKind == 3) { Start = 1; //옵션 1.0 이상 종목 중 1에 가장 가까운 가격을 가지는 콜/풋 종목을 찾음 UNum = Option.uppersATM; LNum = Option.lowersATM; CallCode = new Array(UNum+LNum+1); CallPrice = new Array(UNum+LNum+1); PutCode = new Array(UNum+LNum+1); PutPrice = new Array(UNum+LNum+1); for (var i = -LNum; i <= UNum; i++) { if (Option.GetCurrent(0, i) >= 1.0) { CallPrice[i+LNum] = Option.GetCurrent(0, i); 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) >= 1.0 ) { PutPrice[ii+UNum] = Option.GetCurrent(1, ii); PutCode[ii+UNum] = Option.GetATMPutRecent(ii); } else { PutPrice[ii+UNum] = 9999999; PutCode[ii+UNum] = 9999999; } } var CC = 9999999; var CallOrderCode = 9999999; for (var iii = -LNum; iii <= UNum; iii++) { if (CallPrice[iii+LNum] < CC) { CC = CallPrice[iii+LNum]; CallOrderCode = CallCode[iii+LNum] } } var PP = 9999999; var PutOrderCode = 9999999; for (var iiii = -UNum; iiii <= LNum; iiii++) { if (PutPrice[iiii+UNum] < PP) { PP = PutPrice[iiii+UNum]; PutOrderCode = PutCode[iiii+UNum]; } } //콜매도 if (CC > 0) Account1.OrderSell(CallOrderCode, 1, 0,1); //풋매수 if (PP > 0) Account1.OrderBuy(CallOrderCode, 1, 0,1); } //exitshort신호 발생하면 if (Signal.signalKind == 4 && Start == 1) { Account1.OrderBuy(CallOrderCode, 1, 0, 1); Account1.OrderSell(PutOrderCode, 1, 0, 1); } }
프로필 이미지
곰탈
2013-08-28
976
글번호 222536
답변완료

static 변수 선언

수고 하십니다. YestSpot 에서 static 변수 선언 하는 방법 문의 드립니다. Marketdata = Futures var static a; static a; static var a; 모두 에러가 나더라구요 미리 감사 드립니다. < 질문> 1. Static 변수 선언 방법 2. 직전값을 참조하는 방법 다음은 스팟의 실행시점부터 최고가를 찾는 로직 샘플입니다. 이와 같은 코딩을 할때 함수로 구현시에는 해당 함수를 호출한다음에 직전값을 참조해야하는 로직이 필요한데. 함수 구현시에 제대로 되지 않습니다. 이부분에서 적어도 flag 값과 NewMax_before 의 변수 값이 호출후에 사라지면 안되는데 이를 해결 할 방법을 알고 싶습니다. // Max함수 테스트 var flag = 0; var NewMax =0; var NewMax_before=0; var initialPrice =0; var Price =0; function Main_On**Market(sItemCode, l**ID) { if(sItemCode =Futures.code && l*pdateID == 20001) // 선물의 시세를 받으면 { Price = Futures.current; if(flag ==0) { NewMax =Price; // 최고에 가격을 저장함 flag =1; initialPrice = Price ; Main.MessageList("flag2", flag); } // 최고 값을 구함 if(Price >= NewMax) { NewMax = Price; } else { NewMax = NewMax_before; } Main.MessageList("검증 ", "최초가격", initialPrice, "현재가 ", Price ,"flag ", flag ,"NewMax", NewMax,"NewMax_bf", NewMax_before ); // 직전 값의 처리 NewMax_before = NewMax; } }
프로필 이미지
히말라야
2013-08-29
991
글번호 222533
답변완료

부탁드립니다.

수고 많습니다. 681번 수정건은 없는걸로 해주시구요. <프로그램명:스팟-돌파> var1= dayhigh(1)-daylow(1); if stime >= 90000 and stime <=144000 then { buy("buy-001",atstop,daylow+var1*0.33); sell("sell-001",atstop,dayhigh-var1*0.33); } setstopendofday(150000); ## 당일저가(고가)에서 전일폭의 33%를 돌파하면 매수(매도) ## <객체계좌-2403-xxxx-31> <객체옵션> (스팟랭귀지) 1. buy신호시: call 2.5p 이하중 최고가의 콜매수(5호가매수). 매수청산신호시: 진입한 콜청산(같은 종목 같은수량5호가) sell신호시: put 2.5p 이하중 최고가의 풋매수(5호가매수). 매도청산신호시: 진입한 콜청산(같은 종목 같은수량5호가) 2. buy신호시: put 2.5p 이하중 최고가의 풋매도(5호가매도). 매수청산신호시: 진입한 풋청산(같은 종목 같은수량5호가) sell신호시: call 2.5p 이하중 최고가의 콜매도(5호가매도). 매도청산신호시: 진입한 콜청산(같은 종목 같은수량5호가) 3. buy신호시: call 2.5p 이하중 최고가의 콜매수(5호가매수)와 put 2.5p 이하중 최고가의 풋매도(5호가매도). 매수청산신호시: 콜매수청산,풋매도청산(같은 종목 같은수량5호가) sell신호시 put 2.5p 이하중 최고가의 풋매수(5호가매수)와 call 2.5p 이하중 최고가의 콜매도(5호가매도). 매수청산은 콜매수청산,풋매도청산(같은 종목 같은수량5호가) 일단 선물신호로 1) 같은 방향의 옵션을 매수하는것, 2) 반대 방향의 옵션을 매도하는것, 3) 같은 방향은 매수하고 반대방향은 매도하는 것을 처리할 수 있게 해주시기 바랍니다. 감사합니다.
프로필 이미지
먼지의추억
2013-08-26
1090
글번호 222528