커뮤니티

수식작성

프로필 이미지
푸른
2021-06-02 07:02:33
1683
글번호 149527
답변완료

첨부 이미지

input : StartTime(70000),EndTime(55000),Xtime(55500); var : Tcond(false),entry(0); var : B1(0),B2(0),BX1(0),BX2(0); var : S1(0),S2(0),SX1(0),SX2(0); if sdate != sDate[1] Then SetStopEndofday(Xtime); if (sdate != sdate[1] and stime >= EndTime) or (sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then Tcond = False; if (sdate != sdate[1] and stime >= StartTime) or (sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then { Tcond = true; SetStopEndofday(0); entry = 0; } if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or (MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then entry = entry+1; B1 = DayLow(1)+(DayHigh(1)-DayLow(1))*-0.236; B2 = DayLow(1)+(DayHigh(1)-DayLow(1))*-0.382; BX1 = DayLow(1)+(DayHigh(1)-DayLow(1))*0.990; BX2 = DayHigh(1); S1 = DayHigh(1)+(DayHigh(1)-DayLow(1))*-0.236; S2 = DayHigh(1)+(DayHigh(1)-DayLow(1))*-0.382; SX1 = DayLow(1)+(DayHigh(1)-DayLow(1))*0.000; SX2 = DayHigh(1); if Tcond == true Then { if (MarketPosition == 0 or (MarketPosition == 1 and MaxEntries == 1)) Then { if entry < 5 and L > B1 Then Buy("b1",AtLimit,B1); if entry < 5 and L > B2 Then Buy("b2",AtLimit,B2); } if MarketPosition == 1 Then { ExitLong("bx1",AtLimit,BX1,"B1"); ExitLong("bx2",AtLimit,BX2,"B2"); } if (MarketPosition == 0 or (MarketPosition == -1 and MaxEntries == 1)) Then { if entry < 5 and H < S1 Then Sell("S1",AtLimit,S1); if entry < 5 and H < S2 Then Sell("S2",AtLimit,S2); } if MarketPosition == -1 Then { ExitShort("sx1",AtLimit,SX1,"S1"); ExitShort("sx2",AtLimit,SX2,"S2"); } } SetStopProfittarget(PriceScale*150,PointStop); SetStopLoss(PriceScale*25,PointStop); ------------------------ s2 신호후 청산이 s1 처럼 나오질 않아서 질문 드립니다. 그리고 buy 진입후 청산 1회 , sell 진입후 청산 1회로 수식어 변경 부탁드립니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2021-06-02 14:36:09

안녕하세요 예스스탁입니다. 1 S1 = DayHigh(1)+(DayHigh(1)-DayLow(1))*-0.236; S2 = DayHigh(1)+(DayHigh(1)-DayLow(1))*-0.382; SX1 = DayLow(1)+(DayHigh(1)-DayLow(1))*0.000; SX2 = Dayhigh(1); S1은 SX1가격에 청산되고 S2는 SX2가격에 청산이 됩니다 작성하신 식에서 SX1은 계산상 전일저가입니다. SX2는 전일고가입니다. 전일고가 이하에서 진입하는 s2진입후 바로 청산이 나오게 됩니다. 가격이 상승해 전일고가에 도달하면 청산하기 위해서는 SX2청산의 신호타입이 atstop으로 변경되어야 합니다. exitshort에서 atlimit은 지정가격이하이면 청산이 발생하게 됩니다. 랭귀지도움말에서 각 신호타입에 대한 설명참고하시기 바랍니다. 2 청산하수에서 진입명을 제거하면 청산시 모든 수량 청산됩니다. 진입명이 지정되면 지정한 이름의 신호만 청산됩니다. 3 input : StartTime(70000),EndTime(55000),Xtime(55500); var : Tcond(false),entry(0); var : B1(0),B2(0),BX1(0),BX2(0); var : S1(0),S2(0),SX1(0),SX2(0); if sdate != sDate[1] Then SetStopEndofday(Xtime); if (sdate != sdate[1] and stime >= EndTime) or (sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then Tcond = False; if (sdate != sdate[1] and stime >= StartTime) or (sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then { Tcond = true; SetStopEndofday(0); entry = 0; } if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or (MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then entry = entry+1; B1 = DayLow(1)+(DayHigh(1)-DayLow(1))*-0.236; B2 = DayLow(1)+(DayHigh(1)-DayLow(1))*-0.382; BX1 = DayLow(1)+(DayHigh(1)-DayLow(1))*0.990; BX2 = DayHigh(1); S1 = DayHigh(1)+(DayHigh(1)-DayLow(1))*-0.236; S2 = DayHigh(1)+(DayHigh(1)-DayLow(1))*-0.382; SX1 = DayLow(1)+(DayHigh(1)-DayLow(1))*0.000; SX2 = DayHigh(1); if Tcond == true Then { if (MarketPosition == 0 or (MarketPosition == 1 and MaxEntries == 1)) Then { if entry < 5 and L > B1 Then Buy("b1",AtLimit,B1); if entry < 5 and L > B2 Then Buy("b2",AtLimit,B2); } if MarketPosition == 1 Then { ExitLong("bx1",AtLimit,BX1); ExitLong("bx2",AtLimit,BX2); } if (MarketPosition == 0 or (MarketPosition == -1 and MaxEntries == 1)) Then { if entry < 5 and H < S1 Then Sell("S1",AtLimit,S1); if entry < 5 and H < S2 Then Sell("S2",AtLimit,S2); } if MarketPosition == -1 Then { ExitShort("sx1",AtLimit,SX1); ExitShort("sx2",AtStop,SX2); } } SetStopProfittarget(PriceScale*150,PointStop); SetStopLoss(PriceScale*25,PointStop); 즐거운 하루되세요 > 푸른 님이 쓴 글입니다. > 제목 : 수식작성 > input : StartTime(70000),EndTime(55000),Xtime(55500); var : Tcond(false),entry(0); var : B1(0),B2(0),BX1(0),BX2(0); var : S1(0),S2(0),SX1(0),SX2(0); if sdate != sDate[1] Then SetStopEndofday(Xtime); if (sdate != sdate[1] and stime >= EndTime) or (sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then Tcond = False; if (sdate != sdate[1] and stime >= StartTime) or (sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then { Tcond = true; SetStopEndofday(0); entry = 0; } if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) or (MarketPosition == MarketPosition[1] and TotalTrades > TotalTrades[1]) Then entry = entry+1; B1 = DayLow(1)+(DayHigh(1)-DayLow(1))*-0.236; B2 = DayLow(1)+(DayHigh(1)-DayLow(1))*-0.382; BX1 = DayLow(1)+(DayHigh(1)-DayLow(1))*0.990; BX2 = DayHigh(1); S1 = DayHigh(1)+(DayHigh(1)-DayLow(1))*-0.236; S2 = DayHigh(1)+(DayHigh(1)-DayLow(1))*-0.382; SX1 = DayLow(1)+(DayHigh(1)-DayLow(1))*0.000; SX2 = DayHigh(1); if Tcond == true Then { if (MarketPosition == 0 or (MarketPosition == 1 and MaxEntries == 1)) Then { if entry < 5 and L > B1 Then Buy("b1",AtLimit,B1); if entry < 5 and L > B2 Then Buy("b2",AtLimit,B2); } if MarketPosition == 1 Then { ExitLong("bx1",AtLimit,BX1,"B1"); ExitLong("bx2",AtLimit,BX2,"B2"); } if (MarketPosition == 0 or (MarketPosition == -1 and MaxEntries == 1)) Then { if entry < 5 and H < S1 Then Sell("S1",AtLimit,S1); if entry < 5 and H < S2 Then Sell("S2",AtLimit,S2); } if MarketPosition == -1 Then { ExitShort("sx1",AtLimit,SX1,"S1"); ExitShort("sx2",AtLimit,SX2,"S2"); } } SetStopProfittarget(PriceScale*150,PointStop); SetStopLoss(PriceScale*25,PointStop); ------------------------ s2 신호후 청산이 s1 처럼 나오질 않아서 질문 드립니다. 그리고 buy 진입후 청산 1회 , sell 진입후 청산 1회로 수식어 변경 부탁드립니다.