커뮤니티

시스템식 부탁드립니다.

프로필 이미지
양치기
2024-01-18 02:26:14
781
글번호 175851
답변완료
항상 도움 주셔서 감사합니다. 종목 : 해외선물 차트 : 1시간봉 아래의 조건에 맞는 시스템식 부탁드립니다. //----------------------------------------------------------------------- 요청식1) 매수/매도 : 외부입력변수로 설정 매수진입 이후 가격이 처음진입 가격 아래로 떨어지지 않고 상승하면 처음 진입한 1계약만 유지하고 매수진입 계약수량이 1계약이면 포지션 수익이 20$ 이상 이면 청산하고 싶습니다. 단, 어느정도 상승 후 하락시 트레일링 스탑을 적용하고 싶습니다. (10$ 이상 상승 후 5$ 하락시 청산) 매수진입 이후 가격이 처음진입 가격 아래로 하락하면 일정 간격(20$)으로 1계약씩 추가 매수 합니다.(물타기) 가격이 하락하여 물타기 진입한 경우도 전체 포지션수익이 20$ 이상이면 전체청산하고 싶습니다. 단, 가격이 계속 하락하여 10계약(또는 진입횟수10회이상) 이상 물타기 진입이 필요한 경우 가격이 하락하여 추가로 진입 할때마다 처음 진입한 계약부터 1계약씩 손절(20$) 하고 싶습니다. (1계약씩 추가 진입하고 1계약씩 손절하기 때문에 계약수는 10계약씩 유지되다가, 가격이 상승하면 전체 포지션 수익이 20$ 이상 수익이 나면 전체를 청산합니다.) 진입간격 20$는 처음 진입가격을 기준으로 작성 부탁드립니다. //-------------------------------------------------------------------------- 요청식2) 매수/매도 : 외부입력변수로 설정 매수진입 이후 가격이 처음진입 가격 아래로 떨어지지 않고 상승하면 처음 진입한 1계약만 유지하고 매수진입 계약수량이 1계약이면 포지션 수익이 20$ 이상이면 전체 청산하고 싶습니다. 단, 어느정도 상승 후 하락시 트레일링 스탑을 적용하고 싶습니다. (10$ 이상 상승 후 5$ 하락시 청산) 매수진입 이후 가격이 처음진입 가격 아래로 하락하면 일정 간격(20$)으로 1계약씩 추가 매수 합니다.(물타기) 가격이 하락하여 물타기 진입한 경우도 전체 포지션수익이 20$ 이상이면 전체 청산하고 싶습니다. 단, 물타기 진입의 경우 가격이 10$ 정도 상승하면 마지막 진입한 계약만 익절하고 싶습니다. 그리고 다시 가격이 20$ 하락하면 추가로 1계약 물타기 진입합니다. (가격이 10$ 정도 반등이 나오면 익절하며, 이후 가격이 20$ 하락하면 추가 매수 진입-반복) 위와 같이 청산할 경우 마지막 진입 가격을 체크하기 힘들기 때문에 현재 남아있는 계약들의 평균가격을 기준으로 20$ 하락시 추가 진입하는 방법으로 작성 부탁드립니다. 감사합니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2024-01-18 15:22:55

안녕하세요 예스스탁입니다. 1 input : 매수매도(1);#매수1, 매도-1 input : 추가진입(20),최대누적진입(10),전체익절(20),최소수익(10),트레일링(5); var : BE(0),SE(0); var1 = (추가진입/PointValue)*PriceScale; Var2 = (전체익절/PointValue)*PriceScale; Var3 = (최소수익/PointValue)*PriceScale; Var4 = (트레일링/PointValue)*PriceScale; if MarketPosition == 0 and TotalTrades == TotalTrades[1] and 첫매수진입조건 Then Buy("b",OnClose,Def,1); if MarketPosition == 1 Then { if CurrentContracts > CurrentContracts[1] Then BE = BE+1; Buy("bb",AtLimit,EntryPrice(0)-(var1*BE),1); if MaxEntries == 1 and highest(H,BarsSinceEntry) >= EntryPrice+Var3 Then ExitLong("btr",AtStop,highest(H,BarsSinceEntry)-Var4); if MaxEntries >= 최대누적진입 Then { ExitLong("bx",AtStop,EntryPrice(0)-(var1*BE),"",1,1); } ExitLong("Bp",AtLimit,AvgEntryPrice+Var2); } Else BE = 0; if MarketPosition == 0 and TotalTrades == TotalTrades[1] and 첫매도진입조건 Then Sell("s",OnClose,Def,1); if MarketPosition == -1 Then { if CurrentContracts > CurrentContracts[1] Then SE = SE+1; Sell("ss",AtLimit,EntryPrice(0)+(var1*SE),1); if MaxEntries == 1 and lowest(L,BarsSinceEntry) <= EntryPrice-Var3 Then ExitShort("str",AtStop,lowest(L,BarsSinceEntry)+Var4); if MaxEntries >= 최대누적진입 Then { ExitShort("sx",AtStop,EntryPrice(0)+(var1*SE),"",1,1); } ExitShort("Sp",AtLimit,AvgEntryPrice-Var2); } Else SE = 0; 2 10$ 정도 상승하면 마지막 진입한 계약만 익절 위 내용은 마지막진입가격에서 10$ 상승하면 1계약 익절청산으로 작성해 드립니다. 마지막 진입을 청산하기 위해서는 진입명을 지정해야 하는데 현재 하나의 함수로 추가진입이 됩니다. 해당 진입명을 지정하면 해당 진입으로 들어간 모든 추가진입이 청산됩니다, 내용상 각 추가진입별로 이름을 부여하기 어려워 1계약 청산으로 작성해 드립니다. input : 매수매도(1);#매수1, 매도-1 input : 추가진입(20),최대누적진입(10),전체익절(20),최소수익(10),트레일링(5),익절(10); var : BE(0),SE(0),S(0); var1 = (추가진입/PointValue)*PriceScale; Var2 = (전체익절/PointValue)*PriceScale; Var3 = (최소수익/PointValue)*PriceScale; Var4 = (트레일링/PointValue)*PriceScale; Var5 = (익절/PointValue)*PriceScale; if MarketPosition == 0 and TotalTrades == TotalTrades[1] and 첫매수진입조건 Then Buy("b",OnClose,Def,1); if MarketPosition == 1 Then { if CurrentContracts > CurrentContracts[1] Then { S = 1; BE = LatestEntryPrice(0); } if CurrentContracts < CurrentContracts[1] Then { S = -1; BE = LatestExitPrice(0); } Buy("bb",AtLimit,BE-var1,1); if MaxEntries == 1 and highest(H,BarsSinceEntry) >= EntryPrice+Var3 Then ExitLong("btr",AtStop,highest(H,BarsSinceEntry)-Var4); if S == 1 and MaxEntries >= 2 Then ExitLong("bp1",AtLimit,BE+Var5,"",1,1); ExitLong("Bp",AtLimit,AvgEntryPrice+Var2); } if MarketPosition == 0 and TotalTrades == TotalTrades[1] and 첫매도진입조건 Then Sell("s",OnClose,Def,1); if MarketPosition == 1 Then { if CurrentContracts > CurrentContracts[1] Then { S = 1; SE = LatestEntryPrice(0); } if CurrentContracts < CurrentContracts[1] Then { S = -1; SE = LatestExitPrice(0); } Sell("ss",AtLimit,SE+var1,1); if MaxEntries == 1 and lowest(L,BarsSinceEntry) <= EntryPrice-Var3 Then ExitShort("str",AtStop,lowest(L,BarsSinceEntry)+Var4); if S == 1 and MaxEntries >= 2 Then ExitShort("sp1",AtLimit,BE-var5,"",1,1); ExitShort("Sp",AtLimit,AvgEntryPrice-Var2); } 즐거운 하루되세요 > 양치기 님이 쓴 글입니다. > 제목 : 시스템식 부탁드립니다. > 항상 도움 주셔서 감사합니다. 종목 : 해외선물 차트 : 1시간봉 아래의 조건에 맞는 시스템식 부탁드립니다. //----------------------------------------------------------------------- 요청식1) 매수/매도 : 외부입력변수로 설정 매수진입 이후 가격이 처음진입 가격 아래로 떨어지지 않고 상승하면 처음 진입한 1계약만 유지하고 매수진입 계약수량이 1계약이면 포지션 수익이 20$ 이상 이면 청산하고 싶습니다. 단, 어느정도 상승 후 하락시 트레일링 스탑을 적용하고 싶습니다. (10$ 이상 상승 후 5$ 하락시 청산) 매수진입 이후 가격이 처음진입 가격 아래로 하락하면 일정 간격(20$)으로 1계약씩 추가 매수 합니다.(물타기) 가격이 하락하여 물타기 진입한 경우도 전체 포지션수익이 20$ 이상이면 전체청산하고 싶습니다. 단, 가격이 계속 하락하여 10계약(또는 진입횟수10회이상) 이상 물타기 진입이 필요한 경우 가격이 하락하여 추가로 진입 할때마다 처음 진입한 계약부터 1계약씩 손절(20$) 하고 싶습니다. (1계약씩 추가 진입하고 1계약씩 손절하기 때문에 계약수는 10계약씩 유지되다가, 가격이 상승하면 전체 포지션 수익이 20$ 이상 수익이 나면 전체를 청산합니다.) 진입간격 20$는 처음 진입가격을 기준으로 작성 부탁드립니다. //-------------------------------------------------------------------------- 요청식2) 매수/매도 : 외부입력변수로 설정 매수진입 이후 가격이 처음진입 가격 아래로 떨어지지 않고 상승하면 처음 진입한 1계약만 유지하고 매수진입 계약수량이 1계약이면 포지션 수익이 20$ 이상이면 전체 청산하고 싶습니다. 단, 어느정도 상승 후 하락시 트레일링 스탑을 적용하고 싶습니다. (10$ 이상 상승 후 5$ 하락시 청산) 매수진입 이후 가격이 처음진입 가격 아래로 하락하면 일정 간격(20$)으로 1계약씩 추가 매수 합니다.(물타기) 가격이 하락하여 물타기 진입한 경우도 전체 포지션수익이 20$ 이상이면 전체 청산하고 싶습니다. 단, 물타기 진입의 경우 가격이 10$ 정도 상승하면 마지막 진입한 계약만 익절하고 싶습니다. 그리고 다시 가격이 20$ 하락하면 추가로 1계약 물타기 진입합니다. (가격이 10$ 정도 반등이 나오면 익절하며, 이후 가격이 20$ 하락하면 추가 매수 진입-반복) 위와 같이 청산할 경우 마지막 진입 가격을 체크하기 힘들기 때문에 현재 남아있는 계약들의 평균가격을 기준으로 20$ 하락시 추가 진입하는 방법으로 작성 부탁드립니다. 감사합니다.