커뮤니티

다시 한번 확인부탁드립니다.

프로필 이미지
강태공3
2012-02-09 17:15:47
376
글번호 47560
답변완료

첨부 이미지

안녕하세요. 아래 22869 번 답변에 그래도 이상한 부분이 있습니다.. 그 그림파일에서 B 목표수익 설정과 수식 if MarketPosition == 1 Then exitlong("bx",Atlimit,EntryPrice*1.0042); if MarketPosition == -1 Then ExitShort("sx",Atlimit,EntryPrice*0.9958); 이것은 같은 결과가 나옵니다. 하지만 A 부분으로 설정을 하면 매매횟수나 이익에서 많은 차이가 납니다. 왜 그렇지요? 말씀데로라면 같은 결과가 나와야 하는 것 아닌가요?
시스템
답변 3
프로필 이미지

예스스탁 예스스탁 답변

2012-02-10 10:23:56

안녕하세요 예스스탁입니다. 현재 설정하신 최대수익대비하락 설정은 일정 수익이후에 일정 값이상 하락하면 청산하기위한 설정인데 하락값을 지정하지 않으시면 실시간에서는 지정한 수익이발생하고 한틱이라도 하락하면 청산이 발생합니다. 하지만 과거봉에 봉 내부의 움직임을 알수 없으므로 봉안에 움직임을 알수 없기 때문에 지정한 수익이 발생한 봉의 고가에 신호가 표시가 됩니다. 과거 신호를 보시면 매수에 대한 청산은 모두 지정한 수익 이상의 시세가 있는 고가에 청산이 되고, 매도는 반대로 저가에 신호가 나온것을 확인하실 수 있습니다. 첨부된 그림을 보시면 실시간에서는 진입가격(263.85)에서 지정한 %이상(264.11) 수익이 발생하고(264.15) 한틱 하락하여 264.10 에 청산이 됩니다. 하지만 이후에 재적용 해보면 264.11이상의 시세가 있는 봉의 고가(264.20)에 신호가 발생한것으로 시뮬레이션 됩니다. 실제보다 더 큰 수익을 얻은 것처럼 시뮬레이션되게 하는 설정입니다. 해당 부분은 따로 수식으로 풀어작성해서 똑같이 발생하게 할수는 없고 (실시간과 가장 비슷한것이 목표수익 설정입니다.) 또한 수식에서 SetStopTrailing 함수에 하락값을 0으로 넣으면 해당 청산은 동작을 하지 않으므로 기존과 같이 설정창에서 설정하신 후에 기존에 답변드린 내용중 아래부분만 아래식으로 교체하시는 방법 뿐이 없습니다. if date != date[1] Then{ Condition1 = false; Condition2 = false; } if MarketPosition == 0 and ExitDate(1) == sdate and MarketPosition(1) == 1 and IsExitName("stopTrailing",1) == true and C < ma(c,60) Then Condition1 = true; if MarketPosition == 0 and ExitDate(1) == sdate and MarketPosition(1) == -1 and IsExitName("stopTrailing",1) == true and C > ma(c,60) Then Condition2 = true; 즐거운 하루되세요 > 강태공3 님이 쓴 글입니다. > 제목 : 다시 한번 확인부탁드립니다. > 안녕하세요. 아래 22869 번 답변에 그래도 이상한 부분이 있습니다.. 그 그림파일에서 B 목표수익 설정과 수식 if MarketPosition == 1 Then exitlong("bx",Atlimit,EntryPrice*1.0042); if MarketPosition == -1 Then ExitShort("sx",Atlimit,EntryPrice*0.9958); 이것은 같은 결과가 나옵니다. 하지만 A 부분으로 설정을 하면 매매횟수나 이익에서 많은 차이가 납니다. 왜 그렇지요? 말씀데로라면 같은 결과가 나와야 하는 것 아닌가요?
프로필 이미지

강태공3

2012-02-10 13:12:10

안녕하세요. 답변 잘보았습니다. 그런 큰 잘못된 부분이 있었군요. 지금까지의 수식 시뮬레이션 전면 수정을 해야하는 상황이 벌어졌네요. 그렇다면 설정창에서 위 그림에서처럼 최고가격대비에 체크를 하고 최고가격대비 0.02% 하락시 청산하도록 하니 기존수익금이 좀 줄기는 하던데 (수익대비에 체크를 하면 변화가 없어요) 그럼 이렇게는 해도 되는가요? 이렇게 하여도 단순히 시물레이션에서만 수익이 증가하고 실전매매에서는 다른게 나오나요? 만약에 그렇다면 비슷한 방법을 찾아야 하기...... 답변 부탁드리며 추가로 아래 청산식 수식으로 부탁드립니다. 매수후 4.2%이상 수익이후 0.55% 이상 하락시 스탑으로 청산 매도후 4.2%이상 수익이후 0.55% 이상 상승시 스탑으로 청산 매수와 매도후 최고수익으로 4.2%이상 수익이 나면 그 봉의 종가에 청산 > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 다시 한번 확인부탁드립니다. > 안녕하세요 예스스탁입니다. 현재 설정하신 최대수익대비하락 설정은 일정 수익이후에 일정 값이상 하락하면 청산하기위한 설정인데 하락값을 지정하지 않으시면 실시간에서는 지정한 수익이발생하고 한틱이라도 하락하면 청산이 발생합니다. 하지만 과거봉에 봉 내부의 움직임을 알수 없으므로 봉안에 움직임을 알수 없기 때문에 지정한 수익이 발생한 봉의 고가에 신호가 표시가 됩니다. 과거 신호를 보시면 매수에 대한 청산은 모두 지정한 수익 이상의 시세가 있는 고가에 청산이 되고, 매도는 반대로 저가에 신호가 나온것을 확인하실 수 있습니다. 첨부된 그림을 보시면 실시간에서는 진입가격(263.85)에서 지정한 %이상(264.11) 수익이 발생하고(264.15) 한틱 하락하여 264.10 에 청산이 됩니다. 하지만 이후에 재적용 해보면 264.11이상의 시세가 있는 봉의 고가(264.20)에 신호가 발생한것으로 시뮬레이션 됩니다. 실제보다 더 큰 수익을 얻은 것처럼 시뮬레이션되게 하는 설정입니다. 해당 부분은 따로 수식으로 풀어작성해서 똑같이 발생하게 할수는 없고 (실시간과 가장 비슷한것이 목표수익 설정입니다.) 또한 수식에서 SetStopTrailing 함수에 하락값을 0으로 넣으면 해당 청산은 동작을 하지 않으므로 기존과 같이 설정창에서 설정하신 후에 기존에 답변드린 내용중 아래부분만 아래식으로 교체하시는 방법 뿐이 없습니다. if date != date[1] Then{ Condition1 = false; Condition2 = false; } if MarketPosition == 0 and ExitDate(1) == sdate and MarketPosition(1) == 1 and IsExitName("stopTrailing",1) == true and C < ma(c,60) Then Condition1 = true; if MarketPosition == 0 and ExitDate(1) == sdate and MarketPosition(1) == -1 and IsExitName("stopTrailing",1) == true and C > ma(c,60) Then Condition2 = true; 즐거운 하루되세요 > 강태공3 님이 쓴 글입니다. > 제목 : 다시 한번 확인부탁드립니다. > 안녕하세요. 아래 22869 번 답변에 그래도 이상한 부분이 있습니다.. 그 그림파일에서 B 목표수익 설정과 수식 if MarketPosition == 1 Then exitlong("bx",Atlimit,EntryPrice*1.0042); if MarketPosition == -1 Then ExitShort("sx",Atlimit,EntryPrice*0.9958); 이것은 같은 결과가 나옵니다. 하지만 A 부분으로 설정을 하면 매매횟수나 이익에서 많은 차이가 납니다. 왜 그렇지요? 말씀데로라면 같은 결과가 나와야 하는 것 아닌가요?
프로필 이미지

예스스탁 예스스탁 답변

2012-02-10 15:24:38

안녕하세요 예스스탁입니다. 아래는 최대수익대비하락 함수 설명입니다. 참고하시기 바랍니다. https://www.yesstock.com/YesTrader/YesLanguage/YesLanguage_help/3_7_1_8_trail.htm 최대수익대비하락은 지정한 % 이상 수익이 발생후에 지정한 가격만큰 떨어지면 청산하는데 최고가격 대비는 이때 현재까지 진입해서 발생한 최고가격을 기준으로 몇% 이상 가격이 떨어지면 청산합니다. 가령 250에 진입하고 0.42%이상 수익이 발생한 봉의 최고가격이 252이면 252*0.9998 = 251.94 이하로 가격이 하락하면 청산합니다.(선물호가로 251.90) 수익대비는 수익폭을 의미합니다. 가령 250에 진입하고 0.42%이상 수익이 발생한 봉의 최고가격이 252이면 수익폭은 2이고 2*0.0002 = 0.0004이고 251.9996 이하로 떨어지면 청산합니다.(선물호가로 보면 251.95 시세 수신되면 청산) setstopTrailing(최대수익대비하락)은 시뮬레이션과 실시간의 수익이 괴리를 가질수 있는 강제청산 함수입니다. setstopTrailing의 수치를 작게 설정하실 수록 그 괴리는 커지게 됩니다. 시뮬레이션시는 지정한 수익이 발생한 봉의 최고가격에서 지정한 값이상 하락하면 청산된것으로 간주하고 신호가 발생하지만 실전에서는 모든 체결시세를 감시하여 신호가 발생하게 되게 때문입니다. 간혹 시뮬레이션에서 많은 수익이나는 시스템들 중 setstopTrailing이 잘못 사용된 경우가 있습니다. 따로 수식으로 풀어서나 setstopTrailing으로 결과가 좋게 나오는 신호와 같이 실전에서 나오게 할 방법은 없습니다. 이런 아래 링크 글 참고하시기 바랍니다. https://www.yesstock.com/YesTrader/YesLanguage/YesLanguage_help/4_9_1.htm 매수후 4.2%이상 수익이후 0.55% 이상 하락시 스탑으로 청산 매도후 4.2%이상 수익이후 0.55% 이상 상승시 스탑으로 청산 매수와 매도후 최고수익으로 4.2%이상 수익이 나면 그 봉의 종가에 청산 위 내용이시면 수식에 아래 내용 추가하시면 됩니다. if MarketPosition == 1 and C >= entryPrice*1.0042 Then ExitLong(); if MarketPosition == -1 and C <= entryPrice*0.9958 Then ExitShort(); SetStopTrailing(0.55,0.42,PercentStop,0); SetStopTrailing함수를 사용하지 않고 풀어서 작성하시면 아래식 이용하시면 됩니다. 아래식은 실전과 시뮬레이션의 괴리가 없으므로 아래식 이용을 권장해 드립니다. 좀더 설명이 필요하시면 02-3453-1060으로 전화주시기 바랍니다. #수익대비로 작성할 경우 SetStopTrailing(0.55,0.42,PercentStop,0); if MarketPosition == 1 Then{ if highest(H,BarsSinceEntry) >= EntryPrice*1.0042 Then exitlong("bx1",AtStop,highest(H,BarsSinceEntry)-(highest(H,BarsSinceEntry)-EntryPrice)*0.55); } if MarketPosition == -1 Then{ if Lowest(L,BarsSinceEntry) <= EntryPrice*0.9958 Then ExitShort("sx1",AtStop,Lowest(L,BarsSinceEntry)+(EntryPrice-Lowest(L,BarsSinceEntry))*0.55); } #최고가격대비로 작성할 경우 SetStopTrailing(0.55,0.42,PercentStop,1); if MarketPosition == 1 Then{ if highest(H,BarsSinceEntry) >= EntryPrice*1.0042 Then exitlong("bx2",AtStop,highest(H,BarsSinceEntry)*0.9945); } if MarketPosition == -1 Then{ if Lowest(L,BarsSinceEntry) <= EntryPrice*0.9958 Then ExitShort("sx2",AtStop,Lowest(L,BarsSinceEntry)*1.0055); } 즐거운 하루되세요 > 강태공3 님이 쓴 글입니다. > 제목 : Re : Re : 다시 한번 확인부탁드립니다. > 안녕하세요. 답변 잘보았습니다. 그런 큰 잘못된 부분이 있었군요. 지금까지의 수식 시뮬레이션 전면 수정을 해야하는 상황이 벌어졌네요. 그렇다면 설정창에서 위 그림에서처럼 최고가격대비에 체크를 하고 최고가격대비 0.02% 하락시 청산하도록 하니 기존수익금이 좀 줄기는 하던데 (수익대비에 체크를 하면 변화가 없어요) 그럼 이렇게는 해도 되는가요? 이렇게 하여도 단순히 시물레이션에서만 수익이 증가하고 실전매매에서는 다른게 나오나요? 만약에 그렇다면 비슷한 방법을 찾아야 하기...... 답변 부탁드리며 추가로 아래 청산식 수식으로 부탁드립니다. 매수후 4.2%이상 수익이후 0.55% 이상 하락시 스탑으로 청산 매도후 4.2%이상 수익이후 0.55% 이상 상승시 스탑으로 청산 매수와 매도후 최고수익으로 4.2%이상 수익이 나면 그 봉의 종가에 청산 > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 다시 한번 확인부탁드립니다. > 안녕하세요 예스스탁입니다. 현재 설정하신 최대수익대비하락 설정은 일정 수익이후에 일정 값이상 하락하면 청산하기위한 설정인데 하락값을 지정하지 않으시면 실시간에서는 지정한 수익이발생하고 한틱이라도 하락하면 청산이 발생합니다. 하지만 과거봉에 봉 내부의 움직임을 알수 없으므로 봉안에 움직임을 알수 없기 때문에 지정한 수익이 발생한 봉의 고가에 신호가 표시가 됩니다. 과거 신호를 보시면 매수에 대한 청산은 모두 지정한 수익 이상의 시세가 있는 고가에 청산이 되고, 매도는 반대로 저가에 신호가 나온것을 확인하실 수 있습니다. 첨부된 그림을 보시면 실시간에서는 진입가격(263.85)에서 지정한 %이상(264.11) 수익이 발생하고(264.15) 한틱 하락하여 264.10 에 청산이 됩니다. 하지만 이후에 재적용 해보면 264.11이상의 시세가 있는 봉의 고가(264.20)에 신호가 발생한것으로 시뮬레이션 됩니다. 실제보다 더 큰 수익을 얻은 것처럼 시뮬레이션되게 하는 설정입니다. 해당 부분은 따로 수식으로 풀어작성해서 똑같이 발생하게 할수는 없고 (실시간과 가장 비슷한것이 목표수익 설정입니다.) 또한 수식에서 SetStopTrailing 함수에 하락값을 0으로 넣으면 해당 청산은 동작을 하지 않으므로 기존과 같이 설정창에서 설정하신 후에 기존에 답변드린 내용중 아래부분만 아래식으로 교체하시는 방법 뿐이 없습니다. if date != date[1] Then{ Condition1 = false; Condition2 = false; } if MarketPosition == 0 and ExitDate(1) == sdate and MarketPosition(1) == 1 and IsExitName("stopTrailing",1) == true and C < ma(c,60) Then Condition1 = true; if MarketPosition == 0 and ExitDate(1) == sdate and MarketPosition(1) == -1 and IsExitName("stopTrailing",1) == true and C > ma(c,60) Then Condition2 = true; 즐거운 하루되세요 > 강태공3 님이 쓴 글입니다. > 제목 : 다시 한번 확인부탁드립니다. > 안녕하세요. 아래 22869 번 답변에 그래도 이상한 부분이 있습니다.. 그 그림파일에서 B 목표수익 설정과 수식 if MarketPosition == 1 Then exitlong("bx",Atlimit,EntryPrice*1.0042); if MarketPosition == -1 Then ExitShort("sx",Atlimit,EntryPrice*0.9958); 이것은 같은 결과가 나옵니다. 하지만 A 부분으로 설정을 하면 매매횟수나 이익에서 많은 차이가 납니다. 왜 그렇지요? 말씀데로라면 같은 결과가 나와야 하는 것 아닌가요?