커뮤니티

코드가 원하는대로 되지 않습니다.

프로필 이미지
올드송
2024-02-12 22:14:42
769
글번호 176566
답변완료

첨부 이미지

var : 구매일자(0),구매시간(0),구매가격(0),구매포지션(False); var : 수익율(0),일번돌파(False),이번돌파(False),저점(False),고점(False),올랐다(0); var : 가두리상선1(0),가두리하선1(0),가두리상선2(0),가두리하선2(0),가두리폭(5),증감(2),가두리기간(30); var : 가두리대상(False),가두리상태(False),하이값(0),로우값(0),가두리상선(0),가두리하선(0),매물대최고(False),매물대박스(0); 가두리상선 = 첫번째매물대하이 * (1 + (증감/100)); 가두리하선 = 첫번째매물대로우 * (1 - (증감/100)); 가두리대상 = ((첫번째매물대하이 - 첫번째매물대로우)/첫번째매물대로우) *100 < 가두리폭; 매물대최고 = 첫번째매물대하이 > 두번째매물대하이; if 가두리대상 && CountIF(Highest(h, 가두리기간) < 가두리상선,가두리기간) < 1 && CountIF(Lowest(l, 가두리기간) > 가두리하선,가두리기간) < 1 then { 가두리상태 = True; } if 가두리상태[1] && CrossUp (c, 가두리상선) && 매물대최고 Then { Buy("가두리",ATSTOP,가두리상선); 가두리상태 = False; 가두리대상 = False; 구매일자 = sdate; 구매시간 = stime; 구매가격 = Close; Box_SetSize(매물대박스, 6); Box_Setfill(매물대박스,true,100,true); 매물대박스 = Box_New(구매일자[20], 구매시간, 가두리상선, 구매일자[1], 구매시간, 가두리하선); } IF MarketPosition == 1 then { 수익율 = ((C - 구매가격) / 구매가격) * 100; if 수익율 >= 5 && !곡선상승중 Then { ExitLong("5% 익절"); 구매일자 = 0; // 구매 일자 리셋 구매시간 = 0; // 구매 시간 리셋 구매가격 = 0; // 구매 가격 리셋 수익율 = 0; 가두리상태 = False; 가두리대상 = False; } if 수익율 <= -7 Then { ExitLong("7% 손절"); 구매일자 = 0; // 구매 일자 리셋 구매시간 = 0; // 구매 시간 리셋 구매가격 = 0; // 구매 가격 리셋 수익율 = 0; 가두리상태 = False; 가두리대상 = False; } } 많은 도움 주셔서 감사 합니다. 실력이 좀 늘었다고 생각했는데 아직 이런 기초적인것도 안되네요. 기간동안 가두리 범위 안에 캔들이 있다가 상선을 돌파 할때 구매를 하는건데 제대로 되는것도 있지만 캔들이 범위 밖에 나간것도 구매가 됩니다. 뭐가 잘못된건지 모르겠네요. 두번재 스샷은 캔들에 검은색 칠해진건 15% 이상의 캔들 입니다. 딱 봐도 가두리랑 상관없이 검색된겁니다. 위의 코드에서 수정을 부탁 드리고, 더 간결하고 좋은 코드가 있으면 그것도 올려 주시면 공부 열심히 하겠습니다. 질문을 올리고 처음으로 박스함수를 써봤는데.. 아무런 출력이 되지 않네요.. 수정부탁드립니다 ^^;
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2024-02-14 11:24:58

안녕하세요 예스스탁입니다. 다른 부분은 내용파악이 어려워 답변드리기 어렵습니다. 아래 2가지 부분만 답변드립니다. 1 if 가두리상태[1] && CrossUp(c, 가두리상선) && 매물대최고 Then { Buy("가두리",ATSTOP,가두리상선); buy에 atstop은 봉완성시 지정한 조건이 만족하면 다음봉에서 지정한값 이상의 시세가 발생하면 매수되는 신호타입입니다. 이미 봉완성시 종가가 가두기상선을 돌파했는데 다음봉에서 다시 한번 지정한 값이상의 가격일때만 진입하게 되어 있습니다. 아래와 같이 봉완성시 종가로만 발생하게 작성하시거나 if 가두리상태[1] && CrossUp(c, 가두리상선) && 매물대최고 Then { Buy("가두리"); 아래와 같이 봉미완성시에 가두리상선 아래에 위치하다가 상승해 터치하면 즉시 진입하게 하시면 됩니다. if 가두리상태 && H < 가두리상선 && 매물대최고 Then { Buy("가두리",ATSTOP,가두리상선); 2 매물대박스 = Box_New(구매일자[20], 구매시간, 가두리상선, 구매일자[1], 구매시간, 가두리하선); 박스는 특정날짜의 특정시간봉을 지정하셔야 합니다. 위 내용에 보시면 시작지점 날짜는 20봉전 구매일자인데 시작시간은 현재봉 구매시간입니다. 동일하게 20봉전으로 지정하셔야 합니다. 박스 종료지점도 같습니다. 날짜는1봉전인데 시작시간은 현재봉 구매시간입니다. 아라와 같이 동일하게 N봉전으로 지정해 주셔야 합니다. 매물대박스 = Box_New(구매일자[20], 구매시간[20], 가두리상선, 구매일자[1], 구매시간[1], 가두리하선); 즐거운 하루되세요 > 올드송 님이 쓴 글입니다. > 제목 : 코드가 원하는대로 되지 않습니다. > var : 구매일자(0),구매시간(0),구매가격(0),구매포지션(False); var : 수익율(0),일번돌파(False),이번돌파(False),저점(False),고점(False),올랐다(0); var : 가두리상선1(0),가두리하선1(0),가두리상선2(0),가두리하선2(0),가두리폭(5),증감(2),가두리기간(30); var : 가두리대상(False),가두리상태(False),하이값(0),로우값(0),가두리상선(0),가두리하선(0),매물대최고(False),매물대박스(0); 가두리상선 = 첫번째매물대하이 * (1 + (증감/100)); 가두리하선 = 첫번째매물대로우 * (1 - (증감/100)); 가두리대상 = ((첫번째매물대하이 - 첫번째매물대로우)/첫번째매물대로우) *100 < 가두리폭; 매물대최고 = 첫번째매물대하이 > 두번째매물대하이; if 가두리대상 && CountIF(Highest(h, 가두리기간) < 가두리상선,가두리기간) < 1 && CountIF(Lowest(l, 가두리기간) > 가두리하선,가두리기간) < 1 then { 가두리상태 = True; } if 가두리상태[1] && CrossUp (c, 가두리상선) && 매물대최고 Then { Buy("가두리",ATSTOP,가두리상선); 가두리상태 = False; 가두리대상 = False; 구매일자 = sdate; 구매시간 = stime; 구매가격 = Close; Box_SetSize(매물대박스, 6); Box_Setfill(매물대박스,true,100,true); 매물대박스 = Box_New(구매일자[20], 구매시간, 가두리상선, 구매일자[1], 구매시간, 가두리하선); } IF MarketPosition == 1 then { 수익율 = ((C - 구매가격) / 구매가격) * 100; if 수익율 >= 5 && !곡선상승중 Then { ExitLong("5% 익절"); 구매일자 = 0; // 구매 일자 리셋 구매시간 = 0; // 구매 시간 리셋 구매가격 = 0; // 구매 가격 리셋 수익율 = 0; 가두리상태 = False; 가두리대상 = False; } if 수익율 <= -7 Then { ExitLong("7% 손절"); 구매일자 = 0; // 구매 일자 리셋 구매시간 = 0; // 구매 시간 리셋 구매가격 = 0; // 구매 가격 리셋 수익율 = 0; 가두리상태 = False; 가두리대상 = False; } } 많은 도움 주셔서 감사 합니다. 실력이 좀 늘었다고 생각했는데 아직 이런 기초적인것도 안되네요. 기간동안 가두리 범위 안에 캔들이 있다가 상선을 돌파 할때 구매를 하는건데 제대로 되는것도 있지만 캔들이 범위 밖에 나간것도 구매가 됩니다. 뭐가 잘못된건지 모르겠네요. 두번재 스샷은 캔들에 검은색 칠해진건 15% 이상의 캔들 입니다. 딱 봐도 가두리랑 상관없이 검색된겁니다. 위의 코드에서 수정을 부탁 드리고, 더 간결하고 좋은 코드가 있으면 그것도 올려 주시면 공부 열심히 하겠습니다. 질문을 올리고 처음으로 박스함수를 써봤는데.. 아무런 출력이 되지 않네요.. 수정부탁드립니다 ^^;