커뮤니티

문의

프로필 이미지
으럇챠
2015-05-04 08:55:22
188
글번호 85645
답변완료
계속 진입이 되어서 if문을 수정해서 수량이 1보다 클때 즉 몇차례 손절이 발생된 이후 여러계약의 물량 (n변수 지정값)이 실릴때만 진입신호가 발생되도록 해보려고 아래와 같이 수식을 수정했더니 진입횟수가 0이 되버립니다. 원래 취지대로 5회(x변수에 지정한 값) 손실발생시에만 진입이 되도록 수식을 수정하려면 어떻게 해야할런지요? If CrossUP(value, 55) && 수량 > 1 Then { buy("b",OnClose,def,수량); } > 예스스탁 님이 쓴 글입니다. > 제목 : Re : Re : Re : Re : Re : 수정한식입니다. > 안녕하세요 예스스탁입니다. 죄송합니다. 복사를 잘못해 드렸습니다. 아래식 이용하시면 됩니다. Input : Period(12), Period1(5),X(3),N(2); Var : value(0),Xcount(0),cnt(0),수량(0); if MarketPosition == 0 Then{ Xcount = 0; for cnt = 1 to X{ if PositionProfit(cnt) < 0 then Xcount = Xcount+1; } } Else{ Xcount = 0; for cnt = 0 to X-1{ if PositionProfit(cnt) < 0 then Xcount = Xcount+1; } } if Xcount == X Then 수량 = N; Else 수량 = 1; value = StochasticsK(Period,Period1); # 매수/매도청산 If CrossUP(value, 55) Then { buy("b",OnClose,def,수량); } # 매도/매수청산 If CrossDown(value, 55) Then { sell("s",OnClose,def,수량); } 즐거운 하루되세요
시스템
답변 2
프로필 이미지

예스스탁 예스스탁 답변

2015-05-04 14:15:05

안녕하세요 예스스탁입니다. 기존에 올려드린 식은 정상적으로 신호가 나오는 상태에서 이전에 손실횟수에 따라 수량만 조절하는 내용입니다. 몇번손실 이후에만 신호가 발생되는 식이 아닙니다. Input : Period(12), Period1(5),X(3),N(2); Var : value(0),Xcount(0),cnt(0),수량(0); if MarketPosition == 0 Then{ Xcount = 0; for cnt = 1 to X{ if PositionProfit(cnt) < 0 then Xcount = Xcount+1; } } Else{ Xcount = 0; for cnt = 0 to X-1{ if PositionProfit(cnt) < 0 then Xcount = Xcount+1; } } if Xcount == X Then 수량 = N; Else 수량 = 1; value = StochasticsK(Period,Period1); # 매수/매도청산 If CrossUP(value, 55) Then { buy("b",OnClose,def,수량); } # 매도/매수청산 If CrossDown(value, 55) Then { sell("s",OnClose,def,수량); } 연속 손실일때만 진입한다라고 하시면 이전에 41628번에 문의하신 것과 같이 진입청산을 가상으로 체크하셔야 합니다. 가상으로 체크한 진입과 청산로직에 의해서 손익을 판단해서 연속 손실을 체크해야 합니다. 아래식 참고하셔서 수정보완해 사용하시기 바랍니다. Input : shortPeriod(5), longPeriod(20),X(3),N(2); var : EP(0),Pst(0),cnt(0),losscnt(0); Array : PL[20](0); value1 = ma(C, shortPeriod); value2 = ma(C, longPeriod); # 매수/매도청산 If CrossUP(value1, value2) Then { if pst == 0 Then{ Pst = 1; EP = C; } if pst == -1 Then{ Pst = 1; if C > EP Then PL[0] = -1; Else PL[0] = 1; for cnt = 1 to 20{ PL[cnt] = PL[cnt][1]; } EP = C; } losscnt = 0; for cnt = 0 to X-1{ if PL[cnt] == -1 Then losscnt = losscnt+1; } if losscnt == 5 Then Buy("b",OnClose,def,N); } # 매도/매수청산 If CrossDown(value1, value2) Then { if pst == 0 Then{ Pst = -1; EP = C; } if pst == 1 Then{ Pst = -1; if C < EP Then PL[0] = -1; Else PL[0] = 1; for cnt = 1 to 20{ PL[cnt] = PL[cnt][1]; } EP = C; } losscnt = 0; for cnt = 0 to X-1{ if PL[cnt] == -1 Then losscnt = losscnt+1; } if losscnt == 5 Then sell("s",OnClose,def,N); } #가상매수진입 목표수익 만족 if pst == 1 and H >= EP+PriceScale*10 Then{ PL[0] = 1; for cnt = 1 to 20{ PL[cnt] = PL[cnt][1]; } } #가상매수진입 손절 만족 if pst == 1 and L <= EP-PriceScale*10 Then{ PL[0] = -1; for cnt = 1 to 20{ PL[cnt] = PL[cnt][1]; } } #가상매도진입 목표수익만족 if pst == -1 and L <= EP-PriceScale*10 Then{ PL[0] = 1; for cnt = 1 to 20{ PL[cnt] = PL[cnt][1]; } } #가상매도진입 손절 만족 if pst == -1 and H >= EP+PriceScale*10 Then{ PL[0] = -1; for cnt = 1 to 20{ PL[cnt] = PL[cnt][1]; } } SetStopLoss(PriceScale*10,PointStop); SetStopProfittarget(PriceScale*10,PointStop); 즐거운 하루되세요 > 으럇챠 님이 쓴 글입니다. > 제목 : 문의 > 계속 진입이 되어서 if문을 수정해서 수량이 1보다 클때 즉 몇차례 손절이 발생된 이후 여러계약의 물량 (n변수 지정값)이 실릴때만 진입신호가 발생되도록 해보려고 아래와 같이 수식을 수정했더니 진입횟수가 0이 되버립니다. 원래 취지대로 5회(x변수에 지정한 값) 손실발생시에만 진입이 되도록 수식을 수정하려면 어떻게 해야할런지요? If CrossUP(value, 55) && 수량 > 1 Then { buy("b",OnClose,def,수량); } > 예스스탁 님이 쓴 글입니다. > 제목 : Re : Re : Re : Re : Re : 수정한식입니다. > 안녕하세요 예스스탁입니다. 죄송합니다. 복사를 잘못해 드렸습니다. 아래식 이용하시면 됩니다. Input : Period(12), Period1(5),X(3),N(2); Var : value(0),Xcount(0),cnt(0),수량(0); if MarketPosition == 0 Then{ Xcount = 0; for cnt = 1 to X{ if PositionProfit(cnt) < 0 then Xcount = Xcount+1; } } Else{ Xcount = 0; for cnt = 0 to X-1{ if PositionProfit(cnt) < 0 then Xcount = Xcount+1; } } if Xcount == X Then 수량 = N; Else 수량 = 1; value = StochasticsK(Period,Period1); # 매수/매도청산 If CrossUP(value, 55) Then { buy("b",OnClose,def,수량); } # 매도/매수청산 If CrossDown(value, 55) Then { sell("s",OnClose,def,수량); } 즐거운 하루되세요
프로필 이미지

으럇챠

2015-05-04 15:52:43

아래 식을 그대로 예스랭기지에 넣어서 적용해봤는데 진입이 전혀 되지 않습니다. 오일 7틱, 1분 모두 안되네요... > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 문의 > 안녕하세요 예스스탁입니다. 기존에 올려드린 식은 정상적으로 신호가 나오는 상태에서 이전에 손실횟수에 따라 수량만 조절하는 내용입니다. 몇번손실 이후에만 신호가 발생되는 식이 아닙니다. Input : Period(12), Period1(5),X(3),N(2); Var : value(0),Xcount(0),cnt(0),수량(0); if MarketPosition == 0 Then{ Xcount = 0; for cnt = 1 to X{ if PositionProfit(cnt) < 0 then Xcount = Xcount+1; } } Else{ Xcount = 0; for cnt = 0 to X-1{ if PositionProfit(cnt) < 0 then Xcount = Xcount+1; } } if Xcount == X Then 수량 = N; Else 수량 = 1; value = StochasticsK(Period,Period1); # 매수/매도청산 If CrossUP(value, 55) Then { buy("b",OnClose,def,수량); } # 매도/매수청산 If CrossDown(value, 55) Then { sell("s",OnClose,def,수량); } 연속 손실일때만 진입한다라고 하시면 이전에 41628번에 문의하신 것과 같이 진입청산을 가상으로 체크하셔야 합니다. 가상으로 체크한 진입과 청산로직에 의해서 손익을 판단해서 연속 손실을 체크해야 합니다. 아래식 참고하셔서 수정보완해 사용하시기 바랍니다. Input : shortPeriod(5), longPeriod(20),X(3),N(2); var : EP(0),Pst(0),cnt(0),losscnt(0); Array : PL[20](0); value1 = ma(C, shortPeriod); value2 = ma(C, longPeriod); # 매수/매도청산 If CrossUP(value1, value2) Then { if pst == 0 Then{ Pst = 1; EP = C; } if pst == -1 Then{ Pst = 1; if C > EP Then PL[0] = -1; Else PL[0] = 1; for cnt = 1 to 20{ PL[cnt] = PL[cnt][1]; } EP = C; } losscnt = 0; for cnt = 0 to X-1{ if PL[cnt] == -1 Then losscnt = losscnt+1; } if losscnt == 5 Then Buy("b",OnClose,def,N); } # 매도/매수청산 If CrossDown(value1, value2) Then { if pst == 0 Then{ Pst = -1; EP = C; } if pst == 1 Then{ Pst = -1; if C < EP Then PL[0] = -1; Else PL[0] = 1; for cnt = 1 to 20{ PL[cnt] = PL[cnt][1]; } EP = C; } losscnt = 0; for cnt = 0 to X-1{ if PL[cnt] == -1 Then losscnt = losscnt+1; } if losscnt == 5 Then sell("s",OnClose,def,N); } #가상매수진입 목표수익 만족 if pst == 1 and H >= EP+PriceScale*10 Then{ PL[0] = 1; for cnt = 1 to 20{ PL[cnt] = PL[cnt][1]; } } #가상매수진입 손절 만족 if pst == 1 and L <= EP-PriceScale*10 Then{ PL[0] = -1; for cnt = 1 to 20{ PL[cnt] = PL[cnt][1]; } } #가상매도진입 목표수익만족 if pst == -1 and L <= EP-PriceScale*10 Then{ PL[0] = 1; for cnt = 1 to 20{ PL[cnt] = PL[cnt][1]; } } #가상매도진입 손절 만족 if pst == -1 and H >= EP+PriceScale*10 Then{ PL[0] = -1; for cnt = 1 to 20{ PL[cnt] = PL[cnt][1]; } } SetStopLoss(PriceScale*10,PointStop); SetStopProfittarget(PriceScale*10,PointStop); 즐거운 하루되세요 > 으럇챠 님이 쓴 글입니다. > 제목 : 문의 > 계속 진입이 되어서 if문을 수정해서 수량이 1보다 클때 즉 몇차례 손절이 발생된 이후 여러계약의 물량 (n변수 지정값)이 실릴때만 진입신호가 발생되도록 해보려고 아래와 같이 수식을 수정했더니 진입횟수가 0이 되버립니다. 원래 취지대로 5회(x변수에 지정한 값) 손실발생시에만 진입이 되도록 수식을 수정하려면 어떻게 해야할런지요? If CrossUP(value, 55) && 수량 > 1 Then { buy("b",OnClose,def,수량); } > 예스스탁 님이 쓴 글입니다. > 제목 : Re : Re : Re : Re : Re : 수정한식입니다. > 안녕하세요 예스스탁입니다. 죄송합니다. 복사를 잘못해 드렸습니다. 아래식 이용하시면 됩니다. Input : Period(12), Period1(5),X(3),N(2); Var : value(0),Xcount(0),cnt(0),수량(0); if MarketPosition == 0 Then{ Xcount = 0; for cnt = 1 to X{ if PositionProfit(cnt) < 0 then Xcount = Xcount+1; } } Else{ Xcount = 0; for cnt = 0 to X-1{ if PositionProfit(cnt) < 0 then Xcount = Xcount+1; } } if Xcount == X Then 수량 = N; Else 수량 = 1; value = StochasticsK(Period,Period1); # 매수/매도청산 If CrossUP(value, 55) Then { buy("b",OnClose,def,수량); } # 매도/매수청산 If CrossDown(value, 55) Then { sell("s",OnClose,def,수량); } 즐거운 하루되세요