커뮤니티

장 마감때 못팔면 다음날 시초가에 파는 코딩

프로필 이미지
퀀트드래곤
2019-08-22 13:12:45
185
글번호 131354
답변완료
아래와같이 코딩을 하였는데 IF sDate >= EntryDate+1 Then <--- 이거때문인지 하루뒤에 안팔고, 사자마자 바로파는데 왜그러는건지 궁금하네요 그리고 진입 다음날 시초가에 파는 코딩도 같이 부탁드릴게요. (제 생각대로라면 원래 이게 다음날 시초가에 파는건데..잘 안됐나봐요) VAR : FirstO(0), FirstH(0), FirstL(0), FirstC(0); if dayindex == 0 Then { FirstO = O; FirstH = H; FirstL = L; FirstC = C; } If CrossUp(c,FirstH) Then { Buy("매수진입", AtMarket); } IF Time == 235000 Then { ExitLong("시간_매수청산", AtStop, C-1*PriceScale); } IF sDate >= EntryDate+1 Then { ExitLong("하루_매수청산", AtStop, C-1*PriceScale); }
시스템
답변 2
프로필 이미지

예스스탁 예스스탁 답변

2019-08-22 16:47:40

안녕하세요 예스스탁입니다. 1 진입신호가 확정되기 전에는 EntryDate가 0입니다. 오늘 날자가 0+1보다 크면 청산이기에 진입과 동시에 조건이 무조건 만족하게 됩니다. 아래와 같이 포지션 진입을 확인하는 내용을 추가하시면 됩니다. IF MarketPosition == 1 and sDate >= EntryDate+1 Then { ExitLong("하루_매수청산", AtStop, C-1*PriceScale); } 2 국내종목이면 아래식 이용하시면 됩니다. IF MarketPosition == 1 and NextBarSdate != sdate Then { ExitLong("시초가청산", AtMarket); } 하지만 24시간 거래되는 종목에서는 해당 수식으로 시초가 청산이 되지 않습니다. 별도로 시초가의 시간을 지정해서 청산하셔야 합니다. 봉완성시(다음봉시가수신)에 다음봉 시가의 시간이 7시이후이면 청산하는 내용입니다. IF MarketPosition == 1 and ((NextBarSdate != sdate and NextBarStime >= 70000) or (NextBarSdate == sdate and NextBarStime >= 70000 and stime < 70000)) Then { ExitLong("시초가청산", AtMarket); } 즐거운 하루되세요 > 퀀트드래곤 님이 쓴 글입니다. > 제목 : 장 마감때 못팔면 다음날 시초가에 파는 코딩 > 아래와같이 코딩을 하였는데 IF sDate >= EntryDate+1 Then <--- 이거때문인지 하루뒤에 안팔고, 사자마자 바로파는데 왜그러는건지 궁금하네요 그리고 진입 다음날 시초가에 파는 코딩도 같이 부탁드릴게요. (제 생각대로라면 원래 이게 다음날 시초가에 파는건데..잘 안됐나봐요) VAR : FirstO(0), FirstH(0), FirstL(0), FirstC(0); if dayindex == 0 Then { FirstO = O; FirstH = H; FirstL = L; FirstC = C; } If CrossUp(c,FirstH) Then { Buy("매수진입", AtMarket); } IF Time == 235000 Then { ExitLong("시간_매수청산", AtStop, C-1*PriceScale); } IF sDate >= EntryDate+1 Then { ExitLong("하루_매수청산", AtStop, C-1*PriceScale); }
프로필 이미지

퀀트드래곤

2019-08-23 16:38:10

IF sDate >= EntryDate+1 Then # <--------이거를 IF MarketPosition == 1 and sDate >= EntryDate+1 Then # <-----이렇게 바꿔줘야하는 이유를 모르겠어요. 엔트리데이 라는거 자체가 그냥 보유 후 다음이니까 마켓포지션이라는 코드를 포함하는 코드인인거같은데 왜 이렇게 바꿔주는건가요? 그리고 sdate "==" EntryDate+1 ">=" 이거나 "하루 뒤에 청산하라"는 조건이면 동일한 조건이라고 봐도 무방하지 않나요? 둘다 어차피 하루만에 팔거라서 동일한거 같은데..왜 이건 안될까요? 답변에서의 말처럼 진입과동시에 어떻게 바로 조건이 만족하는지 이해를 못하겠어요 그리고 EntryDay는 진입하는과 동시에 1이 되면 1+1이니까 2 인가요? 추가질문. IF MarketPosition == 1 AND SetStopEndofday(0000) THEN # 이렇게 해봤는데도 안되더라구요 바로 다음봉에서 바로 매도 하던데 원래 0000시에 딱 조건 발동하여 다음봉에서 팔아야하는것 아닌가요? ----------------------------------------------------------------------- > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 장 마감때 못팔면 다음날 시초가에 파는 코딩 > 안녕하세요 예스스탁입니다. 1 진입신호가 확정되기 전에는 EntryDate가 0입니다. 오늘 날자가 0+1보다 크면 청산이기에 진입과 동시에 조건이 무조건 만족하게 됩니다. 아래와 같이 포지션 진입을 확인하는 내용을 추가하시면 됩니다. IF MarketPosition == 1 and sDate >= EntryDate+1 Then { ExitLong("하루_매수청산", AtStop, C-1*PriceScale); } 2 국내종목이면 아래식 이용하시면 됩니다. IF MarketPosition == 1 and NextBarSdate != sdate Then { ExitLong("시초가청산", AtMarket); } 하지만 24시간 거래되는 종목에서는 해당 수식으로 시초가 청산이 되지 않습니다. 별도로 시초가의 시간을 지정해서 청산하셔야 합니다. 봉완성시(다음봉시가수신)에 다음봉 시가의 시간이 7시이후이면 청산하는 내용입니다. IF MarketPosition == 1 and ((NextBarSdate != sdate and NextBarStime >= 70000) or (NextBarSdate == sdate and NextBarStime >= 70000 and stime < 70000)) Then { ExitLong("시초가청산", AtMarket); } 즐거운 하루되세요 > 퀀트드래곤 님이 쓴 글입니다. > 제목 : 장 마감때 못팔면 다음날 시초가에 파는 코딩 > 아래와같이 코딩을 하였는데 IF sDate >= EntryDate+1 Then <--- 이거때문인지 하루뒤에 안팔고, 사자마자 바로파는데 왜그러는건지 궁금하네요 그리고 진입 다음날 시초가에 파는 코딩도 같이 부탁드릴게요. (제 생각대로라면 원래 이게 다음날 시초가에 파는건데..잘 안됐나봐요) VAR : FirstO(0), FirstH(0), FirstL(0), FirstC(0); if dayindex == 0 Then { FirstO = O; FirstH = H; FirstL = L; FirstC = C; } If CrossUp(c,FirstH) Then { Buy("매수진입", AtMarket); } IF Time == 235000 Then { ExitLong("시간_매수청산", AtStop, C-1*PriceScale); } IF sDate >= EntryDate+1 Then { ExitLong("하루_매수청산", AtStop, C-1*PriceScale); }