커뮤니티

예스스팟 Q&A

관리자에 의해 프로그램 사용법 QnA로 이동되었습니다

프로필 이미지
탄젠트80
2014-01-12
9
글번호 222776
0

마루아빠 님에 의해서 삭제되었습니다.

프로필 이미지
마루아빠
2014-01-11
23
글번호 222775
답변완료

확장차트 문의

안녕하세요? 아래 기능을 수행할 수 있는 예제 부탁 드립니다. 1. 9시 5분에 옵션종목을 가격이 1에 가장 가까운 콜/풋 옵션 종목 선정 2. 해당 옵션 종목으로 확장차트 생성 3. 확장 차트에 설정한 시스템에 의해서 매수 신호가 발생하면 매수주문 4. 청산 신호 발생하면 매도 주문 5. 오후 3시 5분 시각에 잔고에 미체결 주문 남아있으면 모두 취소 만약 상기 1번과 2번 구현이 확장차트 개체를 추가하는 방식으로 힘들면 확장차트를 수식으로 생성하는 예제로 부탁 드립니다.
프로필 이미지
lucky93
2014-01-08
919
글번호 222770

관리자에 의해 프로그램 사용법 QnA로 이동되었습니다

프로필 이미지
아인슈타인
2014-01-08
23
글번호 222768
0
답변완료

YT 장종료청산을 Spot에서 조정

안녕하세요~ 다음 수식 부탁드립니다. 현재 YT시스템의 신호를 기준으로 Spot에서 주문을 실행하고 있습니다. YT에서 장종료청산이 14:40으로 설정되어 있고, 14:30~14:40 사이에는 진입,청산이 이루어지지 않도록 코딩이 되어 있습니다. [ 원하는 Spot 수식 ] 14:30 이후 만약 포지션이 있다면, Spot에서 14:35 에 청산하고 YT에서 발생하는 14:40 장종료청산 신호는 무시하여 주문이 발생하지 않도록 하고 싶습니다. (한 계좌에 여러 시스템을 운용하므로, 해당되는 시스템에 한하여 작동) 이렇게 하고자 하는 이유는, YT에서 종료청산 시간을 변경할 수도 있지만 동일시스템을 종료청산 시간만 변경하여 사용할 경우 차트를 계속 추가해야 하는 문제 때문에 Spot에서 조정하고자 함입니다. 그럼 부탁드리겠습니다. 오늘도 즐겁고 활기찬 시간되시기 바랍니다. 감사합니다 !!!
프로필 이미지
새로운세상
2014-01-07
927
글번호 222766
답변완료

옵션매매 추가문의

수고하십니다. 아래 791번에 질문올렸는데요. 답변감사드리며 2가지 질문 더 드립니다. 1. 답변주신 내용에 1,2번 Timer설정시 if (BT == 1 && Replace1 == 0)이라는 조건문이 왜 들어가는지 궁금합니다. 3, 4번 Timer는 그런 조건문을 안 넣으셨는데요. 2. 아래식에서 현재는 선물청산신호시 모든 옵션도 같이 청산되도록 되어 있는데요. 선물에 손절청산신호(예를 들어 신호명이 LS_Long, LS_Short)가 나오면 옵션은 이후 Trailing Stop으로(옵션은 수익이므로) 수익청산 되도록 로직을 수정시키고 싶습니다. 만약 선물에 Trailing Stop으로 익절신호(예를 들어 신호명이 TS_Long, TS_Short)가 나오면 기존처럼 모든 옵션이 동시에 청산되어야 합니다. 간단히 말씀드리자면 선물손절시 옵션은 T/Stop으로, 선물익절이면 옵션동시청산입니다. 또한 옵션 T/Stop을 YT처럼 ATR T/Stop으로 만들수 있나요? 그게 안되면 최대수익대비하락폭 으로 수정부탁드립니다. 감사합니다. -------------------------------------- 안녕하세요 예스스탁입니다. 아래식 참고하시기 바랍니다. var Start; var UNum; var LNum; var CallCode; var CallPrice; var PutCode; var PutPrice; var CC; var PP; var CallOrderCode; var PutOrderCode; var BT; var ST; var BuySignalCode; var SellSignalCode; var BuySignalID; var SellSignalID; var BuySignalNum; var SellSignalNum; var Replace1; var Replace2; 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 ) { CallPrice[i+LNum] = Math.abs(Option.GetCurrent(0, i)); CallCode[i+LNum] = Option.GetATMCallRecent(i); } else { CallPrice[i+LNum] = -1; CallCode[i+LNum] = -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] } } for (var ii = -UNum; ii <= LNum; ii++) { if (Option.GetCurrent(1, ii) < 3.0) { PutPrice[ii+UNum] = Math.abs(Option.GetCurrent(1, ii)); PutCode[ii+UNum] = Option.GetATMPutRecent(ii); } else { PutPrice[ii+UNum] = -1; PutCode[ii+UNum] = -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 (Signal.signalKind == 1) { Start = 1; if (CC >= PP && CC > -1 && PP > -1) { BT = 1; Replace1 = 0; BuySignalCode = CallOrderCode; BuySignalID = Account1.OrderSell(BuySignalCode, 1, Option.GetAskByCode(BuySignalCode, 1), 0); } else{ BT = -1; Replace1 = 0; BuySignalCode = PutOrderCode; BuySignalID = Account1.OrderBuy(BuySignalCode, 1, Option.GetBidByCode(BuySignalCode, 1), 0); } } if (Start == 1 && Signal.signalKind == 2) { if (BT == 1) { Account1.OrderBuy(BuySignalCode, 1, Option.GetAskByCode(BuySignalCode, 1), 0); } if (BT == -1) { Account1.OrderSell(BuySignalCode, 1, Option.GetBidByCode(BuySignalCode, 1), 0); } } if (Signal.signalKind == 3) { Start = 1; if (CC >= PP && CC > -1 && PP > -1) { ST = 1; Replace2 = 0; SellSignalCode = CallOrderCode; SellSignalID = Account1.OrderBuy(SellSignalCode, 1, Option.GetBidByCode(SellSignalCode, 1), 0); } else{ ST = -1; Replace2 = 0; SellSignalCode = PutOrderCode; SellSignalID = Account1.OrderSell(SellSignalCode, 1, Option.GetAskByCode(SellSignalCode, 1), 0); } } if (Start == 1 && Signal.signalKind == 4) { if (ST == 1) { Account1.OrderSell(SellSignalCode, 1, Option.GetBidByCode(SellSignalCode, 1), 0); } if (ST == -1) { Account1.OrderBuy(SellSignalCode, 1, Option.GetAskByCode(SellSignalCode, 1), 0); } } } function Main_OnOrderResponse(OrderResponse) { if (OrderResponse.orderID == BuySignalID) { BuySignalNum = OrderResponse.orderNum; if (BT == 1 && Replace1 == 0) { Main.SetTimer(1, 1000); Main.SetTimer(2, 3000); } } if (OrderResponse.orderID == SellSignalID) { SellSignalNum = OrderResponse.orderNum; Main.SetTimer(3, 1000); Main.SetTimer(4, 3000); } } function Main_OnTimer(nEventID) { if (nEventID == 1 && Replace1 == 0) { Replace1 = 1; Account1.SetUnfillOrderNumber(BuySignalNum); if (Account1.Unfill.count > 0 && BT == 1) { BuySignalID = Account1.OrderReplacePrice(BuySignalNum, Option.GetBidByCode(BuySignalCode,1)); } if (Account1.Unfill.count > 0 && BT == -1) { BuySignalID = Account1.OrderReplacePrice(BuySignalNum, Option.GetAskByCode(BuySignalCode,1)); } } if (nEventID == 2 && Replace1 == 1 ) { Replace1 = 2; Account1.SetUnfillOrderNumber(BuySignalNum); if (Account1.Unfill.count > 0 && BT == 1) { BuySignalID = Account1.OrderReplacePrice(BuySignalNum, Option.GetBidByCode(BuySignalCode,3)); } if (Account1.Unfill.count > 0 && BT == -1) { BuySignalID = Account1.OrderReplacePrice(BuySignalNum, Option.GetAskByCode(BuySignalCode,3)); } } if (nEventID == 3 && Replace2 == 0) { Replace2 = 1; Account1.SetUnfillOrderNumber(SellSignalNum); if (Account1.Unfill.count > 0 && ST == 1) { SellSignalID = Account1.OrderReplacePrice(SellSignalNum, Option.GetAskByCode(SellSignalNum,1)); } if (Account1.Unfill.count > 0 && ST == -1) { SellSignalID = Account1.OrderReplacePrice(SellSignalNum, Option.GetBidByCode(SellSignalNum,1)); } } if (nEventID == 4 && Replace2 == 1 ) { Replace2 = 2; Account1.SetUnfillOrderNumber(BuySignalNum); if (Account1.Unfill.count > 0 && ST == 1) { SellSignalID = Account1.OrderReplacePrice(SellSignalNum, Option.GetAskByCode(SellSignalNum,3)); } if (Account1.Unfill.count > 0 && ST == -1) { SellSignalID = Account1.OrderReplacePrice(SellSignalNum, Option.GetBidByCode(SellSignalNum,3)); } } } 즐거운 하루되세요 > 착한이 님이 쓴 글입니다. > 제목 : 옵션매수문의 > 수고하십니다. 아래의 내용에 맞게 YesSpot 수식 작성부탁드립니다. 또한 2번 같은 경우 본문의 라인이 길어질 수 있어 사용자함수로 만들어서 사용코자 하는데 가능할지요. 1. 예스트레이더의 선물 진입시 헷지를 위하여 옵션 매수 2. 3.0 이하의 콜옵션과 풋옵션중에 3.0 에 가장 근접하는 콜/풋 종목을 찾고 3. 선물매수신호 -> 그 종목이 콜이면 콜매도, 풋이면 풋매수, 선물매수청산신호 -> 옵션청산 4. 선물매도신호 -> 그 종목이 콜이면 콜매수, 풋이면 풋매도, 선물매도청산신호 -> 옵션청산 5. 옵션매수는 매수1호가에 지정가주문, 미체결시 1초후 매도1호가주문, 미체결시 3초후 매도3호가 주문 감사합니다.
프로필 이미지
착한이
2014-01-07
1032
글번호 222764
답변완료

예스스팟 업데이트 문의

새해 복 많이 받으세요. ^^ 예스스팟을 실행하면 변수저장된 값을 처음 적용할때만 변경이 가능한데요. 실행후 다시 변수를 변경해 줄려면 삭제후 다시 넣어서 하는 방법만 있나요? 없다면 다음 업데이트에 가능했으면 좋겠습니다.
프로필 이미지
오토
2014-01-02
943
글번호 222762
답변완료

수식부탁드립니다.

항상 노고에 감사드립니다. 2가지의 매수와 1개의 매수청산으로 구성된 시스템식에서 1가지의 매수와 1개의 매수청산만을 스팟을 통해 실제로 주문이 나가게 하는 수식을 부탁드립니다. 즉 시스템 식에서 매수는 buy("buy1",atmarket,def,수량1)과 buy("buy2",atmarket,def,수량2)가 있고 매수청산은 exitlong("exitlong",atmarket,def,"",수량3,1)입니다. 이중에서 실제 주문은 buy1과 exitlong만 나가게 하고 싶습니다. 부탁드리겠습니다. 감사합니다.
프로필 이미지
뚱띵
2013-12-30
853
글번호 222761
답변완료

오류해결 부탁드립니다.

처음 실행 하려고 하는데 Account.OrderBuy(SymBol[i].code,Vol ,SymBol[i].Ask(5),0); 위문장에서 ReferenceError: Account is not defined 이런 오류 메시지가 나오는데 원인을 못찾겠네요 설정 문제인가요?
프로필 이미지
무영세
2013-12-30
823
글번호 222760
답변완료

문의드립니다

조건검색을 통해 나온 종목을 대상으로..(정배열) Envelope(20, 6) 설정에서 - 현재가가 envelope 하단선을 하향돌파하면 매수, - 매수 후 5일선을 상향돌파하면 매도 - 손절은 20일선을 이탈하면 손절 위에 같은 내용으로 스팟식을 작성하고 싶습니다.
프로필 이미지
무영세
2013-12-26
950
글번호 222756