커뮤니티

시스템식 요청드립니다.

프로필 이미지
맴맴잉
2024-03-06 00:28:02
812
글번호 177193
답변완료

첨부 이미지

위의 그림을 확인해보시면, 아래의 수식에 의해서 타점 1이 매수되어야 하는데, 매수가 안되었습니다. If c >= HH*1.005 AND LatestEntryName(0) == "타점" AND LatestExitName(1) == "5%익절" AND LatestExitName(0) == "P5청산" TheN Buy("타점1",AtLimit,타점,Floor((베팅금)/타점)*0.6); 혹시 왜 매수가 안되었는지 알수가 있을까요??? 예상하기로는 돌파매수타점인데, 고점이 갱신되면서 매수가 안된건가 싶기도 하고, 그렇게 되면 HH(1)을 적용 해야 하나 싶기도 하고 확인이 어려워 요청드립니다. --------------------------------------------------------------------------------------------- input : 베팅금(1000000); input : 시작날짜 (20240113),Xtime(110000) ; input : 타점(5000),손절(1000); var : P618(0),P5(0),P382(0),HH(0),LL(0); Var : day(0),EntryDay(0),entry(False),dd(0),ED(0); if sDate >= 시작날짜 Then { if Bdate != Bdate[1] Then { entry = true; day = day+1; dd = dd+1; } if HH == 0 or (HH > 0 and H > HH) Then HH = H; if LL == 0 or (LL > 0 and L < LL) Then LL = L; } P618 = LL+(HH-LL)*0.618; P5 = LL+(HH-LL)*0.5; P382 = LL+(HH-LL)*0.382; if TotalTrades > TotalTrades[1] Then entry = False; if MarketPosition == 0 and entry == true and c > 타점 Then Buy("타점",AtLimit,타점,Floor((베팅금)/타점)); If c >= HH*1.005 AND LatestEntryName(0) == "타점" AND LatestExitName(1) == "5%익절" AND LatestExitName(0) == "P5청산" TheN Buy("타점1",AtLimit,타점,Floor((베팅금)/타점)*0.6); if ((LatestEntryName(0) == "타점") )Then ExitLong("5%익절",AtLimit,AvgEntryPrice*1.05,"",Floor((베팅금)/타점)*0.3); if((LatestEntryName(0) == "타점") ) Then ExitLong("20%익절",AtLimit,AvgEntryPrice*1.2,"",Floor((베팅금)/타점)*0.3); if (LatestExitName(0) == "5%익절") and c <= P5 Then ExitLong("P5청산",AtLimit,P5,"",Floor((베팅금)/타점)*0.3); if (LatestExitName(0) == "5%익절") and c <= P382 Then ExitLong("P382청산",AtLimit,P382,"",Floor((베팅금)/타점)*0.4); if MarketPosition == 1 and sTime > xtime and 손절 >= c Then ExitLong("손절");
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2024-03-06 13:37:31

안녕하세요 예스스탁입니다. If c >= HH*1.005 AND LatestEntryName(0) == "타점" AND (LatestExitName(0) == "5%익절" and LatestExitName(0) == "P5청산") TheN Buy("타점1",AtLimit,타점,Floor((베팅금)/타점)*0.6); 위 수식에서는 3가지를 체크해 보셔야 합니다. 1 c >= HH*1.005 HH는 지정일 이후 최고가입니다. 종가가 최고가 보다 클 수는 없습니다. c >= HH[1]*1.005와 같이 HH1로 표현해서 종가가 전봉기준 HH값+0.5%보다 크면이라고 표현하셔야 합니다. 2 LatestExitName(1) == "5%익절" AND LatestExitName(0) == "P5청산" LatestExitName는 최근 청산명을 리턴합니다. 포지션 진행중에 가장최근의 분할로 청산된 신호의 이름은 LatestExitName(0)으로 직전거래(청산이 완전이 끝난 거래)의 마지막 청산은 LatestExitName(1)로 리턴됩니다. 그러므로 위 내용이 분할로 몇번 청산이 되었는데 진행중인 거래의 최근과 그 직전 분할청산명을 이용하고자 작성하신 내용이면 청산이 발생할때마다 이름을 별도로 저장해서 사용하셔야 합니다. var : Xname1(""),Xname2(""); if MarketPosition == 1 Then { if CurrentContracts < CurrentContracts[1] Then { Xname1 = LatestExitName(0); Xname2 = Xname1[1]; if sDate == 20240205 Then MessageLog("%s %s",Xname1,Xname2); } If c >= HH[1]*1.005 AND LatestEntryName(0) == "타점" AND Xname2 == "5%익절" and Xname1 == "P5청산" Then Buy("타점1",AtLimit,타점,Floor((베팅금)/타점)*0.6); } Else { Xname1 = ""; Xname2 = ""; } 3 Buy("타점1",AtLimit,타점,Floor((베팅금)/타점)*0.6); Buy에서 Atlimit은 지정한 값 이하의 시세가 있어야 신호가 발생합니다. 현재 적용한 시스템에서 타점은 57100원입니다. if조건이 만족하고 다음봉에서 타점값까지 가격이 하락해야 진입을 합니다. 2월 6일 장초반에 if조건 만족한 봉이 있지만 가격이 57100원 이하가 없습니다. 아래 HH[1]*1.005와 타점값 지표로 적용해 보시기 바랍니다. 봉완성시 종가가 HH[1]*1.005보다 크면 타점값이 셋팅이 되고 다음봉에서 타점값보다 같거나 작은 가격이 발생해야 신호가 발생합니다. 4 input : 베팅금(1000000); input : 시작날짜 (20240113),Xtime(110000) ; input : 타점(5000),손절(1000); var : P618(0),P5(0),P382(0),HH(0),LL(0); Var : day(0),EntryDay(0),entry(False),dd(0),ED(0); if sDate >= 시작날짜 Then { if Bdate != Bdate[1] Then { entry = true; day = day+1; dd = dd+1; } if HH == 0 or (HH > 0 and H > HH) Then HH = H; if LL == 0 or (LL > 0 and L < LL) Then LL = L; } Plot1(hh[1]*1.005); plot2(타점); 즐거운 하루되세요 > 맴맴잉 님이 쓴 글입니다. > 제목 : 시스템식 요청드립니다. > 위의 그림을 확인해보시면, 아래의 수식에 의해서 타점 1이 매수되어야 하는데, 매수가 안되었습니다. If c >= HH*1.005 AND LatestEntryName(0) == "타점" AND LatestExitName(1) == "5%익절" AND LatestExitName(0) == "P5청산" TheN Buy("타점1",AtLimit,타점,Floor((베팅금)/타점)*0.6); 혹시 왜 매수가 안되었는지 알수가 있을까요??? 예상하기로는 돌파매수타점인데, 고점이 갱신되면서 매수가 안된건가 싶기도 하고, 그렇게 되면 HH(1)을 적용 해야 하나 싶기도 하고 확인이 어려워 요청드립니다. --------------------------------------------------------------------------------------------- input : 베팅금(1000000); input : 시작날짜 (20240113),Xtime(110000) ; input : 타점(5000),손절(1000); var : P618(0),P5(0),P382(0),HH(0),LL(0); Var : day(0),EntryDay(0),entry(False),dd(0),ED(0); if sDate >= 시작날짜 Then { if Bdate != Bdate[1] Then { entry = true; day = day+1; dd = dd+1; } if HH == 0 or (HH > 0 and H > HH) Then HH = H; if LL == 0 or (LL > 0 and L < LL) Then LL = L; } P618 = LL+(HH-LL)*0.618; P5 = LL+(HH-LL)*0.5; P382 = LL+(HH-LL)*0.382; if TotalTrades > TotalTrades[1] Then entry = False; if MarketPosition == 0 and entry == true and c > 타점 Then Buy("타점",AtLimit,타점,Floor((베팅금)/타점)); If c >= HH*1.005 AND LatestEntryName(0) == "타점" AND LatestExitName(1) == "5%익절" AND LatestExitName(0) == "P5청산" TheN Buy("타점1",AtLimit,타점,Floor((베팅금)/타점)*0.6); if ((LatestEntryName(0) == "타점") )Then ExitLong("5%익절",AtLimit,AvgEntryPrice*1.05,"",Floor((베팅금)/타점)*0.3); if((LatestEntryName(0) == "타점") ) Then ExitLong("20%익절",AtLimit,AvgEntryPrice*1.2,"",Floor((베팅금)/타점)*0.3); if (LatestExitName(0) == "5%익절") and c <= P5 Then ExitLong("P5청산",AtLimit,P5,"",Floor((베팅금)/타점)*0.3); if (LatestExitName(0) == "5%익절") and c <= P382 Then ExitLong("P382청산",AtLimit,P382,"",Floor((베팅금)/타점)*0.4); if MarketPosition == 1 and sTime > xtime and 손절 >= c Then ExitLong("손절");