커뮤니티

문의드립니다.

프로필 이미지
잡다백수
2019-05-21 12:14:50
288
글번호 128832
답변완료

첨부 이미지

도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다. 이건 그 시간까지 당일 고가, 저가 뚫으면 매수나 매도하는 진입식인데요. 이걸 LongFlag 나 CrossUp이 True가 됐을 때 고가를 저장하고 거기서 n틱 하락했을 때 Atstop(Atlimit으로 해야 하나요? 눌림매매인데)으로 매수 진입하려면 어떻게 해야 하나요? 매도는 반대로요. 감사합니다. Inputs: InitMin(90); Variables: SessStartMin(0), TradeTime(0), SetHigh(0), SetLow(0), LongFlag(False), ShortFlag(False); #conversion of hour-based time to minute-based time SessStartMin = TimeToMinutes(90000); TradeTime = TimeToMinutes(sTime); input : 진입횟수(1), 손절률(1), 익절률(1) ; var : count(0),T1(0); input : 진입시간(90000),제한시간(150000),청산시간(153400); var : Tcond(false); SetStopLoss(손절률,PercentStop); SetStopProfittarget(익절률,PercentStop); if stime == 청산시간 or (stime > 청산시간 and stime < 청산시간) Then{ Tcond = false; if MarketPosition == 1 Then exitlong(); if MarketPosition == -1 Then ExitShort(); } if (sdate != sdate[1] and stime >= 진입시간) or (sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간) then { Tcond = true; T1 = TotalTrades; } if (sdate != sdate[1] and stime >= 제한시간) or (sdate == sdate[1] and stime >= 제한시간 and stime[1] < 제한시간) then { Tcond = false; } if MarketPosition == 0 Then count = TotalTrades-T1; Else count = TotalTrades-T1+1; if Count < 진입횟수 and Tcond == true then { #Setup - establishment of the initial range If TradeTime <= SessStartMin + InitMin Then Begin If Date <> Date[1] Then Begin SetHigh = High; SetLow = Low; LongFlag = True; ShortFlag = True; End Else Begin If High > SetHigh Then SetHigh = High; If Low < SetLow Then SetLow = Low; End; End Else Begin #Entries once the initial period has ended If LongFlag AND CrossUp( Close , SetHigh) Then Buy(); If ShortFlag AND CrossDown(Close , SetLow) Then Sell(); End; } 2. 피라미딩 진입을요. 저렇게 B가 된 지점에서 -ATRV * 2 지점이 되면 추가 매수하게하는 방식을 쓸 때요. 저게 더 떨어지면 또 진입을 하게 될 것 같은데 bb가 나왔으면 또 BB가 나오지는 않게 하는 방법이 있나요? 그러다가 또 고가를 돌파하면 그 가격을 세팅하고(여기선 또 매수 안하고) 거기서 -ATR*2 지점이 되는 지점에서 추가매수. 이렇게 할 수 있나요? 그러다 마지막 고가 돌파 지점에서 ATR * 5되면 전체 포지션 청산하구요.
시스템
답변 2
프로필 이미지

예스스탁 예스스탁 답변

2019-05-21 14:45:16

안녕하세요 예스스탁입니다. 1 Inputs: InitMin(90); Variables: SessStartMin(0), TradeTime(0), SetHigh(0), SetLow(0), LongFlag(False), ShortFlag(False); #conversion of hour-based time to minute-based time SessStartMin = TimeToMinutes(90000); TradeTime = TimeToMinutes(sTime); input : 진입횟수(1),손절률(1),익절률(1),N(5); var : count(0),T1(0); input : 진입시간(90000),제한시간(150000),청산시간(153400); var : Tcond(false),T(0),EP(0); SetStopLoss(손절률,PercentStop); SetStopProfittarget(익절률,PercentStop); if stime == 청산시간 or (stime > 청산시간 and stime < 청산시간) Then{ Tcond = false; if MarketPosition == 1 Then exitlong(); if MarketPosition == -1 Then ExitShort(); } if (sdate != sdate[1] and stime >= 진입시간) or (sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간) then { Tcond = true; T1 = TotalTrades; } if (sdate != sdate[1] and stime >= 제한시간) or (sdate == sdate[1] and stime >= 제한시간 and stime[1] < 제한시간) then { Tcond = false; } if MarketPosition == 0 Then count = TotalTrades-T1; Else count = TotalTrades-T1+1; if Count < 진입횟수 and Tcond == true then { #Setup - establishment of the initial range If TradeTime <= SessStartMin + InitMin Then { If Date <> Date[1] Then { T = 0; SetHigh = High; SetLow = Low; LongFlag = True; ShortFlag = True; } Else { If High > SetHigh Then SetHigh = High; If Low < SetLow Then SetLow = Low; } } Else { #Entries once the initial period has ended If LongFlag AND CrossUp( Close , SetHigh) Then { T = 1; EP = H; } If ShortFlag AND CrossDown(Close , SetLow) Then { T = -1; EP = L; } if T == 1 Then buy("b",atlimit,EP-PriceScale*n); if T == -1 Then sell("s",atlimit,EP+PriceScale*n); } } 2 진입과 진입사이의 최고가를 체크하고 이전 진입간의 최고가보다 클때만 추가진입하게 하시면 될것 같습니다. 첫번째 추가진입은 첫진입부터 현재까지의 최고가입니다. var : atrv(0),HH(0),H1(0); atrv = atr(14); if MarketPosition == 1 Then { if CurrentContracts > CurrentContracts[1] Then { HH = H; H1 = HH[1]; } if H > HH Then HH = H; if MaxEntries == 1 or (MaxEntries >= 2 and HH > H1) Then buy("bb",atlimit,HH-atrv*2); exitlong("bx",AtStop,HH-atrv*5); } 즐거운 하루되세요 > 잡다백수 님이 쓴 글입니다. > 제목 : 문의드립니다. > 도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다. 이건 그 시간까지 당일 고가, 저가 뚫으면 매수나 매도하는 진입식인데요. 이걸 LongFlag 나 CrossUp이 True가 됐을 때 고가를 저장하고 거기서 n틱 하락했을 때 Atstop(Atlimit으로 해야 하나요? 눌림매매인데)으로 매수 진입하려면 어떻게 해야 하나요? 매도는 반대로요. 감사합니다. Inputs: InitMin(90); Variables: SessStartMin(0), TradeTime(0), SetHigh(0), SetLow(0), LongFlag(False), ShortFlag(False); #conversion of hour-based time to minute-based time SessStartMin = TimeToMinutes(90000); TradeTime = TimeToMinutes(sTime); input : 진입횟수(1), 손절률(1), 익절률(1) ; var : count(0),T1(0); input : 진입시간(90000),제한시간(150000),청산시간(153400); var : Tcond(false); SetStopLoss(손절률,PercentStop); SetStopProfittarget(익절률,PercentStop); if stime == 청산시간 or (stime > 청산시간 and stime < 청산시간) Then{ Tcond = false; if MarketPosition == 1 Then exitlong(); if MarketPosition == -1 Then ExitShort(); } if (sdate != sdate[1] and stime >= 진입시간) or (sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간) then { Tcond = true; T1 = TotalTrades; } if (sdate != sdate[1] and stime >= 제한시간) or (sdate == sdate[1] and stime >= 제한시간 and stime[1] < 제한시간) then { Tcond = false; } if MarketPosition == 0 Then count = TotalTrades-T1; Else count = TotalTrades-T1+1; if Count < 진입횟수 and Tcond == true then { #Setup - establishment of the initial range If TradeTime <= SessStartMin + InitMin Then Begin If Date <> Date[1] Then Begin SetHigh = High; SetLow = Low; LongFlag = True; ShortFlag = True; End Else Begin If High > SetHigh Then SetHigh = High; If Low < SetLow Then SetLow = Low; End; End Else Begin #Entries once the initial period has ended If LongFlag AND CrossUp( Close , SetHigh) Then Buy(); If ShortFlag AND CrossDown(Close , SetLow) Then Sell(); End; } 2. 피라미딩 진입을요. 저렇게 B가 된 지점에서 -ATRV * 2 지점이 되면 추가 매수하게하는 방식을 쓸 때요. 저게 더 떨어지면 또 진입을 하게 될 것 같은데 bb가 나왔으면 또 BB가 나오지는 않게 하는 방법이 있나요? 그러다가 또 고가를 돌파하면 그 가격을 세팅하고(여기선 또 매수 안하고) 거기서 -ATR*2 지점이 되는 지점에서 추가매수. 이렇게 할 수 있나요? 그러다 마지막 고가 돌파 지점에서 ATR * 5되면 전체 포지션 청산하구요.
프로필 이미지

잡다백수

2019-05-21 18:14:07

코딩 감사합니다. 2번 수식 수정한 건데요. 질문할 때는 생각 못했었는데, 돌려보니 고가 돌파할 때마다 세팅하고 진입하니 추가진입을 매우 자주 하는 것 같더라구요. 이거를 추가진입할 때는 최근 진입 가격 + ATRV * 추가진입세팅(외부변수) 까지 가격이 올랐을때만 아래 눌림 진입이 들어가도록 하려면 어떻게 고쳐야 하나요. 그러니까 b 지점에서 ATRV * 추가진입세팅 만큼 가격이 오른 뒤 고가에서 - ATRV * 물타기ATR인 지점에서 추가 진입하고 거기서 또 가격이 + ATRV * 추가진입세팅 만큼 오르면 그 고가에서 -ATRV * 추가진입세팅인 때 추가진입하는 식으로 고치고 싶습니다. 감사합니다. input: 물타기ATR(2), 손절ATR(5), 시간(100000) ; var : atrv(0),HH(0),H1(0); atrv = atr(4); input : entryCount(1); var : count(0) ; #진입회수제한 Count = 0 ; for Value1 = 0 to 10 { if EntryDate( Value1 ) == sdate then Count = Count + 1; } if Count < entryCount then { if stime >= 시간 and C > DayOpen then buy("b",OnClose); } if MarketPosition == 1 Then { if CurrentContracts > CurrentContracts[1] Then { HH = H; H1 = HH[1]; } if H > HH Then HH = H; if MaxEntries == 1 or (MaxEntries >= 2 and HH > H1) Then buy("bb",atlimit,HH-atrv*물타기ATR); exitlong("bx",AtStop,HH-atrv*손절ATR); } > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 문의드립니다. > 안녕하세요 예스스탁입니다. 1 Inputs: InitMin(90); Variables: SessStartMin(0), TradeTime(0), SetHigh(0), SetLow(0), LongFlag(False), ShortFlag(False); #conversion of hour-based time to minute-based time SessStartMin = TimeToMinutes(90000); TradeTime = TimeToMinutes(sTime); input : 진입횟수(1),손절률(1),익절률(1),N(5); var : count(0),T1(0); input : 진입시간(90000),제한시간(150000),청산시간(153400); var : Tcond(false),T(0),EP(0); SetStopLoss(손절률,PercentStop); SetStopProfittarget(익절률,PercentStop); if stime == 청산시간 or (stime > 청산시간 and stime < 청산시간) Then{ Tcond = false; if MarketPosition == 1 Then exitlong(); if MarketPosition == -1 Then ExitShort(); } if (sdate != sdate[1] and stime >= 진입시간) or (sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간) then { Tcond = true; T1 = TotalTrades; } if (sdate != sdate[1] and stime >= 제한시간) or (sdate == sdate[1] and stime >= 제한시간 and stime[1] < 제한시간) then { Tcond = false; } if MarketPosition == 0 Then count = TotalTrades-T1; Else count = TotalTrades-T1+1; if Count < 진입횟수 and Tcond == true then { #Setup - establishment of the initial range If TradeTime <= SessStartMin + InitMin Then { If Date <> Date[1] Then { T = 0; SetHigh = High; SetLow = Low; LongFlag = True; ShortFlag = True; } Else { If High > SetHigh Then SetHigh = High; If Low < SetLow Then SetLow = Low; } } Else { #Entries once the initial period has ended If LongFlag AND CrossUp( Close , SetHigh) Then { T = 1; EP = H; } If ShortFlag AND CrossDown(Close , SetLow) Then { T = -1; EP = L; } if T == 1 Then buy("b",atlimit,EP-PriceScale*n); if T == -1 Then sell("s",atlimit,EP+PriceScale*n); } } 2 진입과 진입사이의 최고가를 체크하고 이전 진입간의 최고가보다 클때만 추가진입하게 하시면 될것 같습니다. 첫번째 추가진입은 첫진입부터 현재까지의 최고가입니다. var : atrv(0),HH(0),H1(0); atrv = atr(14); if MarketPosition == 1 Then { if CurrentContracts > CurrentContracts[1] Then { HH = H; H1 = HH[1]; } if H > HH Then HH = H; if MaxEntries == 1 or (MaxEntries >= 2 and HH > H1) Then buy("bb",atlimit,HH-atrv*2); exitlong("bx",AtStop,HH-atrv*5); } 즐거운 하루되세요 > 잡다백수 님이 쓴 글입니다. > 제목 : 문의드립니다. > 도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다. 이건 그 시간까지 당일 고가, 저가 뚫으면 매수나 매도하는 진입식인데요. 이걸 LongFlag 나 CrossUp이 True가 됐을 때 고가를 저장하고 거기서 n틱 하락했을 때 Atstop(Atlimit으로 해야 하나요? 눌림매매인데)으로 매수 진입하려면 어떻게 해야 하나요? 매도는 반대로요. 감사합니다. Inputs: InitMin(90); Variables: SessStartMin(0), TradeTime(0), SetHigh(0), SetLow(0), LongFlag(False), ShortFlag(False); #conversion of hour-based time to minute-based time SessStartMin = TimeToMinutes(90000); TradeTime = TimeToMinutes(sTime); input : 진입횟수(1), 손절률(1), 익절률(1) ; var : count(0),T1(0); input : 진입시간(90000),제한시간(150000),청산시간(153400); var : Tcond(false); SetStopLoss(손절률,PercentStop); SetStopProfittarget(익절률,PercentStop); if stime == 청산시간 or (stime > 청산시간 and stime < 청산시간) Then{ Tcond = false; if MarketPosition == 1 Then exitlong(); if MarketPosition == -1 Then ExitShort(); } if (sdate != sdate[1] and stime >= 진입시간) or (sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간) then { Tcond = true; T1 = TotalTrades; } if (sdate != sdate[1] and stime >= 제한시간) or (sdate == sdate[1] and stime >= 제한시간 and stime[1] < 제한시간) then { Tcond = false; } if MarketPosition == 0 Then count = TotalTrades-T1; Else count = TotalTrades-T1+1; if Count < 진입횟수 and Tcond == true then { #Setup - establishment of the initial range If TradeTime <= SessStartMin + InitMin Then Begin If Date <> Date[1] Then Begin SetHigh = High; SetLow = Low; LongFlag = True; ShortFlag = True; End Else Begin If High > SetHigh Then SetHigh = High; If Low < SetLow Then SetLow = Low; End; End Else Begin #Entries once the initial period has ended If LongFlag AND CrossUp( Close , SetHigh) Then Buy(); If ShortFlag AND CrossDown(Close , SetLow) Then Sell(); End; } 2. 피라미딩 진입을요. 저렇게 B가 된 지점에서 -ATRV * 2 지점이 되면 추가 매수하게하는 방식을 쓸 때요. 저게 더 떨어지면 또 진입을 하게 될 것 같은데 bb가 나왔으면 또 BB가 나오지는 않게 하는 방법이 있나요? 그러다가 또 고가를 돌파하면 그 가격을 세팅하고(여기선 또 매수 안하고) 거기서 -ATR*2 지점이 되는 지점에서 추가매수. 이렇게 할 수 있나요? 그러다 마지막 고가 돌파 지점에서 ATR * 5되면 전체 포지션 청산하구요.