커뮤니티
문의드립니다.
2016-09-06 13:21:38
95
글번호 101721
maLong = ma(C, 100);
MP = MarketPosition;
# 이평을 하향돌파하면 매도진입
if MP == 0 and CrossDown(C, maLong) then
Sell("S1", AtStop, maLong-0.5);
#기존 매도포지션이 있으면 4pt 수익 발생할 때 추가 진입
if MP == -1 then
Sell("SS", AtStop, EntryPrice - 4);
# 모든 포지션 청산
If MP == -1 then {
exitshort("xSS",atstop, lowest(L,BarsSinceEntry+1)+4);
}
# 손절청산 <== 이 부분이 문제인데
if MP == -1 Then {
ExitShort("ST1", AtStop, EntryPrice + 2, "S1");
ExitShort("ST2", AtStop, latestEntryPrice(0) + 3, "SS");
}
[질문]
1. SetStopLoss 와 ExitShort와 동일하게 작동하게 할 수 있나요?
진입봉에서 로스컷이 나온 경우 강제청산은 제대로 작동하는데 청산함수를 사용한 것은
다음봉에 청산되는 문제가 있습니다.
2. 강제청산함수 SetStopLoss 를 진입명에 따라 구분지어 작동하게 할 수 있나요?
3. 진입명에 따른 청산 방법을 위와같이 사용하는데 문제가 없나요?
4. 두번째 진입을 latestEntryPrice(0) 로 사용하였는데 문제가 없나요?
매번 성실한 답변 감사드리며 답변 부탁드립니다.
답변 2
예스스탁 예스스탁 답변
2016-09-06 16:14:50
안녕하세요
예스스탁입니다.
1
아래식 참고하시기 바랍니다.
현재 진입이 봉중간에 발생하는 Atstop타입이므로
각 청산을 진입과 동시에 세팅해서
진입봉에서만 손절조건을 체크하는 내용을 추가하셔야 합니다.
var : maLong(0),MP(0);
maLong = ma(C, 100);
MP = MarketPosition;
# 이평을 하향돌파하면 매도진입
if MP == 0 and CrossDown(C, maLong) then{
Sell("S1", AtStop, maLong-0.5);
if NextBarOpen > maLong-0.5 Then{
ExitShort("ST11",AtStop,(maLong-0.5)+2,"S1");
}
if NextBarOpen <= maLong-0.5 Then{
ExitShort("ST12",AtStop,NextBarOpen+2,"S1");
}
}
#기존 매도포지션이 있으면 4pt 수익 발생할 때 추가 진입
if MP == -1 and LatestEntryName(0) != "SS" then {
Sell("SS", AtStop, EntryPrice - 4);
if NextBarOpen > EntryPrice - 4 Then{
ExitShort("ST21",AtStop,(EntryPrice - 4)+3,"SS");
}
if NextBarOpen <= EntryPrice - 4 Then{
ExitShort("ST22",AtStop,NextBarOpen+3,"SS");
}
}
# 모든 포지션 청산
If MP == -1 then {
ExitShort("xSS",atstop, lowest(L,BarsSinceEntry+1)+4);
}
if MP == -1 Then {
ExitShort("ST1", AtStop, EntryPrice + 2, "S1");
ExitShort("ST2", AtStop, latestEntryPrice(0) + 3, "SS");
}
2
일반적으로 추가진입이 없다면 아래와 같이 작성해
진입명별로 제어할수 있는데 작성하신 식은 추가진입을 해서 피라미딩이 되는 내용입니다.
추가진입은 진입별로 인지해서 각각 동작하게 할수는 없습니다.
위 답변드린식과 같이 청산함수로 구현하셔야 합니다.
if MarketPosition == 1 Then{
if IsEntryName("s1") == true Then
SetStopLoss(2,PointStop);
if IsEntryName("s2") == true Then
SetStopLoss(3,PointStop);
}
else{
SetStopLoss(0);
}
3
예 사용에 문제 없습니다.
4
예 사용에 문제 없습니다.
즐거운 하루되세요
> billyfo 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> maLong = ma(C, 100);
MP = MarketPosition;
# 이평을 하향돌파하면 매도진입
if MP == 0 and CrossDown(C, maLong) then
Sell("S1", AtStop, maLong-0.5);
#기존 매도포지션이 있으면 4pt 수익 발생할 때 추가 진입
if MP == -1 then
Sell("SS", AtStop, EntryPrice - 4);
# 모든 포지션 청산
If MP == -1 then {
exitshort("xSS",atstop, lowest(L,BarsSinceEntry+1)+4);
}
# 손절청산 <== 이 부분이 문제인데
if MP == -1 Then {
ExitShort("ST1", AtStop, EntryPrice + 2, "S1");
ExitShort("ST2", AtStop, latestEntryPrice(0) + 3, "SS");
}
[질문]
1. SetStopLoss 와 ExitShort와 동일하게 작동하게 할 수 있나요?
진입봉에서 로스컷이 나온 경우 강제청산은 제대로 작동하는데 청산함수를 사용한 것은
다음봉에 청산되는 문제가 있습니다.
2. 강제청산함수 SetStopLoss 를 진입명에 따라 구분지어 작동하게 할 수 있나요?
3. 진입명에 따른 청산 방법을 위와같이 사용하는데 문제가 없나요?
4. 두번째 진입을 latestEntryPrice(0) 로 사용하였는데 문제가 없나요?
매번 성실한 답변 감사드리며 답변 부탁드립니다.
billyfo
2016-09-06 16:51:08
..
이전글