커뮤니티

문의드립니다.

프로필 이미지
잡다백수
2019-01-23 10:35:12
148
글번호 125501
답변완료
도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다. 1. 기타 어제 만들어주신 시스템을 약간 수정했는데요. 일목기간이란 게 선행스팬 수평 이동이라고 보시면 되고 수직퍼센트가 수직 이동이라고 보시면 됩니다. 그런데 일목균형표 기본으로 제공돼 있는 거로 실제 모의 매매를 몇번 해봤는데요. 수평 이동 이건 그려진 것과 동일하게 문제없이 청산이 되는데요. 저 수직퍼센트 외부변수를 추가해서 수직 이동과 관련된 수식을 추가하자 이상하게 일목균형표 선행스팬과 안 맞습니다. 가령 설정창에서 0.04%인 선행스팬을 그린 뒤 시스템에서도 0.04% 더한 값을 추가해줬는데요. 그 부분에서 청산이 안됩니다. 뭐가 잘못된 걸까요. 값을 찍어보진 않았지만 설정창에서 쓴 값(0.04%)보다 더 큰 값이 들어가는 것 같습니다. input : 진입시간(100000), 진입날짜(20190122), 수량(1), 청산방법(0), 일목기간(15), 수직퍼센트(0.1) ; var : 전환선(0),기준선(0),후행스팬(0),선행스팬1(0),선행스팬2(0),구름상단(0),구름하단(0); 전환선 = (highest(H,9)+lowest(L,9))/2; 기준선 = (highest(H,26)+lowest(L,26))/2; 후행스팬 = C; 선행스팬1 = (전환선+기준선)/2; 선행스팬2 = (highest(H,52)+lowest(L,52))/2; var1 = max(선행스팬1[일목기간],선행스팬2[일목기간]); 구름상단 = max(선행스팬1[일목기간],선행스팬2[일목기간]) + (var1 * 수직퍼센트); 구름하단 = min(선행스팬1[일목기간],선행스팬2[일목기간]) + (var1 * 수직퍼센트); if sdate == 진입날짜 and ((sdate != sdate[1] and stime >= 진입시간) or (sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간)) Then { if 청산방법 == 0 Then buy("b",OnClose,def,수량); if 청산방법 == 1 Then sell("s",OnClose,def,수량); } if sdate == 진입날짜 and ((sdate != sdate[1] and stime >=진입시간 + 100) or (sdate == sdate[1] and stime >= 진입시간+100 and stime[1] < 진입시간 + 100)) Then Condition1 = true; if Condition1 == true then { if MarketPosition == 1 Then ExitLong("bx",AtStop,구름상단); if MarketPosition == -1 Then ExitShort("sx",AtStop,구름하단); } 2. 해선 이 수식 왜 이렇게 쓰는 지 좀 설명 좀 부탁드립니다. if (sdate != sdate[1] and stime >= 진입시간) or (sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간) then { 3. 기타 이거 지표가 안나오는데 이유를 모르겠습니다. S&P emini 30분봉 아래 변수로 실험해봤습니다. input : starttime(70000),endtime(200000); var : Tcond(false),hh(0),ll(0); if (sdate != sdate[1] and stime >= starttime) or (sdate == sdate[1] and stime >= starttime and stime[1] < starttime) then { Tcond = true; hh = h; ll = l; } if (sdate != sdate[1] and stime >= endtime) or (sdate == sdate[1] and stime >= endtime and stime[1] < endtime) then { Tcond = false; } if Tcond == true then { if h > hh Then hh = h; if l < ll Then ll = l; var1 = (hh-ll)/PriceScale; }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2019-01-24 13:53:45

안녕하세요 예스스탁입니다. 1. 기존식은 0.01이 1%입니다. 100으로 나눠 되게 수정했습니다. input : 진입시간(100000), 진입날짜(20190122), 수량(1), 청산방법(0), 일목기간(15), 수직퍼센트(0.1) ; var : 전환선(0),기준선(0),후행스팬(0),선행스팬1(0),선행스팬2(0),구름상단(0),구름하단(0); 전환선 = (highest(H,9)+lowest(L,9))/2; 기준선 = (highest(H,26)+lowest(L,26))/2; 후행스팬 = C; 선행스팬1 = (전환선+기준선)/2; 선행스팬2 = (highest(H,52)+lowest(L,52))/2; var1 = max(선행스팬1[일목기간],선행스팬2[일목기간]); var2 = Min(선행스팬1[일목기간],선행스팬2[일목기간]); 구름상단 = max(선행스팬1[일목기간],선행스팬2[일목기간]) + (var1 * (수직퍼센트/100)); 구름하단 = min(선행스팬1[일목기간],선행스팬2[일목기간]) + (var2 * (수직퍼센트/100)); if sdate == 진입날짜 and ((sdate != sdate[1] and stime >= 진입시간) or (sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간)) Then { if 청산방법 == 0 Then buy("b",OnClose,def,수량); if 청산방법 == 1 Then sell("s",OnClose,def,수량); } if sdate == 진입날짜 and ((sdate != sdate[1] and stime >=진입시간 + 100) or (sdate == sdate[1] and stime >= 진입시간+100 and stime[1] < 진입시간 + 100)) Then Condition1 = true; if Condition1 == true then { if MarketPosition == 1 Then ExitLong("bx",AtStop,구름상단); if MarketPosition == -1 Then ExitShort("sx",AtStop,구름하단); } 2 해당 수식은 지정한 시간이후의 첫봉을 의미합니다. 거래가 없으면 지정한 시간에 봉이 없을 수 있으므로 지정한 시간이후의 첫봉을 지칭하기 위함입니다. 해선만 사용되는 것은 아닙니다. 모든 종목에 시간을 지정할 때 사용하는 표현입니다. 3 계산식만 있습니다. plot명령어 추가하셔야 합니다. input : starttime(70000),endtime(200000); var : Tcond(false),hh(0),ll(0); if (sdate != sdate[1] and stime >= starttime) or (sdate == sdate[1] and stime >= starttime and stime[1] < starttime) then { Tcond = true; hh = h; ll = l; } if (sdate != sdate[1] and stime >= endtime) or (sdate == sdate[1] and stime >= endtime and stime[1] < endtime) then { Tcond = false; } if Tcond == true then { if h > hh Then hh = h; if l < ll Then ll = l; var1 = (hh-ll)/PriceScale; } plot1(var1); 즐거운 하루되세요 > 잡다백수 님이 쓴 글입니다. > 제목 : 문의드립니다. > 도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다. 1. 기타 어제 만들어주신 시스템을 약간 수정했는데요. 일목기간이란 게 선행스팬 수평 이동이라고 보시면 되고 수직퍼센트가 수직 이동이라고 보시면 됩니다. 그런데 일목균형표 기본으로 제공돼 있는 거로 실제 모의 매매를 몇번 해봤는데요. 수평 이동 이건 그려진 것과 동일하게 문제없이 청산이 되는데요. 저 수직퍼센트 외부변수를 추가해서 수직 이동과 관련된 수식을 추가하자 이상하게 일목균형표 선행스팬과 안 맞습니다. 가령 설정창에서 0.04%인 선행스팬을 그린 뒤 시스템에서도 0.04% 더한 값을 추가해줬는데요. 그 부분에서 청산이 안됩니다. 뭐가 잘못된 걸까요. 값을 찍어보진 않았지만 설정창에서 쓴 값(0.04%)보다 더 큰 값이 들어가는 것 같습니다. input : 진입시간(100000), 진입날짜(20190122), 수량(1), 청산방법(0), 일목기간(15), 수직퍼센트(0.1) ; var : 전환선(0),기준선(0),후행스팬(0),선행스팬1(0),선행스팬2(0),구름상단(0),구름하단(0); 전환선 = (highest(H,9)+lowest(L,9))/2; 기준선 = (highest(H,26)+lowest(L,26))/2; 후행스팬 = C; 선행스팬1 = (전환선+기준선)/2; 선행스팬2 = (highest(H,52)+lowest(L,52))/2; var1 = max(선행스팬1[일목기간],선행스팬2[일목기간]); 구름상단 = max(선행스팬1[일목기간],선행스팬2[일목기간]) + (var1 * 수직퍼센트); 구름하단 = min(선행스팬1[일목기간],선행스팬2[일목기간]) + (var1 * 수직퍼센트); if sdate == 진입날짜 and ((sdate != sdate[1] and stime >= 진입시간) or (sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간)) Then { if 청산방법 == 0 Then buy("b",OnClose,def,수량); if 청산방법 == 1 Then sell("s",OnClose,def,수량); } if sdate == 진입날짜 and ((sdate != sdate[1] and stime >=진입시간 + 100) or (sdate == sdate[1] and stime >= 진입시간+100 and stime[1] < 진입시간 + 100)) Then Condition1 = true; if Condition1 == true then { if MarketPosition == 1 Then ExitLong("bx",AtStop,구름상단); if MarketPosition == -1 Then ExitShort("sx",AtStop,구름하단); } 2. 해선 이 수식 왜 이렇게 쓰는 지 좀 설명 좀 부탁드립니다. if (sdate != sdate[1] and stime >= 진입시간) or (sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간) then { 3. 기타 이거 지표가 안나오는데 이유를 모르겠습니다. S&P emini 30분봉 아래 변수로 실험해봤습니다. input : starttime(70000),endtime(200000); var : Tcond(false),hh(0),ll(0); if (sdate != sdate[1] and stime >= starttime) or (sdate == sdate[1] and stime >= starttime and stime[1] < starttime) then { Tcond = true; hh = h; ll = l; } if (sdate != sdate[1] and stime >= endtime) or (sdate == sdate[1] and stime >= endtime and stime[1] < endtime) then { Tcond = false; } if Tcond == true then { if h > hh Then hh = h; if l < ll Then ll = l; var1 = (hh-ll)/PriceScale; }