커뮤니티

기존시스템에 진입수정 신고저에 의한 진입조건

프로필 이미지
주꼬보이
2025-05-04 23:23:13
356
글번호 190571
답변완료

첨부 이미지

안녕 하세요 항상 감사합니다 많이도움받고 있읍니다 기존에 시스템도움받아 테스트기간동안 에러같은거는 발생하지않고 신호는 잘나와 주고있어요 주문관련 -+10틱정도제공되고 주문지연이나 시간정정은 있으나 미체결 시간경과에대한 자동취소는 제공되지않는게 아쉽습니다 그래서 죄송하지만 한번더 도움 받고자합니다 아래시스템 수식은 타주기 지표조합으로 진입시간청산시간 손익절이 들어간 시스템식입니다 {수정사항은 타분봉 데이타2,3 macd 0선이상이하 골든데드크로스 유지에서 신호일치는 기존과 동일합니다 데이터2,3 조건일치후 진입분봉 타점 수정부탁드립니다. *추가사항 신고가(N일) 신저가(N일) 지표에는 이름이 이렇게 나옵니다 분봉으로 추가해보았는데 파일처럼 추가는 돼네요 (예시)로 1분봉상 100봉 신고가 추가해보왔어요 타분봉 데이타2,3이 매도조건이면 *진입봉에서 N(20)봉 기간동안 신고가 신호가 발생하였다면 macd선 0선하향돌파시 매도진입 입니다. 매수조건은 반대입니다. 기존방식 진입분봉 macd 0선 상하향돌파진입에서 N(20)봉 기간동안 신고가,신저가 추가 *청산조건 스탑로스 도달하거나 타주기 분봉데이타2 or 3 0선상관없이 macd선과 시그널 골든데드크로스시 청산합니다 ----------------------------------------------- input : short(12),long(26),sig(9); input : 진입시작시간(230000),당일청산시간(020000),손절틱(100),감시틱(70),되돌림틱(20); var : S1(0),D1(0),TM(0),EP1(0),EP2(0),EP3(0); var : macdv(0,Data1),macds(0,Data1); var : macdv1(0,Data2),macds1(0,Data2); var : macdv2(0,Data3),macds2(0,Data3); macdv = data1(macd(short,long)); macds = data1(Ema(macdv,sig)); macdv1 = data2(macd(short,long)); macds1 = data2(Ema(macdv1,sig)); macdv2 = data3(macd(short,long)); macds2 = data3(Ema(macdv2,sig)); if sDate != sDate[1] Then SetStopEndofday(당일청산시간); if Bdate != Bdate[1] Then SetStopEndofday(0); var : Tcond(False),OO(0),HH(0),LL(0),CC(0); if (sdate != sDate[1] and sTime >= 당일청산시간) or (sdate == sDate[1] and sTime >= 당일청산시간 and sTime[1] < 당일청산시간) Then Tcond = false; if (sdate != sDate[1] and sTime >= 진입시작시간) or (sdate == sDate[1] and sTime >= 진입시작시간 and sTime[1] < 진입시작시간) Then Tcond = true; if Tcond == true Then { if MarketPosition <= 0 and CrossUp(MACDV,0) and MACDV1 > 0 and MACDV2 > 0 and macdv > macds and macdv1 > macds1 and macdv2 > macds2 Then Buy(); if MarketPosition >= 0 and CrossDown(MACDV,0) and MACDV1 < 0 and MACDV2 < 0 and macdv < macds and macdv1 < macds1 and macdv2 < macds2 Then Sell(); if MarketPosition == 1 and CrossDown(MACDV,0) Then ExitLong(); if MarketPosition == -1 and CrossUp(MACDV,0) Then ExitShort(); if MarketPosition == 1 Then { if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*감시틱 Then ExitLong("bx",AtStop,highest(H,BarsSinceEntry)-PriceScale*되돌림틱); } if MarketPosition == -1 Then { if lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*감시틱 Then ExitShort("sx",AtStop,lowest(L,BarsSinceEntry)+PriceScale*되돌림틱); } } SetStopLoss(PriceScale*손절틱,PointStop); *감사합니다
시스템
답변 2
프로필 이미지

예스스탁 예스스탁 답변

2025-05-07 17:02:51

안녕하세요 예스스탁입니다. input : short(12),long(26),sig(9),신고신저기간(100),최근N봉(20); input : 진입시작시간(230000),당일청산시간(020000),손절틱(100),감시틱(70),되돌림틱(20); var : S1(0),D1(0),TM(0),EP1(0),EP2(0),EP3(0); var : macdv(0,Data1),macds(0,Data1); var : macdv1(0,Data2),macds1(0,Data2); var : macdv2(0,Data3),macds2(0,Data3); var : NH(False,Data1),NL(False,Data1); macdv = data1(macd(short,long)); macds = data1(Ema(macdv,sig)); macdv1 = data2(macd(short,long)); macds1 = data2(Ema(macdv1,sig)); macdv2 = data3(macd(short,long)); macds2 = data3(Ema(macdv2,sig)); NH = Data1(CountIf(H > highest(H,신고신저기간)[1],최근N봉) >= 1); NL = Data1(countif(L < lowest(L,신고신저기간)[1],최근N봉) >= 1); if sDate != sDate[1] Then SetStopEndofday(당일청산시간); if Bdate != Bdate[1] Then SetStopEndofday(0); var : Tcond(False); if (sdate != sDate[1] and sTime >= 당일청산시간) or (sdate == sDate[1] and sTime >= 당일청산시간 and sTime[1] < 당일청산시간) Then Tcond = false; if (sdate != sDate[1] and sTime >= 진입시작시간) or (sdate == sDate[1] and sTime >= 진입시작시간 and sTime[1] < 진입시작시간) Then Tcond = true; if Tcond == true Then { if MarketPosition <= 0 and NL == true and CrossUp(MACDV,0) and MACDV1 > 0 and MACDV2 > 0 and macdv > macds and macdv1 > macds1 and macdv2 > macds2 Then Buy(); if MarketPosition >= 0 and NH == true and CrossDown(MACDV,0) and MACDV1 < 0 and MACDV2 < 0 and macdv < macds and macdv1 < macds1 and macdv2 < macds2 Then Sell(); if MarketPosition == 1 and CrossDown(MACDV,0) Then ExitLong(); if MarketPosition == -1 and CrossUp(MACDV,0) Then ExitShort(); if MarketPosition == 1 Then { if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*감시틱 Then ExitLong("bx",AtStop,highest(H,BarsSinceEntry)-PriceScale*되돌림틱); } if MarketPosition == -1 Then { if lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*감시틱 Then ExitShort("sx",AtStop,lowest(L,BarsSinceEntry)+PriceScale*되돌림틱); } } SetStopLoss(PriceScale*손절틱,PointStop); 즐거운 하루되세요 > 주꼬보이 님이 쓴 글입니다. > 제목 : 기존시스템에 진입수정 신고저에 의한 진입조건 > 안녕 하세요 항상 감사합니다 많이도움받고 있읍니다 기존에 시스템도움받아 테스트기간동안 에러같은거는 발생하지않고 신호는 잘나와 주고있어요 주문관련 -+10틱정도제공되고 주문지연이나 시간정정은 있으나 미체결 시간경과에대한 자동취소는 제공되지않는게 아쉽습니다 그래서 죄송하지만 한번더 도움 받고자합니다 아래시스템 수식은 타주기 지표조합으로 진입시간청산시간 손익절이 들어간 시스템식입니다 {수정사항은 타분봉 데이타2,3 macd 0선이상이하 골든데드크로스 유지에서 신호일치는 기존과 동일합니다 데이터2,3 조건일치후 진입분봉 타점 수정부탁드립니다. *추가사항 신고가(N일) 신저가(N일) 지표에는 이름이 이렇게 나옵니다 분봉으로 추가해보았는데 파일처럼 추가는 돼네요 (예시)로 1분봉상 100봉 신고가 추가해보왔어요 타분봉 데이타2,3이 매도조건이면 *진입봉에서 N(20)봉 기간동안 신고가 신호가 발생하였다면 macd선 0선하향돌파시 매도진입 입니다. 매수조건은 반대입니다. 기존방식 진입분봉 macd 0선 상하향돌파진입에서 N(20)봉 기간동안 신고가,신저가 추가 *청산조건 스탑로스 도달하거나 타주기 분봉데이타2 or 3 0선상관없이 macd선과 시그널 골든데드크로스시 청산합니다 ----------------------------------------------- input : short(12),long(26),sig(9); input : 진입시작시간(230000),당일청산시간(020000),손절틱(100),감시틱(70),되돌림틱(20); var : S1(0),D1(0),TM(0),EP1(0),EP2(0),EP3(0); var : macdv(0,Data1),macds(0,Data1); var : macdv1(0,Data2),macds1(0,Data2); var : macdv2(0,Data3),macds2(0,Data3); macdv = data1(macd(short,long)); macds = data1(Ema(macdv,sig)); macdv1 = data2(macd(short,long)); macds1 = data2(Ema(macdv1,sig)); macdv2 = data3(macd(short,long)); macds2 = data3(Ema(macdv2,sig)); if sDate != sDate[1] Then SetStopEndofday(당일청산시간); if Bdate != Bdate[1] Then SetStopEndofday(0); var : Tcond(False),OO(0),HH(0),LL(0),CC(0); if (sdate != sDate[1] and sTime >= 당일청산시간) or (sdate == sDate[1] and sTime >= 당일청산시간 and sTime[1] < 당일청산시간) Then Tcond = false; if (sdate != sDate[1] and sTime >= 진입시작시간) or (sdate == sDate[1] and sTime >= 진입시작시간 and sTime[1] < 진입시작시간) Then Tcond = true; if Tcond == true Then { if MarketPosition <= 0 and CrossUp(MACDV,0) and MACDV1 > 0 and MACDV2 > 0 and macdv > macds and macdv1 > macds1 and macdv2 > macds2 Then Buy(); if MarketPosition >= 0 and CrossDown(MACDV,0) and MACDV1 < 0 and MACDV2 < 0 and macdv < macds and macdv1 < macds1 and macdv2 < macds2 Then Sell(); if MarketPosition == 1 and CrossDown(MACDV,0) Then ExitLong(); if MarketPosition == -1 and CrossUp(MACDV,0) Then ExitShort(); if MarketPosition == 1 Then { if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*감시틱 Then ExitLong("bx",AtStop,highest(H,BarsSinceEntry)-PriceScale*되돌림틱); } if MarketPosition == -1 Then { if lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*감시틱 Then ExitShort("sx",AtStop,lowest(L,BarsSinceEntry)+PriceScale*되돌림틱); } } SetStopLoss(PriceScale*손절틱,PointStop); *감사합니다
프로필 이미지

주꼬보이

2025-05-07 18:26:28

주꼬보이 님에 의해 삭제된 답변입니다.