커뮤니티

개장전 신호는 무시하고 개장후 조건만 따져 신호발생

프로필 이미지
천왕봉
2016-11-01 10:12:49
95
글번호 103570
답변완료
input : 기간(10),틱수(5); var1 = ma(c,5); var2 = ma(c,40); var3 = ma(C,60); var4 = (highest(H,기간)+lowest(L,기간))/2; #기존매수는 피라미딩이 되지 않게 MarketPosition <= 0 조건 추가 if MarketPosition <= 0 and var1 > var2 and C > var3 and C > O and (C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then buy("매수"); #기존매도는 피라미딩이 되지 않게 MarketPosition >= 0 조건 추가 if MarketPosition >= 0 and var1 < var2 and C < var3 and C < O and (C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then sell("매도"); #피라미딩매수(매수상태이고 첫봉에서 동일조건이면 추가매수) if (time == 090000 or (time > 090000 and time[1] < 090000)) and MarketPosition == 1 and var1 > var2 and C > var3 and C > O and (C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then buy("bb"); #피라미딩매수(매도상태이고 첫봉에서 동일조건이면 추가매도) if (time == 090000 or (time > 090000 and time[-1] < 090000)) and MarketPosition == -1 and var1 > var2 and C > var3 and C > O and (C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then buy("ss"); 어제의 마지막 신호와 동일한 방향일 경우 개장 후 첫 봉에서 추가 신호를 발생하는 국내선물 수식입니다. 그런데 어제의 마지막 신호가 매도였고 오늘 개장 후 첫봉이 양봉이었다면 신호가 발생하지 않습니다. 해결 방법으로 어제의 신호는 무시하고(마감 처리를 하고), 오늘 개장 이후 조건만을 따져 신호 발생 하도록 할 수는 없을까요? 어제의 신호 마감 처리는 날짜 기준으로 하지말고 개장 시간을 기준으로 해야합니다. 국내 선물이라면 9시 개장 이니까 9시 이전 신호에는 영향을 받지말고 9시 개장후 조건만을 따져 부합하면 신호 발생하는 수식이 필요합니다.
시스템
답변 3
프로필 이미지

예스스탁 예스스탁 답변

2016-11-01 10:45:22

안녕하세요 예스스탁입니다. 수식으로 신호의 포지션을 무시하고 새로운 신호를 내게 할수는 없습니다. 방법은 당일청산을 추가하시거나 혹은 매일 당일에만 신호가 나오게 하는 방법뿐이 없습니다. 당일 청산은 사용자분이 설정하시면 되는 부분이므로 과거일에는 신호발생이 없고 항상 당일에만 발생하는 내용으로 올려드립니다. input : 기간(10),틱수(5); var1 = ma(c,5); var2 = ma(c,40); var3 = ma(C,60); var4 = (highest(H,기간)+lowest(L,기간))/2; if CurrentDate == sdate then{ #기존매수는 피라미딩이 되지 않게 MarketPosition <= 0 조건 추가 if MarketPosition <= 0 and var1 > var2 and C > var3 and C > O and (C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then buy("매수"); #기존매도는 피라미딩이 되지 않게 MarketPosition >= 0 조건 추가 if MarketPosition >= 0 and var1 < var2 and C < var3 and C < O and (C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then sell("매도"); #피라미딩매수(매수상태이고 첫봉에서 동일조건이면 추가매수) if (time == 090000 or (time > 090000 and time[1] < 090000)) and MarketPosition == 1 and var1 > var2 and C > var3 and C > O and (C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then buy("bb"); #피라미딩매수(매도상태이고 첫봉에서 동일조건이면 추가매도) if (time == 090000 or (time > 090000 and time[-1] < 090000)) and MarketPosition == -1 and var1 > var2 and C > var3 and C > O and (C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then buy("ss"); } 즐거운 하루되세요 > 천왕봉 님이 쓴 글입니다. > 제목 : 개장전 신호는 무시하고 개장후 조건만 따져 신호발생 > input : 기간(10),틱수(5); var1 = ma(c,5); var2 = ma(c,40); var3 = ma(C,60); var4 = (highest(H,기간)+lowest(L,기간))/2; #기존매수는 피라미딩이 되지 않게 MarketPosition <= 0 조건 추가 if MarketPosition <= 0 and var1 > var2 and C > var3 and C > O and (C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then buy("매수"); #기존매도는 피라미딩이 되지 않게 MarketPosition >= 0 조건 추가 if MarketPosition >= 0 and var1 < var2 and C < var3 and C < O and (C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then sell("매도"); #피라미딩매수(매수상태이고 첫봉에서 동일조건이면 추가매수) if (time == 090000 or (time > 090000 and time[1] < 090000)) and MarketPosition == 1 and var1 > var2 and C > var3 and C > O and (C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then buy("bb"); #피라미딩매수(매도상태이고 첫봉에서 동일조건이면 추가매도) if (time == 090000 or (time > 090000 and time[-1] < 090000)) and MarketPosition == -1 and var1 > var2 and C > var3 and C > O and (C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then buy("ss"); 어제의 마지막 신호와 동일한 방향일 경우 개장 후 첫 봉에서 추가 신호를 발생하는 국내선물 수식입니다. 그런데 어제의 마지막 신호가 매도였고 오늘 개장 후 첫봉이 양봉이었다면 신호가 발생하지 않습니다. 해결 방법으로 어제의 신호는 무시하고(마감 처리를 하고), 오늘 개장 이후 조건만을 따져 신호 발생 하도록 할 수는 없을까요? 어제의 신호 마감 처리는 날짜 기준으로 하지말고 개장 시간을 기준으로 해야합니다. 국내 선물이라면 9시 개장 이니까 9시 이전 신호에는 영향을 받지말고 9시 개장후 조건만을 따져 부합하면 신호 발생하는 수식이 필요합니다.
프로필 이미지

천왕봉

2016-11-01 13:07:03

말씀하신데로 당일 청산을 설정하니까 국내선물은 당일 청산하고 개장후 조건이 맞으면 바로 신호가 나오는데 해외선물 항셍지수는 당일 청산이 안먹히고 전일 장의 마지막 신호와 동일한 방향일 경우 개장후에도 신호 발생이 안됩니다. 이 문제를 해결하기 위해 지난번에 개장하는 시간으로 작성해 주셨는데 이것 역시 위에서 질문드린 것 처럼 전일의 마지막 신호가 매도였고 당일 개장후 첫봉에서 양봉이 만들어졌다면 첫 봉에서 신호 발생이 안됩니다. 그렇다면 그 다음봉에서라도 조건이 맞으면 신호발생 해야 하는데 첫 봉을 제외한 나머지 봉에서는 조건을 만족해도 신호 발생이 안됩니다. 나머지 봉에서라도 조건을 만족하면 신호를 발생하는 수식을 만들수는 없을까요? 다른 방법으로라도 위 문제를 해결할 수만 있으면 됩니다. 위에서 작성해 주신 수식 당일에만 신호 발생이 되는거요.. 이것도 항셍 개장은 오전10시 15분이고 폐장은 날짜를 넘어 01시 00분에 하니까 자정넘어 신호가 발생하면 그 신호는 전일장의 신호 이지만 당일 신호에 해당되어 그데로 유지가 되니까 10시 15분에 개장하면 개장 전의 신호가 유지되어 당일에만 신호를 발생하려는 위 수식의 효과가 없습니다. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 개장전 신호는 무시하고 개장후 조건만 따져 신호발생 > 안녕하세요 예스스탁입니다. 수식으로 신호의 포지션을 무시하고 새로운 신호를 내게 할수는 없습니다. 방법은 당일청산을 추가하시거나 혹은 매일 당일에만 신호가 나오게 하는 방법뿐이 없습니다. 당일 청산은 사용자분이 설정하시면 되는 부분이므로 과거일에는 신호발생이 없고 항상 당일에만 발생하는 내용으로 올려드립니다. input : 기간(10),틱수(5); var1 = ma(c,5); var2 = ma(c,40); var3 = ma(C,60); var4 = (highest(H,기간)+lowest(L,기간))/2; if CurrentDate == sdate then{ #기존매수는 피라미딩이 되지 않게 MarketPosition <= 0 조건 추가 if MarketPosition <= 0 and var1 > var2 and C > var3 and C > O and (C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then buy("매수"); #기존매도는 피라미딩이 되지 않게 MarketPosition >= 0 조건 추가 if MarketPosition >= 0 and var1 < var2 and C < var3 and C < O and (C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then sell("매도"); #피라미딩매수(매수상태이고 첫봉에서 동일조건이면 추가매수) if (time == 090000 or (time > 090000 and time[1] < 090000)) and MarketPosition == 1 and var1 > var2 and C > var3 and C > O and (C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then buy("bb"); #피라미딩매수(매도상태이고 첫봉에서 동일조건이면 추가매도) if (time == 090000 or (time > 090000 and time[-1] < 090000)) and MarketPosition == -1 and var1 > var2 and C > var3 and C > O and (C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then buy("ss"); } 즐거운 하루되세요 > 천왕봉 님이 쓴 글입니다. > 제목 : 개장전 신호는 무시하고 개장후 조건만 따져 신호발생 > input : 기간(10),틱수(5); var1 = ma(c,5); var2 = ma(c,40); var3 = ma(C,60); var4 = (highest(H,기간)+lowest(L,기간))/2; #기존매수는 피라미딩이 되지 않게 MarketPosition <= 0 조건 추가 if MarketPosition <= 0 and var1 > var2 and C > var3 and C > O and (C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then buy("매수"); #기존매도는 피라미딩이 되지 않게 MarketPosition >= 0 조건 추가 if MarketPosition >= 0 and var1 < var2 and C < var3 and C < O and (C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then sell("매도"); #피라미딩매수(매수상태이고 첫봉에서 동일조건이면 추가매수) if (time == 090000 or (time > 090000 and time[1] < 090000)) and MarketPosition == 1 and var1 > var2 and C > var3 and C > O and (C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then buy("bb"); #피라미딩매수(매도상태이고 첫봉에서 동일조건이면 추가매도) if (time == 090000 or (time > 090000 and time[-1] < 090000)) and MarketPosition == -1 and var1 > var2 and C > var3 and C > O and (C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then buy("ss"); 어제의 마지막 신호와 동일한 방향일 경우 개장 후 첫 봉에서 추가 신호를 발생하는 국내선물 수식입니다. 그런데 어제의 마지막 신호가 매도였고 오늘 개장 후 첫봉이 양봉이었다면 신호가 발생하지 않습니다. 해결 방법으로 어제의 신호는 무시하고(마감 처리를 하고), 오늘 개장 이후 조건만을 따져 신호 발생 하도록 할 수는 없을까요? 어제의 신호 마감 처리는 날짜 기준으로 하지말고 개장 시간을 기준으로 해야합니다. 국내 선물이라면 9시 개장 이니까 9시 이전 신호에는 영향을 받지말고 9시 개장후 조건만을 따져 부합하면 신호 발생하는 수식이 필요합니다.
프로필 이미지

예스스탁 예스스탁 답변

2016-11-01 15:23:34

안녕하세요 예스스탁입니다. 문의하신 내용은 수식에 특정시간에 청산을 하고 다시 진입하게 하는 방법뿐이 없습니다. 국내의 경우에는 당일청산을 이용해 청산을 하시면 되는데 해외는 당일청산함수로는 가능하지 않고 특정시간에 청산하고 시간을 지정해 해당 시간안에만 거래가 가능하도록 하셔야 합니다. 지정한 시작시간부터 종료시간 까지만 진입이 발생하며 종료시간에 포지션이 있으면 청산을 합니다. plot1(time); 위 시간출력하는 지표 적용해서 시간확인 후 시작시간과 종료시간 지정하시기 바랍니다. input : 기간(10),틱수(5),시작시간(101500),종료시간(003000); var : Tcond(false); if time == 시작시간 or (time > 시작시간 and time[1] < 시작시간) Then Tcond = true; if time == 종료시간 or (time > 종료시간 and time[1] < 종료시간) Then{ Tcond = false; if MarketPosition == 1 Then exitlong("bx"); if MarketPosition == -1 Then ExitShort("sx"); } var1 = ma(c,5); var2 = ma(c,40); var3 = ma(C,60); var4 = (highest(H,기간)+lowest(L,기간))/2; if Tcond == true then{ #기존매수는 피라미딩이 되지 않게 MarketPosition <= 0 조건 추가 if MarketPosition <= 0 and var1 > var2 and C > var3 and C > O and (C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then buy("매수"); #기존매도는 피라미딩이 되지 않게 MarketPosition >= 0 조건 추가 if MarketPosition >= 0 and var1 < var2 and C < var3 and C < O and (C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then sell("매도"); #피라미딩매수(매수상태이고 첫봉에서 동일조건이면 추가매수) if (time == 090000 or (time > 090000 and time[1] < 090000)) and MarketPosition == 1 and var1 > var2 and C > var3 and C > O and (C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then buy("bb"); #피라미딩매수(매도상태이고 첫봉에서 동일조건이면 추가매도) if (time == 090000 or (time > 090000 and time[-1] < 090000)) and MarketPosition == -1 and var1 > var2 and C > var3 and C > O and (C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then buy("ss"); } 즐거운 하루되세요 > 천왕봉 님이 쓴 글입니다. > 제목 : Re : Re : 개장전 신호는 무시하고 개장후 조건만 따져 신호발생 > 말씀하신데로 당일 청산을 설정하니까 국내선물은 당일 청산하고 개장후 조건이 맞으면 바로 신호가 나오는데 해외선물 항셍지수는 당일 청산이 안먹히고 전일 장의 마지막 신호와 동일한 방향일 경우 개장후에도 신호 발생이 안됩니다. 이 문제를 해결하기 위해 지난번에 개장하는 시간으로 작성해 주셨는데 이것 역시 위에서 질문드린 것 처럼 전일의 마지막 신호가 매도였고 당일 개장후 첫봉에서 양봉이 만들어졌다면 첫 봉에서 신호 발생이 안됩니다. 그렇다면 그 다음봉에서라도 조건이 맞으면 신호발생 해야 하는데 첫 봉을 제외한 나머지 봉에서는 조건을 만족해도 신호 발생이 안됩니다. 나머지 봉에서라도 조건을 만족하면 신호를 발생하는 수식을 만들수는 없을까요? 다른 방법으로라도 위 문제를 해결할 수만 있으면 됩니다. 위에서 작성해 주신 수식 당일에만 신호 발생이 되는거요.. 이것도 항셍 개장은 오전10시 15분이고 폐장은 날짜를 넘어 01시 00분에 하니까 자정넘어 신호가 발생하면 그 신호는 전일장의 신호 이지만 당일 신호에 해당되어 그데로 유지가 되니까 10시 15분에 개장하면 개장 전의 신호가 유지되어 당일에만 신호를 발생하려는 위 수식의 효과가 없습니다. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 개장전 신호는 무시하고 개장후 조건만 따져 신호발생 > 안녕하세요 예스스탁입니다. 수식으로 신호의 포지션을 무시하고 새로운 신호를 내게 할수는 없습니다. 방법은 당일청산을 추가하시거나 혹은 매일 당일에만 신호가 나오게 하는 방법뿐이 없습니다. 당일 청산은 사용자분이 설정하시면 되는 부분이므로 과거일에는 신호발생이 없고 항상 당일에만 발생하는 내용으로 올려드립니다. input : 기간(10),틱수(5); var1 = ma(c,5); var2 = ma(c,40); var3 = ma(C,60); var4 = (highest(H,기간)+lowest(L,기간))/2; if CurrentDate == sdate then{ #기존매수는 피라미딩이 되지 않게 MarketPosition <= 0 조건 추가 if MarketPosition <= 0 and var1 > var2 and C > var3 and C > O and (C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then buy("매수"); #기존매도는 피라미딩이 되지 않게 MarketPosition >= 0 조건 추가 if MarketPosition >= 0 and var1 < var2 and C < var3 and C < O and (C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then sell("매도"); #피라미딩매수(매수상태이고 첫봉에서 동일조건이면 추가매수) if (time == 090000 or (time > 090000 and time[1] < 090000)) and MarketPosition == 1 and var1 > var2 and C > var3 and C > O and (C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then buy("bb"); #피라미딩매수(매도상태이고 첫봉에서 동일조건이면 추가매도) if (time == 090000 or (time > 090000 and time[-1] < 090000)) and MarketPosition == -1 and var1 > var2 and C > var3 and C > O and (C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then buy("ss"); } 즐거운 하루되세요 > 천왕봉 님이 쓴 글입니다. > 제목 : 개장전 신호는 무시하고 개장후 조건만 따져 신호발생 > input : 기간(10),틱수(5); var1 = ma(c,5); var2 = ma(c,40); var3 = ma(C,60); var4 = (highest(H,기간)+lowest(L,기간))/2; #기존매수는 피라미딩이 되지 않게 MarketPosition <= 0 조건 추가 if MarketPosition <= 0 and var1 > var2 and C > var3 and C > O and (C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then buy("매수"); #기존매도는 피라미딩이 되지 않게 MarketPosition >= 0 조건 추가 if MarketPosition >= 0 and var1 < var2 and C < var3 and C < O and (C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then sell("매도"); #피라미딩매수(매수상태이고 첫봉에서 동일조건이면 추가매수) if (time == 090000 or (time > 090000 and time[1] < 090000)) and MarketPosition == 1 and var1 > var2 and C > var3 and C > O and (C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then buy("bb"); #피라미딩매수(매도상태이고 첫봉에서 동일조건이면 추가매도) if (time == 090000 or (time > 090000 and time[-1] < 090000)) and MarketPosition == -1 and var1 > var2 and C > var3 and C > O and (C >= var4+PriceScale*틱수 or C <= var4-PriceScale*틱수) Then buy("ss"); 어제의 마지막 신호와 동일한 방향일 경우 개장 후 첫 봉에서 추가 신호를 발생하는 국내선물 수식입니다. 그런데 어제의 마지막 신호가 매도였고 오늘 개장 후 첫봉이 양봉이었다면 신호가 발생하지 않습니다. 해결 방법으로 어제의 신호는 무시하고(마감 처리를 하고), 오늘 개장 이후 조건만을 따져 신호 발생 하도록 할 수는 없을까요? 어제의 신호 마감 처리는 날짜 기준으로 하지말고 개장 시간을 기준으로 해야합니다. 국내 선물이라면 9시 개장 이니까 9시 이전 신호에는 영향을 받지말고 9시 개장후 조건만을 따져 부합하면 신호 발생하는 수식이 필요합니다.