커뮤니티

예전 저의 질문에 대해 재질문 드려요.

프로필 이미지
스테디어드밴서
2009-03-13 02:40:28
778
글번호 20899
답변완료
아래 적힌 저의 질문에 대해 --- 줄의 밑과 같은 답변을 주셨는데요. 1)시스템식 중간에 갑자기 condition1 이 등장하면서 이에 대한 true,false를 정의해 주셨는데 이것이 이해가 안가네요 if MarketPosition != -1 Then Condition1 = False; 이렇게 condition1을 일부러 false라고 지정해 줘야 하나요? 지정해주지 않고 생략하고 그다음식을 쓰면 무슨 문제가 있나요? 2)그리고 false앞에 == 를 써야 맞는것이지요? 3)그리고 제가 질문드리기를 on close 청산이라고 했으니 하단의 청산식도 if Condition1 == True Then{ ExitShort("j매도x",AtStop,var2-var3*2); } } 이 아니라, if Condition1 == True and L <= var2-var3*2 Then{ ExitShort("j매도x"); } } 여야 맞지 않는지요? 4)추가질문: condition1~99까지를 시스템에서 다른 용도로 몽땅 써버렸습니다.ㅠ.ㅠ... 이럴경우 변수(var)로 con1을 설정하고 con1==true...이렇게 표현해도 되는지요? ------------------------- 안녕하세요 예스스탁입니다. var : X(0); value1 = ATR(14); var1 = FracPortion(value1*10)*10; //소수 2자리 값 if var1 == 0 or var1 == 5 Then x= (floor(value1*100))/100; if var1 >= 1 or var1 <= 4 Then x=(floor(value1*10))/10; if var1 >= 6 or var1 <= 9 Then x=((floor(value1*10))/10)+0.05; if MarketPosition != -1 Then Condition1 = False; if MarketPosition() == -1 and IsEntryName("j매도") == True Then{ if Lowest(L,20) == L Then{ Condition1 = true; var2 = C; var3 = x; } if Condition1 == True Then{ ExitShort("j매도x",AtStop,var2-var3*2); } } 즐거운 하루되세요 > 스테디어드밴서 님이 쓴 글입니다. > 제목 : 시스템식 > j 조건을 만족하면 j매도를 행합니다. 이때 수익을 극대화하기 위해, 두가지 청산방식을 택합니다. 첫째, j매도후 보통청산 둘째, j매도후 10봉이내에 특정봉이 나타나면, 그봉의 종가로부터 얼마이상 가격이 떨어지면 j매도 특정청산 여기서 보통청산식은 쉬워서 제가 작성을 했는데요, j매도 특정청산식은 어려워서 작성을 못했어요. if j then sell("j매도"); j매도후 10봉이내에 "20봉동안 최저가= 저가"인 봉(특정봉)이 나타나면, 이 특정봉의 atr(14)값보다 작거나 같은 값(x <= atr(14))이면서, 호가단위인 0.05단위로 움직이는 값중 최대값을 x라고 한다. 위의 특정봉 출현후 "현재봉의 저가 <= 특정봉종가-2x" 를 만족하면 "j매도" 청산.(on close 청산) (다른 매도식들도 여러개 있는데, 청산식이 전부 달라요. 그래서 다른 매도식과 청산이 혼동되지 않게 계속 "j매도"라고 언급해줘야 함) ---------------------------- x값은 다음과 같이 지정하면 제가 원하는 값을 얻을것 같습니다. 혹시 제가 floor 함수를 잘못 이해했나요? 소수이하 버림 함수로 알고 있는데요... value1 = ATR(14); var1 = FracPortion(value1*10)*10; //소수 2자리 값 1)만약 var1이 0 이나 5면 x= (floor(value1*100))/100 2)만약,1<=var1 and var1<=4면 x=(floor(value1*10))/10 3)만약,6<=var1 and var1<=9면 x=((floor(value1*10))/10)+0.05 예를 들어, atr(14)가 0.35라면 1)에 해당하죠. 100을 곱해준후 소수이하버림을 하면 35가 되고, 식에따라 다시 100으로 나눠주면 x=0.35 가 되니 제가 원하는 값이죠. 또 예를 들어, atr(14)가 0.44라면 2)에 해당되죠. 10을 곱해준후 소수이하버림을 하면 4가 되죠. 식에따라 다시 10으로 나눠주니 x=0.4가 되어 제가 원하는 값이죠. 또 예를 들어, atr(14)가 0.27이라면 3)에 해당하죠. 10을 곱해준후 소수이하버림을 하면 2가 되고, 식에따라 10을 다시 나눠주면 0.2가 되고, 식에 따라 0.05를 더해 주면, x=0.25가 되어 제가 원하는 값이죠. 감사합니다. 부탁드려요 ^^
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2009-03-13 15:25:54

안녕하세요 예스스탁입니다. 1. 식상 매도포지션이면 20개봉의 신저가가 발생했을때 종가와 X를 저장하는데 20개봉 신저가는 매도 상태일때마다 값이 갱신되므로 매도진입이후로 최초 20개봉 신저가가 발생했을때를 기억하기 위함입니다. 청산 후 초기화 하고 다음 매도진입이 들어갈때 다시 셋업시키기 위해 if MarketPosition != -1 Then Condition1 = False; 매도포지션이 아니면 false값을 저장한 것입니다. 2. 할당은 = 입니다. ==은 좌우측이 같다는 의미입니다. = 맞습니다. 3. onclose로 변경하실 의향이시면 적성하신 식이 맞습니다. 4. 변수명을 정하시고 선언시 (false)로 선언하시면 됩니다. var: con1(false); 즐거운 하루되세요 > 스테디어드밴서 님이 쓴 글입니다. > 제목 : 예전 저의 질문에 대해 재질문 드려요. > 아래 적힌 저의 질문에 대해 --- 줄의 밑과 같은 답변을 주셨는데요. 1)시스템식 중간에 갑자기 condition1 이 등장하면서 이에 대한 true,false를 정의해 주셨는데 이것이 이해가 안가네요 if MarketPosition != -1 Then Condition1 = False; 이렇게 condition1을 일부러 false라고 지정해 줘야 하나요? 지정해주지 않고 생략하고 그다음식을 쓰면 무슨 문제가 있나요? 2)그리고 false앞에 == 를 써야 맞는것이지요? 3)그리고 제가 질문드리기를 on close 청산이라고 했으니 하단의 청산식도 if Condition1 == True Then{ ExitShort("j매도x",AtStop,var2-var3*2); } } 이 아니라, if Condition1 == True and L <= var2-var3*2 Then{ ExitShort("j매도x"); } } 여야 맞지 않는지요? 4)추가질문: condition1~99까지를 시스템에서 다른 용도로 몽땅 써버렸습니다.ㅠ.ㅠ... 이럴경우 변수(var)로 con1을 설정하고 con1==true...이렇게 표현해도 되는지요? ------------------------- 안녕하세요 예스스탁입니다. var : X(0); value1 = ATR(14); var1 = FracPortion(value1*10)*10; //소수 2자리 값 if var1 == 0 or var1 == 5 Then x= (floor(value1*100))/100; if var1 >= 1 or var1 <= 4 Then x=(floor(value1*10))/10; if var1 >= 6 or var1 <= 9 Then x=((floor(value1*10))/10)+0.05; if MarketPosition != -1 Then Condition1 = False; if MarketPosition() == -1 and IsEntryName("j매도") == True Then{ if Lowest(L,20) == L Then{ Condition1 = true; var2 = C; var3 = x; } if Condition1 == True Then{ ExitShort("j매도x",AtStop,var2-var3*2); } } 즐거운 하루되세요 > 스테디어드밴서 님이 쓴 글입니다. > 제목 : 시스템식 > j 조건을 만족하면 j매도를 행합니다. 이때 수익을 극대화하기 위해, 두가지 청산방식을 택합니다. 첫째, j매도후 보통청산 둘째, j매도후 10봉이내에 특정봉이 나타나면, 그봉의 종가로부터 얼마이상 가격이 떨어지면 j매도 특정청산 여기서 보통청산식은 쉬워서 제가 작성을 했는데요, j매도 특정청산식은 어려워서 작성을 못했어요. if j then sell("j매도"); j매도후 10봉이내에 "20봉동안 최저가= 저가"인 봉(특정봉)이 나타나면, 이 특정봉의 atr(14)값보다 작거나 같은 값(x <= atr(14))이면서, 호가단위인 0.05단위로 움직이는 값중 최대값을 x라고 한다. 위의 특정봉 출현후 "현재봉의 저가 <= 특정봉종가-2x" 를 만족하면 "j매도" 청산.(on close 청산) (다른 매도식들도 여러개 있는데, 청산식이 전부 달라요. 그래서 다른 매도식과 청산이 혼동되지 않게 계속 "j매도"라고 언급해줘야 함) ---------------------------- x값은 다음과 같이 지정하면 제가 원하는 값을 얻을것 같습니다. 혹시 제가 floor 함수를 잘못 이해했나요? 소수이하 버림 함수로 알고 있는데요... value1 = ATR(14); var1 = FracPortion(value1*10)*10; //소수 2자리 값 1)만약 var1이 0 이나 5면 x= (floor(value1*100))/100 2)만약,1<=var1 and var1<=4면 x=(floor(value1*10))/10 3)만약,6<=var1 and var1<=9면 x=((floor(value1*10))/10)+0.05 예를 들어, atr(14)가 0.35라면 1)에 해당하죠. 100을 곱해준후 소수이하버림을 하면 35가 되고, 식에따라 다시 100으로 나눠주면 x=0.35 가 되니 제가 원하는 값이죠. 또 예를 들어, atr(14)가 0.44라면 2)에 해당되죠. 10을 곱해준후 소수이하버림을 하면 4가 되죠. 식에따라 다시 10으로 나눠주니 x=0.4가 되어 제가 원하는 값이죠. 또 예를 들어, atr(14)가 0.27이라면 3)에 해당하죠. 10을 곱해준후 소수이하버림을 하면 2가 되고, 식에따라 10을 다시 나눠주면 0.2가 되고, 식에 따라 0.05를 더해 주면, x=0.25가 되어 제가 원하는 값이죠. 감사합니다. 부탁드려요 ^^