커뮤니티
문의드립니다.
2012-12-21 12:13:25
264
글번호 57489
아래와 같이 청산식을 만들었는데 잘못된 부분좀 알려주세요..
if MarketPosition == 1 Then{
if BarsSinceEntry == 0 then
var1 = lowest(L,0); #진입봉 직전봉의 저가(이걸 표현하기가 힘드네요.부탁드립니다.)
Var2 = C; #진입봉 직전봉의 종가(이것도 표현법을 모르겠어요)
if BarsSinceEntry == 10 then
Var3 = lowest(L,10); #10번째봉의 저가
Var4 = C; #10번째봉의 종가
if BarsSinceEntry < 10 Then
exitlong("손절1",AtStop,Var1-0.3); #진입봉의 바로직전봉의 저가에서 0.3p 빠지면 손절.
Else
exitlong("손익절3",AtStop,Var3-0.3); #진입후10째봉의 저가에서 0.3p 빠지면 손익절.
#10개봉 전 trailing스탑
if BarsSinceEntry < 10 and
Lowest(l,BarsSinceEntry) > var1 and # 진입봉 바로직전봉의 저가를 깨지 않고
highest(h,BarsSinceEntry) >= EntryPrice+3 Then #진입가보다 3p이상되었을때
exitlong("익절1",AtStop,highest(H,BarsSinceEntry)-0.5); #최고가에서 0.5p 빠지면 익절.
#10개봉 이후 trailing스탑
if BarsSinceEntry >= 10 and
L >= Var3 and #10번째봉의 저가를 깨지않고
highest(h,BarsSinceEntry+10) >= var4+3 Then # 고가가 10번째봉의 종가보다 3p이상되고
exitlong("익절2",AtStop,highest(H,BarsSinceEntry+10)-0.5); #0.5p 내리면 익절한다.
전체적으로 좀 봐주시기 바랍니다.뭔가 이상해요.
제가 표현하고자 하는것은 10번째봉 이후부터는 그 10번째봉의 저가를 기준으로 다시 트레일링스탑하는것입니다.highest(h,BarsSinceEntry+10) 이렇게 하면 10째봉이후의 최고가가 되는게 맞는지요? 정말 어렵네요.
답변 1
예스스탁 예스스탁 답변
2012-12-21 16:37:18
안녕하세요
예스스탁입니다.
1.
하나의 if조건문에 여러개의 실행문이 있을때는
{}로 꼭 묶어 주셔야 합니다.
{}가 없으면 두번째 실행문은 매봉 동작하게 됩니다.
if MarketPosition == 1 Then{
if BarsSinceEntry == 0 then{
var1 = lowest(L,0);
Var2 = C;
}
}
또한 위 내용중 var2는 진입봉의 종가가 아닙니다.
MarketPosition이 1이 되면 BarsSinceEntry는 1이된 이후므로
BarsSinceEntry가 0이 될수가 없습니다.
2.
기존에 답변을 드릴때
highest(h,BarsSinceEntry+10)가 아닌
highest(h,BarsSinceEntry-10)으로 답변을 드렸습니다.
가령 현재봉이 진입이후 13번째 봉이면
BarsSinceEntry는 13이고 이고
highest(h,13-10)이되어
highest(h,3)이 되어
최근 3개봉동안 최고가를 보게 됩니다.
즉 진입이후 10개봉 이후의 최고가입니다.
3. 아래는 수정한 식입니다.
if MarketPosition == 1 Then{
var1 = L[BarsSinceEntry+1]; #진입봉 직전봉의 저가
Var2 = C[BarsSinceEntry+1]; #진입봉 직전봉의 종가
if BarsSinceEntry == 10 then{
Var3 = lowest(L,10); #10번째봉의 저가
Var4 = C; #10번째봉의 종가
}
if BarsSinceEntry < 10 Then
exitlong("손절1",AtStop,Var1-0.3); #진입봉의 바로직전봉의 저가에서 0.3p 빠지면 손절.
Else
exitlong("손익절3",AtStop,Var3-0.3); #진입후10째봉의 저가에서 0.3p 빠지면 손익절.
#10개봉 전 trailing스탑
if BarsSinceEntry < 10 and
Lowest(l,BarsSinceEntry) > var1 and # 진입봉 바로직전봉의 저가를 깨지 않고
highest(h,BarsSinceEntry) >= EntryPrice+3 Then #진입가보다 3p이상되었을때
exitlong("익절1",AtStop,highest(H,BarsSinceEntry)-0.5); #최고가에서 0.5p 빠지면 익절.
#10개봉 이후 trailing스탑
if BarsSinceEntry >= 10 and
L >= Var3 and #10번째봉의 저가를 깨지않고
highest(h,BarsSinceEntry+10) >= var4+3 Then # 고가가 10번째봉의 종가보다 3p이상되고
exitlong("익절2",AtStop,highest(H,BarsSinceEntry-10)-0.5); #0.5p 내리면 익절한다.
}
즐거운 하루되세요
> 족구마왕 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 아래와 같이 청산식을 만들었는데 잘못된 부분좀 알려주세요..
if MarketPosition == 1 Then{
if BarsSinceEntry == 0 then
var1 = lowest(L,0); #진입봉 직전봉의 저가(이걸 표현하기가 힘드네요.부탁드립니다.)
Var2 = C; #진입봉 직전봉의 종가(이것도 표현법을 모르겠어요)
if BarsSinceEntry == 10 then
Var3 = lowest(L,10); #10번째봉의 저가
Var4 = C; #10번째봉의 종가
if BarsSinceEntry < 10 Then
exitlong("손절1",AtStop,Var1-0.3); #진입봉의 바로직전봉의 저가에서 0.3p 빠지면 손절.
Else
exitlong("손익절3",AtStop,Var3-0.3); #진입후10째봉의 저가에서 0.3p 빠지면 손익절.
#10개봉 전 trailing스탑
if BarsSinceEntry < 10 and
Lowest(l,BarsSinceEntry) > var1 and # 진입봉 바로직전봉의 저가를 깨지 않고
highest(h,BarsSinceEntry) >= EntryPrice+3 Then #진입가보다 3p이상되었을때
exitlong("익절1",AtStop,highest(H,BarsSinceEntry)-0.5); #최고가에서 0.5p 빠지면 익절.
#10개봉 이후 trailing스탑
if BarsSinceEntry >= 10 and
L >= Var3 and #10번째봉의 저가를 깨지않고
highest(h,BarsSinceEntry+10) >= var4+3 Then # 고가가 10번째봉의 종가보다 3p이상되고
exitlong("익절2",AtStop,highest(H,BarsSinceEntry+10)-0.5); #0.5p 내리면 익절한다.
전체적으로 좀 봐주시기 바랍니다.뭔가 이상해요.
제가 표현하고자 하는것은 10번째봉 이후부터는 그 10번째봉의 저가를 기준으로 다시 트레일링스탑하는것입니다.highest(h,BarsSinceEntry+10) 이렇게 하면 10째봉이후의 최고가가 되는게 맞는지요? 정말 어렵네요.
다음글
이전글