커뮤니티
초보질문입니다. 청산시점이 무었이 잘못 되었을까요
2009-08-28 10:56:08
738
글번호 24446
더운날씨에 수고가 많으십니다.
초보 시스템식에서 청산시점에 대하여 문의 드립니다.
var1=ma(c,5);
var2=ma(c,20);
if CrossDown(var1, var2) Then{
sell();
if BarsSinceEntry(0) >1 then //포지션진입이후 1개봉이상 경과되었다면
var3=SwingLow(1, low , 2, 2, 30);
// 포지션 진입 하고 좌우측 2개봉중 현재시점에서 가장 작은금액을 var3에 저장한다.
var4=SwingLow(2, low , 2, 2, 30);
// 포지션 진입 후 좌우측 2개봉 중 두번째로 작은 금액을 var4에 저장한다.
}
if var4 > var3 Then
ExitShort("매도청산", onclose);
//두번째 좌우2개봉의 최저가 보다 최근에 좌우2개봉의 최저가가 적으면 청산
첨부파일과 같이 예상매도시점과 실제매도시점이 차이가 납니다.
수정부탁드립니다.
감사합니다.
- 1. 24661_1111.jpg (0.13 MB)
답변 3
예스스탁 예스스탁 답변
2009-08-28 14:32:44
안녕하세요
예스스탁입니다.
식을 조금 수정했습니다.
var1=ma(c,5);
var2=ma(c,20);
# 최근 30봉 중 가장 최근 저가기준 swinglow가 발생했을때의 가격
var3=SwingLow(1, low , 2, 2, 30);
# 최근 30봉 중 두번째 최근 저가기준 swinglow가 발생했을때의 가격
var4=SwingLow(2, low , 2, 2, 30);
# 최근 30봉 중 가장 최근 저가기준 swinglow가 발생했을때의 시점
var5=SwingLow(1, low , 2, 2, 30);
# 최근 30봉 중 두번째 최근 저가기준 swinglow가 발생했을때의 시점
var6=SwingLow(2, low , 2, 2, 30);
if CrossDown(var1, var2) Then{
sell();
}
if MarketPosition == -1 and BarsSinceEntry(0) >1 then{ //포지션진입이후 1개봉이상 경과되었다면
if var4 > var3 and
var5 == 2 and
var6 < BarsSinceEntry Then
ExitShort("매도청산", onclose);
}
매도청산이 매도포지션 이후에 발생한 swinglow만을 가지고
신호를 발생하게 만들어 주셔야 합니다.
현재가 최근 swinglow가 발생한 시점임을 추가해 주셔야 하며
또한 전 swinglow가 진입 이후여야 한다는 것도 추가해 주셔야 합니다.
즐거운 하루되세요
> 멋진감자 님이 쓴 글입니다.
> 제목 : 초보질문입니다. 청산시점이 무었이 잘못 되었을까요
> 더운날씨에 수고가 많으십니다.
초보 시스템식에서 청산시점에 대하여 문의 드립니다.
var1=ma(c,5);
var2=ma(c,20);
if CrossDown(var1, var2) Then{
sell();
if BarsSinceEntry(0) >1 then //포지션진입이후 1개봉이상 경과되었다면
var3=SwingLow(1, low , 2, 2, 30);
// 포지션 진입 하고 좌우측 2개봉중 현재시점에서 가장 작은금액을 var3에 저장한다.
var4=SwingLow(2, low , 2, 2, 30);
// 포지션 진입 후 좌우측 2개봉 중 두번째로 작은 금액을 var4에 저장한다.
}
if var4 > var3 Then
ExitShort("매도청산", onclose);
//두번째 좌우2개봉의 최저가 보다 최근에 좌우2개봉의 최저가가 적으면 청산
첨부파일과 같이 예상매도시점과 실제매도시점이 차이가 납니다.
수정부탁드립니다.
감사합니다.
멋진감자
2009-08-28 16:05:59
답변진심으로 감사를 드립니다.
var5 == 2 and
var6 < BarsSinceEntry
주석좀 부탁드립니다.
감사합니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 초보질문입니다. 청산시점이 무었이 잘못 되었을까요
> 안녕하세요
예스스탁입니다.
식을 조금 수정했습니다.
var1=ma(c,5);
var2=ma(c,20);
# 최근 30봉 중 가장 최근 저가기준 swinglow가 발생했을때의 가격
var3=SwingLow(1, low , 2, 2, 30);
# 최근 30봉 중 두번째 최근 저가기준 swinglow가 발생했을때의 가격
var4=SwingLow(2, low , 2, 2, 30);
# 최근 30봉 중 가장 최근 저가기준 swinglow가 발생했을때의 시점
var5=SwingLow(1, low , 2, 2, 30);
# 최근 30봉 중 두번째 최근 저가기준 swinglow가 발생했을때의 시점
var6=SwingLow(2, low , 2, 2, 30);
if CrossDown(var1, var2) Then{
sell();
}
if MarketPosition == -1 and BarsSinceEntry(0) >1 then{ //포지션진입이후 1개봉이상 경과되었다면
if var4 > var3 and
var5 == 2 and
var6 < BarsSinceEntry Then
ExitShort("매도청산", onclose);
}
매도청산이 매도포지션 이후에 발생한 swinglow만을 가지고
신호를 발생하게 만들어 주셔야 합니다.
현재가 최근 swinglow가 발생한 시점임을 추가해 주셔야 하며
또한 전 swinglow가 진입 이후여야 한다는 것도 추가해 주셔야 합니다.
즐거운 하루되세요
예스스탁 예스스탁 답변
2009-08-28 17:32:17
안녕하세요
예스스탁입니다.
식이 잘못된 부분이 있어 다시 올려드립니다.
var1=ma(c,5);
var2=ma(c,20);
# 최근 30봉 중 가장 최근 저가기준 swinglow가 발생했을때의 가격
var3=SwingLow(1, low , 2, 2, 30);
# 최근 30봉 중 두번째 최근 저가기준 swinglow가 발생했을때의 가격
var4=SwingLow(2, low , 2, 2, 30);
# 최근 30봉 중 가장 최근 저가기준 swinglow가 발생했을때의 시점
var5=SwingLowbar(1, low , 2, 2, 30);
# 최근 30봉 중 두번째 최근 저가기준 swinglow가 발생했을때의 시점
var6=SwingLowbar(2, low , 2, 2, 30);
if CrossDown(var1, var2) Then{
sell();
}
if MarketPosition == -1 and BarsSinceEntry(0) >1 then{ //포지션진입이후 1개봉이상 경과되었다면
if var4 > var3 and
var5 == 2 and
var6 < BarsSinceEntry Then
ExitShort("매도청산", onclose);
}
var5는 최근 스윙로우가 몇봉전에 발생했는지를 리턴합니다.
좌측과 우측을 2개씩 감시하므로 스윙로우가 발생됐다고 판단하는 시점은
기준봉에서 2개봉이 지나서 입니다.
그러므로 var5 == 2는 현재봉에서 막 최근 스윙로우가 발생했음을 나타냅니다.
var6 < BarsSinceEntry 은 전 스윙로우가 현재부터 진입사이에
위치해야 한다는 표현입니다.
BarsSinceEntry 는 진입이후 경과한 봉갯수이므로
현재 10봉이 경과되었다면 전 스윙로우가 10이상의 값을 가지면
진입이전에 생성된 것이므로 제외하는 것입니다.
참고하시기 바랍니다.
즐거운 하루되세요
> 멋진감자 님이 쓴 글입니다.
> 제목 : Re : Re : 답변감사드립니다. 추가질문
> 답변진심으로 감사를 드립니다.
var5 == 2 and
var6 < BarsSinceEntry
주석좀 부탁드립니다.
감사합니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 초보질문입니다. 청산시점이 무었이 잘못 되었을까요
> 안녕하세요
예스스탁입니다.
식을 조금 수정했습니다.
var1=ma(c,5);
var2=ma(c,20);
# 최근 30봉 중 가장 최근 저가기준 swinglow가 발생했을때의 가격
var3=SwingLow(1, low , 2, 2, 30);
# 최근 30봉 중 두번째 최근 저가기준 swinglow가 발생했을때의 가격
var4=SwingLow(2, low , 2, 2, 30);
# 최근 30봉 중 가장 최근 저가기준 swinglow가 발생했을때의 시점
var5=SwingLow(1, low , 2, 2, 30);
# 최근 30봉 중 두번째 최근 저가기준 swinglow가 발생했을때의 시점
var6=SwingLow(2, low , 2, 2, 30);
if CrossDown(var1, var2) Then{
sell();
}
if MarketPosition == -1 and BarsSinceEntry(0) >1 then{ //포지션진입이후 1개봉이상 경과되었다면
if var4 > var3 and
var5 == 2 and
var6 < BarsSinceEntry Then
ExitShort("매도청산", onclose);
}
매도청산이 매도포지션 이후에 발생한 swinglow만을 가지고
신호를 발생하게 만들어 주셔야 합니다.
현재가 최근 swinglow가 발생한 시점임을 추가해 주셔야 하며
또한 전 swinglow가 진입 이후여야 한다는 것도 추가해 주셔야 합니다.
즐거운 하루되세요
다음글