커뮤니티

문의드립니다 ㅠ

프로필 이미지
루라라라
2023-04-19 02:22:45
1007
글번호 168305
답변완료
첫번째 질문입니다 Data1 : 삼전 1분봉 차트 Data2 : 삼전 일봉 차트 매수해서 보유하고 있는 상황이라고 가정하고, 아래 1번과 2번의 차이는, NextBarStime >= 151000 인지 stime >= 151000 인지 밖에 없는데 복사붙여넣기해서 1번을 해보면 아예 작동이 안되고 2번을 해보면 작동이 잘 됩니다. '이번봉시간', '다음봉시간'이라 별 차이가 없을 것 같은데 왜 그럴까요? 1번 Else if MarketPosition==1 and stime >= 151000 and NextBarSdate == sDate Then SetStopLoss( 1*Data2(ATr(20)) , PointStop ); Else SetStopLoss(0); 2번 Else if MarketPosition==1 and NextBarStime >= 151000 and NextBarSdate == sDate Then SetStopLoss( 1*Data2(ATr(20)) , PointStop ); Else SetStopLoss(0); -------------------------------------------- 두번째 질문입니다. 위의 것과 연계된 질문인데.... 피라미딩을 하게 되면 첫진입 -> 피라미딩1 -> 피라미딩2 이런식으로 진행이 될때, 최초 진입한 경우, 최초진입가 - 1*Data2(ATr(20)) 가 되면 전부 청산하고 이와 별개로 따로 강제청산을 설정해줬습니다 (진입가보다 (2*Data2(ATr(20)) 이상 떨어지면 강제청산) 최초 진입한 물량(피라미딩 하기 전)의 손절선은, 최초 진입가격 - 1*Data2(ATr(20)가 되고, 이후 가격이 상승하면서 피라미딩한 물량들의 강제청산 손절선은, 개별 진입가격 - 2*Data2(ATr(20))으로 하고자 했습니다 Data1 : 삼전 1분봉 차트 Data2 : 삼전 일봉 차트 if MarketPosition==1 and Stime >= 151000 and NextBarSdate == sDate Then { ExitLong("최초손절", atstop, EntryPrice - 1*Data2(ATr(20)) ); } Else if MarketPosition==1 and Stime >= 151000 and NextBarSdate == sDate Then SetStopLoss( 2*Data2(ATr(20)) , PointStop ); Else SetStopLoss(0); 여기서도 Stime이 아니라 NextBarStime으로 하면 작동이 됩니다 (왜 그런지 1번 질문에 여쭤봤습니다) 근데 최초손절에도 NextBarStime을 설정하고 / 강제청산에도 NextBarStime을 설정하면 최초손절만 작동하고 else if에 있는 강제청산은 작동하지 않습니다. 이게 이해가 안되서 질문 남깁니다 ㅠㅠ 둘다 잘 작동하게 하려면 어찌해야할까요....
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2023-04-19 18:30:27

안녕하세요 예스스탁입니다. 1 올려주신 내용과 같이 stime은 완성봉의 시작시간이고 nextbarstime은 다음봉시가의 시간일 뿐입니다. 내용상으로는 시간조건의 판단을 완성봉의 시작시간으로 할것인지 다음봉시작시간으로 할것인지 차이만 있습니다. 해당식은 첨부된 그림과 같이 신호가 발생합니다. 2개모두 문제가 있는 내용은 아닙니다. 아마 else와 관련되어 있을 것 같습니다. 해당 부분은 사용자분이 조건내용을 살펴보셔야 합니다. 2 if A조건 then 실행1 else if B조건then 실행2 위 수식구조는 A조건이 만족하지 않아야 B조건으로 들어가게 됩니다. 하지만 작성하신 아래 내용은 if와 else if가 같은 내용입니다. 즉 지정한 조건대가 같은 조건이 충족되면 아래 else if는 충족될 수 없습니다. else를 제외하고 작성해 사용하셔야 합니다. if MarketPosition==1 and Stime >= 151000 and NextBarSdate == sDate Then { ExitLong("최초손절", atstop, EntryPrice - 1*Data2(ATr(20)) ); } if MarketPosition==1 and Stime >= 151000 and NextBarSdate == sDate Then SetStopLoss( 2*Data2(ATr(20)) , PointStop ); else SetStopLoss(0); 즐거운 하루되세요 > 루라라라 님이 쓴 글입니다. > 제목 : 문의드립니다 ㅠ > 첫번째 질문입니다 Data1 : 삼전 1분봉 차트 Data2 : 삼전 일봉 차트 매수해서 보유하고 있는 상황이라고 가정하고, 아래 1번과 2번의 차이는, NextBarStime >= 151000 인지 stime >= 151000 인지 밖에 없는데 복사붙여넣기해서 1번을 해보면 아예 작동이 안되고 2번을 해보면 작동이 잘 됩니다. '이번봉시간', '다음봉시간'이라 별 차이가 없을 것 같은데 왜 그럴까요? 1번 Else if MarketPosition==1 and stime >= 151000 and NextBarSdate == sDate Then SetStopLoss( 1*Data2(ATr(20)) , PointStop ); Else SetStopLoss(0); 2번 Else if MarketPosition==1 and NextBarStime >= 151000 and NextBarSdate == sDate Then SetStopLoss( 1*Data2(ATr(20)) , PointStop ); Else SetStopLoss(0); -------------------------------------------- 두번째 질문입니다. 위의 것과 연계된 질문인데.... 피라미딩을 하게 되면 첫진입 -> 피라미딩1 -> 피라미딩2 이런식으로 진행이 될때, 최초 진입한 경우, 최초진입가 - 1*Data2(ATr(20)) 가 되면 전부 청산하고 이와 별개로 따로 강제청산을 설정해줬습니다 (진입가보다 (2*Data2(ATr(20)) 이상 떨어지면 강제청산) 최초 진입한 물량(피라미딩 하기 전)의 손절선은, 최초 진입가격 - 1*Data2(ATr(20)가 되고, 이후 가격이 상승하면서 피라미딩한 물량들의 강제청산 손절선은, 개별 진입가격 - 2*Data2(ATr(20))으로 하고자 했습니다 Data1 : 삼전 1분봉 차트 Data2 : 삼전 일봉 차트 if MarketPosition==1 and Stime >= 151000 and NextBarSdate == sDate Then { ExitLong("최초손절", atstop, EntryPrice - 1*Data2(ATr(20)) ); } Else if MarketPosition==1 and Stime >= 151000 and NextBarSdate == sDate Then SetStopLoss( 2*Data2(ATr(20)) , PointStop ); Else SetStopLoss(0); 여기서도 Stime이 아니라 NextBarStime으로 하면 작동이 됩니다 (왜 그런지 1번 질문에 여쭤봤습니다) 근데 최초손절에도 NextBarStime을 설정하고 / 강제청산에도 NextBarStime을 설정하면 최초손절만 작동하고 else if에 있는 강제청산은 작동하지 않습니다. 이게 이해가 안되서 질문 남깁니다 ㅠㅠ 둘다 잘 작동하게 하려면 어찌해야할까요....