커뮤니티
피라미딩 관련
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차 청산신호 발생시 나머지 청산신호 발생....
이런식으로 처리하고자 합니다.
바쁘시겠지만 수식 부탁드리겠습니다.
감사합니다.
다음글
이전글