커뮤니티

매도 청산식 문의 드립니다.

프로필 이미지
맴맴잉
2022-06-01 20:57:27
806
글번호 159488
답변완료

첨부 이미지

얼마전에 현물관련 분할매도 관련 시스템식을 요청드린적이 있었습니다. 그런데 해당식으로 적용했을때 적용이 안되는 경우가 있는데 이유를 찾을수가 없어 이렇게 글을 남깁니다. 요청드렸던 식은 아래와 같습니다. 위 그림파일을 보시면 1,2,3번 으로 동그라미를 쳐놨습니다. 1. 1번 동그라미에서 3%분할익절, 4% 분할일익절 청산이 되지 않은 이유가 궁금합니다. 2. 2번 동그라미에서는 아주 잘 적용 된것 같습니다. 이부분에선 질문이 없습니다. 3. 3번 동그라미에서는 B, C, D 에서 매수가 되었고, 3%에서 전량 매도청산되었는데, 해당부분에서는 4, 5, 7, 10%의 분할익절이 왜 적용안되었는지 궁금합니다. 확인부탁드리겠습니다. 그리고 항상 감사드립니다. --------------------------------------------------------------- 안녕하세요 예스스탁입니다. 예스랭귀지는 대소문자 구분하지 않습니다 h나 H나 같습니다. #매수진입 if MarketPosition == 1 Then { #전봉대비 수량 감소(일부 청산발생을 위미) if CurrentContracts < CurrentContracts[1] Then { #청산가 저장 var1 = LatestExitPrice(0); #청산시간 저장 Var2 = TimeToMinutes(sTime); } #전봉대비 수량 증가(추가 진입발생을 의미) if CurrentContracts > CurrentContracts[1] Then { #현재수량 저장 Var3 = CurrentContracts; #고가 저장 Var4 = H; } #최근 진입후 최고가 계산 #현재봉 고가가 Var4보다 크면 Var4의 값을 현재봉 고가로 저장 if h > Var4 Then Var4 = h; #일부청산이 한번이상 발생하고 #현재 시간이 일부청산후 10분 이후이고 #종가가 청산가 보다 작으면 #전량 청산 if var1 > 0 and TimeToMinutes(sTime) >= Var2+10 and C < AvgEntryPrice then ExitLong("bx"); #진입후 최고가가 평단가+3% 작으면 #평단가+3%를 셋팅하고 다음봉에서 해당가격 터치시 즉시 40% 청산 if Var4 < AvgEntryPrice*1.03 Then ExitLong("3%익절",AtLimit,AvgEntryPrice*1.03,"",Floor(Var3*0.40)); #진입후 최고가가 평단가+4% 작으면 #평단가+4%를 셋팅하고 다음봉에서 해당가격 터치시 즉시 30% 청산 if Var4 < AvgEntryPrice*1.04 Then ExitLong("4%익절",AtLimit,AvgEntryPrice*1.04,"",Floor(Var3*0.30)); #진입후 최고가가 평단가+5% 작으면 #평단가+5%를 셋팅하고 다음봉에서 해당가격 터치시 즉시 10% 청산 if Var4 < AvgEntryPrice*1.05 Then ExitLong("5%익절",AtLimit,AvgEntryPrice*1.05,"",Floor(Var3*0.10)); #진입후 최고가가 평단가+6% 작으면 #평단가+6%를 셋팅하고 다음봉에서 해당가격 터치시 즉시 10% 청산 if Var4 < AvgEntryPrice*1.06 Then ExitLong("7%익절",AtLimit,AvgEntryPrice*1.06,"",Floor(Var3*0.10)); #진입후 최고가가 평단가+10% 작으면 #평단가+10%를 셋팅하고 다음봉에서 해당가격 터치시 즉시 전량 청산 if Var4 < AvgEntryPrice*1.10 Then ExitLong("10%익절",AtLimit,AvgEntryPrice*1.10); } Else#매수진입중이 아니면 { #변수 0으로 초기화 var1 = 0; Var2 = 0; }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2022-06-02 16:05:47

안녕하세요 예스스탁입니다. 현재 수식에 진입이후 각 분할청산이 한번씩만 동작하게 하기 위해 진입이후 최고가가 평단가+n%보다 낮을때 값을 셋팅하고 다음봉에서 평단가+n%에 도달하면 청산되게 되어 있습니다. 진입봉의 고가도 포함이 되는데 이미 진입봉의 고가가 지정한 %를 충족하고 있으면 해당 분할청산이 나오지 않습니다. 청산식의 이름으로 진입이후 1번씩만 동작하게 변경해 드립니다. #매수진입 if MarketPosition == 1 Then { #전봉대비 수량 감소(일부 청산발생을 위미) if CurrentContracts < CurrentContracts[1] Then { #청산가 저장 var1 = LatestExitPrice(0); #청산시간 저장 Var2 = TimeToMinutes(sTime); if LatestExitName(0) == "3%익절" Then Condition1 = true; if LatestExitName(0) == "4%익절" Then Condition2 = true; if LatestExitName(0) == "5%익절" Then Condition3 = true; if LatestExitName(0) == "7%익절" Then Condition4 = true; } #전봉대비 수량 증가(추가 진입발생을 의미) if CurrentContracts > CurrentContracts[1] Then { #현재수량 저장 Var3 = CurrentContracts; Condition1 = False; Condition2 = False; Condition3 = False; Condition4 = False; } #일부청산이 한번이상 발생하고 #현재 시간이 일부청산후 10분 이후이고 #종가가 청산가 보다 작으면 #전량 청산 if var1 > 0 and TimeToMinutes(sTime) >= Var2+10 and C < AvgEntryPrice then ExitLong("bx"); #평단가+3%를 셋팅하고 다음봉에서 해당가격 터치시 즉시 40% 청산 if Condition1 == False Then ExitLong("3%익절",AtLimit,AvgEntryPrice*1.03,"",Floor(Var3*0.40)); #평단가+4%를 셋팅하고 다음봉에서 해당가격 터치시 즉시 30% 청산 if Condition2 == False Then ExitLong("4%익절",AtLimit,AvgEntryPrice*1.04,"",Floor(Var3*0.30)); #평단가+5%를 셋팅하고 다음봉에서 해당가격 터치시 즉시 10% 청산 if Condition3 == False Then ExitLong("5%익절",AtLimit,AvgEntryPrice*1.05,"",Floor(Var3*0.10)); #평단가+6%를 셋팅하고 다음봉에서 해당가격 터치시 즉시 10% 청산 if Condition4 == False Then ExitLong("7%익절",AtLimit,AvgEntryPrice*1.06,"",Floor(Var3*0.10)); #평단가+10%를 셋팅하고 다음봉에서 해당가격 터치시 즉시 전량 청산 ExitLong("10%익절",AtLimit,AvgEntryPrice*1.10); } Else#매수진입중이 아니면 { #변수 0으로 초기화 var1 = 0; Var2 = 0; Condition1 = False; Condition2 = False; Condition3 = False; Condition4 = False; } 즐거운 하루되세요 > 맴맴잉 님이 쓴 글입니다. > 제목 : 매도 청산식 문의 드립니다. > 얼마전에 현물관련 분할매도 관련 시스템식을 요청드린적이 있었습니다. 그런데 해당식으로 적용했을때 적용이 안되는 경우가 있는데 이유를 찾을수가 없어 이렇게 글을 남깁니다. 요청드렸던 식은 아래와 같습니다. 위 그림파일을 보시면 1,2,3번 으로 동그라미를 쳐놨습니다. 1. 1번 동그라미에서 3%분할익절, 4% 분할일익절 청산이 되지 않은 이유가 궁금합니다. 2. 2번 동그라미에서는 아주 잘 적용 된것 같습니다. 이부분에선 질문이 없습니다. 3. 3번 동그라미에서는 B, C, D 에서 매수가 되었고, 3%에서 전량 매도청산되었는데, 해당부분에서는 4, 5, 7, 10%의 분할익절이 왜 적용안되었는지 궁금합니다. 확인부탁드리겠습니다. 그리고 항상 감사드립니다. --------------------------------------------------------------- 안녕하세요 예스스탁입니다. 예스랭귀지는 대소문자 구분하지 않습니다 h나 H나 같습니다. #매수진입 if MarketPosition == 1 Then { #전봉대비 수량 감소(일부 청산발생을 위미) if CurrentContracts < CurrentContracts[1] Then { #청산가 저장 var1 = LatestExitPrice(0); #청산시간 저장 Var2 = TimeToMinutes(sTime); } #전봉대비 수량 증가(추가 진입발생을 의미) if CurrentContracts > CurrentContracts[1] Then { #현재수량 저장 Var3 = CurrentContracts; #고가 저장 Var4 = H; } #최근 진입후 최고가 계산 #현재봉 고가가 Var4보다 크면 Var4의 값을 현재봉 고가로 저장 if h > Var4 Then Var4 = h; #일부청산이 한번이상 발생하고 #현재 시간이 일부청산후 10분 이후이고 #종가가 청산가 보다 작으면 #전량 청산 if var1 > 0 and TimeToMinutes(sTime) >= Var2+10 and C < AvgEntryPrice then ExitLong("bx"); #진입후 최고가가 평단가+3% 작으면 #평단가+3%를 셋팅하고 다음봉에서 해당가격 터치시 즉시 40% 청산 if Var4 < AvgEntryPrice*1.03 Then ExitLong("3%익절",AtLimit,AvgEntryPrice*1.03,"",Floor(Var3*0.40)); #진입후 최고가가 평단가+4% 작으면 #평단가+4%를 셋팅하고 다음봉에서 해당가격 터치시 즉시 30% 청산 if Var4 < AvgEntryPrice*1.04 Then ExitLong("4%익절",AtLimit,AvgEntryPrice*1.04,"",Floor(Var3*0.30)); #진입후 최고가가 평단가+5% 작으면 #평단가+5%를 셋팅하고 다음봉에서 해당가격 터치시 즉시 10% 청산 if Var4 < AvgEntryPrice*1.05 Then ExitLong("5%익절",AtLimit,AvgEntryPrice*1.05,"",Floor(Var3*0.10)); #진입후 최고가가 평단가+6% 작으면 #평단가+6%를 셋팅하고 다음봉에서 해당가격 터치시 즉시 10% 청산 if Var4 < AvgEntryPrice*1.06 Then ExitLong("7%익절",AtLimit,AvgEntryPrice*1.06,"",Floor(Var3*0.10)); #진입후 최고가가 평단가+10% 작으면 #평단가+10%를 셋팅하고 다음봉에서 해당가격 터치시 즉시 전량 청산 if Var4 < AvgEntryPrice*1.10 Then ExitLong("10%익절",AtLimit,AvgEntryPrice*1.10); } Else#매수진입중이 아니면 { #변수 0으로 초기화 var1 = 0; Var2 = 0; }