커뮤니티

문의드립니다.

프로필 이미지
족구마왕
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째봉이후의 최고가가 되는게 맞는지요? 정말 어렵네요.