커뮤니티

피라미딩 관련

프로필 이미지
TRF
2016-12-29 13:43:44
127
글번호 105421
답변완료
피라미딩에서 모든 진입신호 허용 설정후 동일포지션의 누적허용의 진입횟수를 30번으로 설정했다고 가정합니다. 만약 30번의 최대 진입횟수 허용중에 20번의 신호가 발생하여 순차적으로 물량이 진입이 되었고, 시간이 흘러 1차 청산신호가 발생하였다고 치면 총 진입횟수(20번)의 1/4만큼에 해당하는 5번의 신호만 청산신호가 발생되게 하고자 합니다. 2차 청산신호 발생시 남은 15번의 신호중 5번의 신호만 또 청산신호 발생하게 하고, 3차 신호 발생시 마찬가지로 5번의 신호만 발생, 4차 청산신호 발생시 나머지 청산신호 발생.... 이런식으로 처리하고자 합니다. 바쁘시겠지만 수식 부탁드리겠습니다. 감사합니다.
시스템
답변 3
프로필 이미지

예스스탁 예스스탁 답변

2016-12-29 15:18:10

안녕하세요 예스스탁입니다. 분할 청산은 수량으로만 지정할수 있습니다. 신호의 갯수로 차감을 할수는 없고 청산시 진입된 최대수량의 1/4를 청산하게 작성하셔야 합니다. var : Bxcnt(0),Sxcnt(0); if MarketPosition == 1 Then{ if CurrentContracts < CurrentContracts[1] Then BXcnt = Bxcnt+1; if Bxcnt == 0 and 1차청산조건 Then exitlong("bx1",OnClose,def,"", Floor(MaxContracts*(1/4)),1); if Bxcnt == 1 and 2차청산조건 Then exitlong("bx2",OnClose,def,"", Floor(MaxContracts*(1/4)),1); if Bxcnt == 2 and 3차청산조건 Then exitlong("bx3",OnClose,def,"", Floor(MaxContracts*(1/4)),1); if Bxcnt == 3 and 4차청산조건 Then exitlong("bx4"); } Else Bxcnt = 0; if MarketPosition == -1 Then{ if CurrentContracts < CurrentContracts[1] Then SXcnt = Sxcnt+1; if Sxcnt == 0 and 1차청산조건 Then ExitShort("sx1",OnClose,def,"", Floor(MaxContracts*(1/4)),1); if Sxcnt == 1 and 2차청산조건 Then ExitShort("sx2",OnClose,def,"", Floor(MaxContracts*(1/4)),1); if Sxcnt == 2 and 3차청산조건 Then ExitShort("sx3",OnClose,def,"", Floor(MaxContracts*(1/4)),1); if Sxcnt == 3 and 4차청산조건 Then ExitShort("sx4"); } Else Sxcnt = 0; 즐거운 하루되세요 > TRF 님이 쓴 글입니다. > 제목 : 피라미딩 관련 > 피라미딩에서 모든 진입신호 허용 설정후 동일포지션의 누적허용의 진입횟수를 30번으로 설정했다고 가정합니다. 만약 30번의 최대 진입횟수 허용중에 20번의 신호가 발생하여 순차적으로 물량이 진입이 되었고, 시간이 흘러 1차 청산신호가 발생하였다고 치면 총 진입횟수(20번)의 1/4만큼에 해당하는 5번의 신호만 청산신호가 발생되게 하고자 합니다. 2차 청산신호 발생시 남은 15번의 신호중 5번의 신호만 또 청산신호 발생하게 하고, 3차 신호 발생시 마찬가지로 5번의 신호만 발생, 4차 청산신호 발생시 나머지 청산신호 발생.... 이런식으로 처리하고자 합니다. 바쁘시겠지만 수식 부탁드리겠습니다. 감사합니다.
프로필 이미지

TRF

2016-12-29 16:40:22

첨부한 그림과 같이 EL[M1]이 한번에 청산되는 것을 막고자 합니다. 파랑색 선을 깨면 1/4청산, 녹색선을 깨면 1/4청산, 붉은색을 깨면 1/4청산, 나머지 노란색 청산... 만약에 청산신호 횟수로 컨트롤 할 수 없다면 예스스팟을 이용해서 제가 원하는 바를 이룰수 있는지요? 스팟으로 하면 성능보고서의 결과를 짐작해내기가 쉽지 않기에 된다고 해도 고민스럽기도 합니다. 신호의 갯수로도 가능할 수 있게 YL 개선은 어려운지요? 또하나, 식부탁드립니다. 1분봉하나의 크기가 2%이상으로 상승했고, 금일중 해당1분봉의 거래량이 최대이고, MA1을 깨면 청산하는 식 부탁드립니다. if marketposition == 1 then { } 감사합니다. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 피라미딩 관련 > 안녕하세요 예스스탁입니다. 분할 청산은 수량으로만 지정할수 있습니다. 신호의 갯수로 차감을 할수는 없고 청산시 진입된 최대수량의 1/4를 청산하게 작성하셔야 합니다. var : Bxcnt(0),Sxcnt(0); if MarketPosition == 1 Then{ if CurrentContracts < CurrentContracts[1] Then BXcnt = Bxcnt+1; if Bxcnt == 0 and 1차청산조건 Then exitlong("bx1",OnClose,def,"", Floor(MaxContracts*(1/4)),1); if Bxcnt == 1 and 2차청산조건 Then exitlong("bx2",OnClose,def,"", Floor(MaxContracts*(1/4)),1); if Bxcnt == 2 and 3차청산조건 Then exitlong("bx3",OnClose,def,"", Floor(MaxContracts*(1/4)),1); if Bxcnt == 3 and 4차청산조건 Then exitlong("bx4"); } Else Bxcnt = 0; if MarketPosition == -1 Then{ if CurrentContracts < CurrentContracts[1] Then SXcnt = Sxcnt+1; if Sxcnt == 0 and 1차청산조건 Then ExitShort("sx1",OnClose,def,"", Floor(MaxContracts*(1/4)),1); if Sxcnt == 1 and 2차청산조건 Then ExitShort("sx2",OnClose,def,"", Floor(MaxContracts*(1/4)),1); if Sxcnt == 2 and 3차청산조건 Then ExitShort("sx3",OnClose,def,"", Floor(MaxContracts*(1/4)),1); if Sxcnt == 3 and 4차청산조건 Then ExitShort("sx4"); } Else Sxcnt = 0; 즐거운 하루되세요 > TRF 님이 쓴 글입니다. > 제목 : 피라미딩 관련 > 피라미딩에서 모든 진입신호 허용 설정후 동일포지션의 누적허용의 진입횟수를 30번으로 설정했다고 가정합니다. 만약 30번의 최대 진입횟수 허용중에 20번의 신호가 발생하여 순차적으로 물량이 진입이 되었고, 시간이 흘러 1차 청산신호가 발생하였다고 치면 총 진입횟수(20번)의 1/4만큼에 해당하는 5번의 신호만 청산신호가 발생되게 하고자 합니다. 2차 청산신호 발생시 남은 15번의 신호중 5번의 신호만 또 청산신호 발생하게 하고, 3차 신호 발생시 마찬가지로 5번의 신호만 발생, 4차 청산신호 발생시 나머지 청산신호 발생.... 이런식으로 처리하고자 합니다. 바쁘시겠지만 수식 부탁드리겠습니다. 감사합니다.
프로필 이미지

예스스탁 예스스탁 답변

2016-12-29 16:47:24

안녕하세요 예스스탁입니다. 신호별로는 스팟도 방법이 없습니다. 전체수량에서 일정수량씩 청산하는 내용으로 작성하셔야 합니다. 신호갯수로 청산이 되게 업데이트는 어려울것 같습니다. 각 색상 라인별로 진입이후 1번씩만 청산이 발생하게 했고 청산발생시 마다 최대진입수량에서 1/4만큼만 청산하게 했습니다 var : Bxcnt(0),Sxcnt(0),vol(0); var : Bxcond1(false),Bxcond2(false),Bxcond3(false),Bxcond4(false); var : Sxcond1(false),Sxcond2(false),Sxcond3(false),Sxcond4(false); if MarketPosition == 1 Then{ vol = floor(MaxContracts*(1/4)); if CurrentContracts < CurrentContracts[1] Then Bxcnt = Bxcnt+1; if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "bx1" Then Bxcond1 = true; if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "bx2" Then Bxcond2 = true; if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "bx3" Then Bxcond3 = true; if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "bx4" Then Bxcond4 = true; if BXcond1 == false and CrossDown(C,파랑색선) Then exitlong("bx1",OnClose,def,"", iff(Bxcnt <= 3,vol,CurrentContracts),1); if BXcond2 == false and CrossDown(C,녹색색선) Then exitlong("bx2",OnClose,def,"", iff(Bxcnt <= 3,vol,CurrentContracts),1); if BXcond3 == false and CrossDown(C,붉은색선) Then exitlong("bx3",OnClose,def,"", iff(Bxcnt <= 3,vol,CurrentContracts),1); if BXcond4 == false and CrossDown(C,노란색선) Then exitlong("bx4",OnClose,def,"", iff(Bxcnt <= 3,vol,CurrentContracts),1); } Else{ Bxcnt = 0; Bxcond1 = false; Bxcond2 = false; Bxcond3 = false; Bxcond4 = false; } if MarketPosition == -1 Then{ vol = floor(MaxContracts*(1/4)); if CurrentContracts < CurrentContracts[1] Then Sxcnt = Sxcnt+1; if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "sx1" Then Sxcond1 = true; if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "sx2" Then Sxcond2 = true; if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "sx3" Then Sxcond3 = true; if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "sx4" Then Sxcond4 = true; if SXcond1 == false and CrossUp(C,파랑색선) Then ExitShort("sx1",OnClose,def,"", iff(Bxcnt <= 3,vol,CurrentContracts),1); if SXcond2 == false and CrossUp(C,녹색색선) Then ExitShort("sx2",OnClose,def,"", iff(Bxcnt <= 3,vol,CurrentContracts),1); if SXcond3 == false and CrossUp(C,붉은색선) Then ExitShort("sx3",OnClose,def,"", iff(Bxcnt <= 3,vol,CurrentContracts),1); if SXcond4 == false and CrossUp(C,노란색선) Then ExitShort("sx4",OnClose,def,"", iff(Bxcnt <= 3,vol,CurrentContracts),1); } Else{ Sxcnt = 0; Sxcond1 = false; Sxcond2 = false; Sxcond3 = false; Sxcond4 = false; } 즐거운 하루되세요 > TRF 님이 쓴 글입니다. > 제목 : Re : Re : 재질문 (피라미딩 관련) > 첨부한 그림과 같이 EL[M1]이 한번에 청산되는 것을 막고자 합니다. 파랑색 선을 깨면 1/4청산, 녹색선을 깨면 1/4청산, 붉은색을 깨면 1/4청산, 나머지 노란색 청산... 만약에 청산신호 횟수로 컨트롤 할 수 없다면 예스스팟을 이용해서 제가 원하는 바를 이룰수 있는지요? 스팟으로 하면 성능보고서의 결과를 짐작해내기가 쉽지 않기에 된다고 해도 고민스럽기도 합니다. 신호의 갯수로도 가능할 수 있게 YL 개선은 어려운지요? 또하나, 식부탁드립니다. 1분봉하나의 크기가 2%이상으로 상승했고, 금일중 해당1분봉의 거래량이 최대이고, MA1을 깨면 청산하는 식 부탁드립니다. if marketposition == 1 then { } 감사합니다. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 피라미딩 관련 > 안녕하세요 예스스탁입니다. 분할 청산은 수량으로만 지정할수 있습니다. 신호의 갯수로 차감을 할수는 없고 청산시 진입된 최대수량의 1/4를 청산하게 작성하셔야 합니다. var : Bxcnt(0),Sxcnt(0); if MarketPosition == 1 Then{ if CurrentContracts < CurrentContracts[1] Then BXcnt = Bxcnt+1; if Bxcnt == 0 and 1차청산조건 Then exitlong("bx1",OnClose,def,"", Floor(MaxContracts*(1/4)),1); if Bxcnt == 1 and 2차청산조건 Then exitlong("bx2",OnClose,def,"", Floor(MaxContracts*(1/4)),1); if Bxcnt == 2 and 3차청산조건 Then exitlong("bx3",OnClose,def,"", Floor(MaxContracts*(1/4)),1); if Bxcnt == 3 and 4차청산조건 Then exitlong("bx4"); } Else Bxcnt = 0; if MarketPosition == -1 Then{ if CurrentContracts < CurrentContracts[1] Then SXcnt = Sxcnt+1; if Sxcnt == 0 and 1차청산조건 Then ExitShort("sx1",OnClose,def,"", Floor(MaxContracts*(1/4)),1); if Sxcnt == 1 and 2차청산조건 Then ExitShort("sx2",OnClose,def,"", Floor(MaxContracts*(1/4)),1); if Sxcnt == 2 and 3차청산조건 Then ExitShort("sx3",OnClose,def,"", Floor(MaxContracts*(1/4)),1); if Sxcnt == 3 and 4차청산조건 Then ExitShort("sx4"); } Else Sxcnt = 0; 즐거운 하루되세요 > TRF 님이 쓴 글입니다. > 제목 : 피라미딩 관련 > 피라미딩에서 모든 진입신호 허용 설정후 동일포지션의 누적허용의 진입횟수를 30번으로 설정했다고 가정합니다. 만약 30번의 최대 진입횟수 허용중에 20번의 신호가 발생하여 순차적으로 물량이 진입이 되었고, 시간이 흘러 1차 청산신호가 발생하였다고 치면 총 진입횟수(20번)의 1/4만큼에 해당하는 5번의 신호만 청산신호가 발생되게 하고자 합니다. 2차 청산신호 발생시 남은 15번의 신호중 5번의 신호만 또 청산신호 발생하게 하고, 3차 신호 발생시 마찬가지로 5번의 신호만 발생, 4차 청산신호 발생시 나머지 청산신호 발생.... 이런식으로 처리하고자 합니다. 바쁘시겠지만 수식 부탁드리겠습니다. 감사합니다.