2012-05-04 2 views
3

quantstrat에서 서로 취소하는 주문을 입력하는 방법은 무엇입니까? 예를 들어, 일단 거래를 시작하면 즉시 "손실 중지"와 "이익 획득"두 명령을 엽니 다. 사람이 가득 차면 다른 사람은 취소됩니다.R - 양자 순서가 서로 취소합니다

#Enter signal 

strategy <- add.rule(strategy, name="ruleSignal", 
        arguments=list(sigcol="EnterBuy", sigval=TRUE, orderqty=100, 
            ordertype="market", orderside="long", 
            pricemethod="market", osFUN=osMaxPos), 
        type="enter", path.dep=TRUE) 

#Stop loss 

strategy <- add.rule(strategy, name="ruleSignal", 
        arguments=list(sigcol="EnterBuy", sigval=TRUE, 
            orderqty="all", ordertype="stoplimit", 
            orderside="short", threshold=-5, 
            tmult=FALSE), 
        type="exit", path.dep=TRUE) 

#Take profit 

strategy <- add.rule(strategy, name="ruleSignal", 
        arguments=list(sigcol="EnterBuy", sigval=TRUE, 
            orderqty="all", ordertype="stoplimit", 
            orderside="short", threshold=5, 
            tmult=FALSE), 
        type="exit", path.dep=TRUE) 

현재, 그들은 독립적으로 작동하고 있습니다.

+0

이 기능은 '주문 세트'로 처리됩니다. OCO (다른 하나는 취소 함) 주문 기능을 제공하기 위해 주문 세트를 사용하는 코드가 있지만 커밋하기 전에 테스트가 필요합니다. 일단 코드가 들어있는 svn rev가 있으면 공식 응답을 제공 할 것입니다. –

답변

8

SVN r 1010은 OCO (One Cancels Other) 순서 세트를보다 쉽게 ​​사용할 수 있도록 코드를 quantstrat에 추가합니다. 'macd'데모 here에는 새롭게 노출 된 주문 세트 매개 변수를 사용하여 종료 주문에 OCO 기능을 제공하는 예제가 있습니다.

이 기능을 사용하려면 최신 svn (r1010 이상)을 사용해야합니다. 또한 주문 크기 조정 기능이 조금씩 부러 졌음을주의 할 것입니다. 현재 작업 중입니다.

귀하의 예는 다음과 같이 보일 것입니다, 차 세트를 사용합니다 :

#Enter signal 

strategy <- add.rule(strategy, name="ruleSignal", 
        arguments=list(sigcol="EnterBuy", sigval=TRUE, orderqty=100, 
            ordertype="market", orderside="long", 
            pricemethod="market", osFUN=osMaxPos), 
        type="enter", path.dep=TRUE) 

#Stop loss 

strategy <- add.rule(strategy, name="ruleSignal", 
        arguments=list(sigcol="EnterBuy", sigval=TRUE, 
            orderqty="all", ordertype="stoplimit", 
            orderside="long", threshold=-5, 
            tmult=FALSE, orderset='altexits'), 
        type="exit", path.dep=TRUE) 

#Take profit 

strategy <- add.rule(strategy, name="ruleSignal", 
        arguments=list(sigcol="EnterBuy", sigval=TRUE, 
            orderqty="all", ordertype="stoplimit", 
            orderside="long", threshold=5, 
            tmult=FALSE, orderset='altexits'), 
        type="exit", path.dep=TRUE) 

ruleSignal에 대한 인수 목록에 orderset = 'altexits' 매개 변수의 추가.

+0

thx Brian. 그러나 신호를 입력 할 때만 손실을 멈추고 주문을 제한하기 위해 내 주문을 변경하거나 위치 한도로 인해 실행되지 않을 경우를 대비하여 이익 주문을 할 수 있도록 구성하는 방법을 묻고 싶습니다. – SilverSpoon

+0

ive 수정 된 ruleOrderProc 및 내 요구 사항을 얻었습니다. 이 파일에있는 몇 가지 버그. – SilverSpoon

관련 문제