커뮤니티

단계별 시스템 거래를 위한 임의 변수 설정

프로필 이미지
민현종
2022-12-27 10:37:26
1440
글번호 164883
답변완료
다음의 시스템거래를 설정하려고 합니다. 1) COND1 신호 발생시 매수/매도 (B1/S1) 2) B1/S1 + 3%이익 + COND2 신호 발생시 익절 (EL/SL) 3) 익절후 COND2 신호 발생시 매수/매도 (B2/S2) 4) B2/S2에서 COND1 신호 발생시 매수/매도 (B3/S3) (1과 동일) 5) 2~4 반복 이걸 구현하기 어려워서 'Level'이라는 임의적인 변수를 만들었습니다. 각 단계별로 Level 1~3로 올라가다가 전 과정이 반복되는 4단계에서 Level1으로 다시 낮추는 수식을 작성했습니다. For Level = 0 To Level = 1 Begin If COND1 == 1 Then Level = Level + 1; If COND1 == -1 Then Level = Level + 1; If COND1 == 1 Then Buy("B1"); If COND1 == -1 Then Sell("S1"); End For Level = 1 To Level = 2 Begin If C > EntryPrice * 1.03 AND COND2 == -1 Then Level = Level + 1; If C < EntryPrice * 0.97 AND COND2 == 1 Then Level = Level + 1; If C > EntryPrice * 1.03 AND COND2 == -1 Then ExitLong("EL"); If C < EntryPrice * 0.97 AND COND2 == 1 Then ExitShort("ES"); End For Level = 2 To Level = 3 Begin If COND2 == 1 Then Level = Level + 1; If COND2 == -1 Then Level = Level + 1; If COND2 == 1 Then Buy("B2"); If COND2 == -1 Then Sell("S2"); End For Level = 3 To Level = 1 Begin If COND1 == 1 Then Buy("B3"); If COND1 == -1 Then Sell("S3"); If COND1 == 1 Then Level = Level - 2; If COND1 == -1 Then Level = Level - 2; End 일단 지표로 Level을 확인해보니 1에서 바뀌지 않는 것으로 나옵니다. 각 단계별로 Level이 변하게 할 수 있을까요?
시스템
답변 3
프로필 이미지

예스스탁 예스스탁 답변

2022-12-27 16:10:34

안녕하세요 예스스탁입니다. 문의하신 내용을 정확히 이해하지 못했습니다. 올려주신 내용에서 for문과 Level등의 변수는 붏필요한 것 같습니다. 특히 for문의 어떤 이유에서 사용하고자 하시는지 알수 없습니다. 무포지션이거나 S2로 진입된 경우에만 cond1 == 1 조건만족하면 매수진입(B1) 무포지션이거나 B2로 진입된 경우에만 cond1 == -1 조건만족하면 매도진입(S1) B1으로 진입 후 3% 수익중에 cond1 == -1 조건만족하면 스위칭 매도진입(S2) S1으로 진입 후 3% 수익중에 cond1 == 1 조건만족하면 스위칭 매수진입(B2) 올려주신 내용으로 판단하면 진입은 위와 같이 4가지 케이스입니다. Buy나 Sell은 진입함수이므로 반대포지션 진입상태에서 발생하면 반대포지션 청산을 자동으로 하게 됩니다. 위 구조가 맞으시면 아래식 참고하시기 바랍니다. If MarketPosition == 0 or (MarketPosition == -1 and IsEntryName("S2") == true Then { if COND1 == 1 Then Buy("B1"); } If MarketPosition == 0 or (MarketPosition == 1 and IsEntryName("B2") == true Then { if COND1 == -1 Then Sell("S1"); } if MarketPosition == 1 and IsEntryName("B1") == true and C > EntryPrice+1.03 and Cond2 == -1 Then Sell("S2"); if MarketPosition == 1 and IsEntryName("S1") == true and C < EntryPrice+0.97 and Cond2 == 1 Then Buy("B2"); 즐거운 하루되세요 > 민현종 님이 쓴 글입니다. > 제목 : 단계별 시스템 거래를 위한 임의 변수 설정 > 다음의 시스템거래를 설정하려고 합니다. 1) COND1 신호 발생시 매수/매도 (B1/S1) 2) B1/S1 + 3%이익 + COND2 신호 발생시 익절 (EL/SL) 3) 익절후 COND2 신호 발생시 매수/매도 (B2/S2) 4) B2/S2에서 COND1 신호 발생시 매수/매도 (B3/S3) (1과 동일) 5) 2~4 반복 이걸 구현하기 어려워서 'Level'이라는 임의적인 변수를 만들었습니다. 각 단계별로 Level 1~3로 올라가다가 전 과정이 반복되는 4단계에서 Level1으로 다시 낮추는 수식을 작성했습니다. For Level = 0 To Level = 1 Begin If COND1 == 1 Then Level = Level + 1; If COND1 == -1 Then Level = Level + 1; If COND1 == 1 Then Buy("B1"); If COND1 == -1 Then Sell("S1"); End For Level = 1 To Level = 2 Begin If C > EntryPrice * 1.03 AND COND2 == -1 Then Level = Level + 1; If C < EntryPrice * 0.97 AND COND2 == 1 Then Level = Level + 1; If C > EntryPrice * 1.03 AND COND2 == -1 Then ExitLong("EL"); If C < EntryPrice * 0.97 AND COND2 == 1 Then ExitShort("ES"); End For Level = 2 To Level = 3 Begin If COND2 == 1 Then Level = Level + 1; If COND2 == -1 Then Level = Level + 1; If COND2 == 1 Then Buy("B2"); If COND2 == -1 Then Sell("S2"); End For Level = 3 To Level = 1 Begin If COND1 == 1 Then Buy("B3"); If COND1 == -1 Then Sell("S3"); If COND1 == 1 Then Level = Level - 2; If COND1 == -1 Then Level = Level - 2; End 일단 지표로 Level을 확인해보니 1에서 바뀌지 않는 것으로 나옵니다. 각 단계별로 Level이 변하게 할 수 있을까요?
프로필 이미지

민현종

2022-12-27 16:51:59

최초신호 이후 신호가 발생하지 않습니다. 확인 부탁드립니 > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 단계별 시스템 거래를 위한 임의 변수 설정 > 안녕하세요 예스스탁입니다. 문의하신 내용을 정확히 이해하지 못했습니다. 올려주신 내용에서 for문과 Level등의 변수는 붏필요한 것 같습니다. 특히 for문의 어떤 이유에서 사용하고자 하시는지 알수 없습니다. 무포지션이거나 S2로 진입된 경우에만 cond1 == 1 조건만족하면 매수진입(B1) 무포지션이거나 B2로 진입된 경우에만 cond1 == -1 조건만족하면 매도진입(S1) B1으로 진입 후 3% 수익중에 cond1 == -1 조건만족하면 스위칭 매도진입(S2) S1으로 진입 후 3% 수익중에 cond1 == 1 조건만족하면 스위칭 매수진입(B2) 올려주신 내용으로 판단하면 진입은 위와 같이 4가지 케이스입니다. Buy나 Sell은 진입함수이므로 반대포지션 진입상태에서 발생하면 반대포지션 청산을 자동으로 하게 됩니다. 위 구조가 맞으시면 아래식 참고하시기 바랍니다. If MarketPosition == 0 or (MarketPosition == -1 and IsEntryName("S2") == true Then { if COND1 == 1 Then Buy("B1"); } If MarketPosition == 0 or (MarketPosition == 1 and IsEntryName("B2") == true Then { if COND1 == -1 Then Sell("S1"); } if MarketPosition == 1 and IsEntryName("B1") == true and C > EntryPrice+1.03 and Cond2 == -1 Then Sell("S2"); if MarketPosition == 1 and IsEntryName("S1") == true and C < EntryPrice+0.97 and Cond2 == 1 Then Buy("B2"); 즐거운 하루되세요 > 민현종 님이 쓴 글입니다. > 제목 : 단계별 시스템 거래를 위한 임의 변수 설정 > 다음의 시스템거래를 설정하려고 합니다. 1) COND1 신호 발생시 매수/매도 (B1/S1) 2) B1/S1 + 3%이익 + COND2 신호 발생시 익절 (EL/SL) 3) 익절후 COND2 신호 발생시 매수/매도 (B2/S2) 4) B2/S2에서 COND1 신호 발생시 매수/매도 (B3/S3) (1과 동일) 5) 2~4 반복 이걸 구현하기 어려워서 'Level'이라는 임의적인 변수를 만들었습니다. 각 단계별로 Level 1~3로 올라가다가 전 과정이 반복되는 4단계에서 Level1으로 다시 낮추는 수식을 작성했습니다. For Level = 0 To Level = 1 Begin If COND1 == 1 Then Level = Level + 1; If COND1 == -1 Then Level = Level + 1; If COND1 == 1 Then Buy("B1"); If COND1 == -1 Then Sell("S1"); End For Level = 1 To Level = 2 Begin If C > EntryPrice * 1.03 AND COND2 == -1 Then Level = Level + 1; If C < EntryPrice * 0.97 AND COND2 == 1 Then Level = Level + 1; If C > EntryPrice * 1.03 AND COND2 == -1 Then ExitLong("EL"); If C < EntryPrice * 0.97 AND COND2 == 1 Then ExitShort("ES"); End For Level = 2 To Level = 3 Begin If COND2 == 1 Then Level = Level + 1; If COND2 == -1 Then Level = Level + 1; If COND2 == 1 Then Buy("B2"); If COND2 == -1 Then Sell("S2"); End For Level = 3 To Level = 1 Begin If COND1 == 1 Then Buy("B3"); If COND1 == -1 Then Sell("S3"); If COND1 == 1 Then Level = Level - 2; If COND1 == -1 Then Level = Level - 2; End 일단 지표로 Level을 확인해보니 1에서 바뀌지 않는 것으로 나옵니다. 각 단계별로 Level이 변하게 할 수 있을까요?
프로필 이미지

예스스탁 예스스탁 답변

2022-12-27 17:31:53

안녕하세요 예스스탁입니다. 식을 수정해 드립니다. 아래 구조로 완성하시기 바랍니다. If MarketPosition == 0 or (MarketPosition == -1 and IsEntryName("S2") == true) Then { if COND1 == 1 Then Buy("B1"); } If MarketPosition == 0 or (MarketPosition == 1 and IsEntryName("B2") == true) Then { if COND1 == -1 Then Sell("S1"); } if MarketPosition == 1 and IsEntryName("B1") == true and C > EntryPrice*1.03 and Cond2 == -1 Then Sell("S2"); if MarketPosition == -1 and IsEntryName("S1") == true and C < EntryPrice*0.97 and Cond2 == 1 Then Buy("B2"); 즐거운 하루되세요 > 민현종 님이 쓴 글입니다. > 제목 : Re : Re : 단계별 시스템 거래를 위한 임의 변수 설정 > 최초신호 이후 신호가 발생하지 않습니다. 확인 부탁드립니 > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 단계별 시스템 거래를 위한 임의 변수 설정 > 안녕하세요 예스스탁입니다. 문의하신 내용을 정확히 이해하지 못했습니다. 올려주신 내용에서 for문과 Level등의 변수는 붏필요한 것 같습니다. 특히 for문의 어떤 이유에서 사용하고자 하시는지 알수 없습니다. 무포지션이거나 S2로 진입된 경우에만 cond1 == 1 조건만족하면 매수진입(B1) 무포지션이거나 B2로 진입된 경우에만 cond1 == -1 조건만족하면 매도진입(S1) B1으로 진입 후 3% 수익중에 cond1 == -1 조건만족하면 스위칭 매도진입(S2) S1으로 진입 후 3% 수익중에 cond1 == 1 조건만족하면 스위칭 매수진입(B2) 올려주신 내용으로 판단하면 진입은 위와 같이 4가지 케이스입니다. Buy나 Sell은 진입함수이므로 반대포지션 진입상태에서 발생하면 반대포지션 청산을 자동으로 하게 됩니다. 위 구조가 맞으시면 아래식 참고하시기 바랍니다. If MarketPosition == 0 or (MarketPosition == -1 and IsEntryName("S2") == true Then { if COND1 == 1 Then Buy("B1"); } If MarketPosition == 0 or (MarketPosition == 1 and IsEntryName("B2") == true Then { if COND1 == -1 Then Sell("S1"); } if MarketPosition == 1 and IsEntryName("B1") == true and C > EntryPrice+1.03 and Cond2 == -1 Then Sell("S2"); if MarketPosition == 1 and IsEntryName("S1") == true and C < EntryPrice+0.97 and Cond2 == 1 Then Buy("B2"); 즐거운 하루되세요 > 민현종 님이 쓴 글입니다. > 제목 : 단계별 시스템 거래를 위한 임의 변수 설정 > 다음의 시스템거래를 설정하려고 합니다. 1) COND1 신호 발생시 매수/매도 (B1/S1) 2) B1/S1 + 3%이익 + COND2 신호 발생시 익절 (EL/SL) 3) 익절후 COND2 신호 발생시 매수/매도 (B2/S2) 4) B2/S2에서 COND1 신호 발생시 매수/매도 (B3/S3) (1과 동일) 5) 2~4 반복 이걸 구현하기 어려워서 'Level'이라는 임의적인 변수를 만들었습니다. 각 단계별로 Level 1~3로 올라가다가 전 과정이 반복되는 4단계에서 Level1으로 다시 낮추는 수식을 작성했습니다. For Level = 0 To Level = 1 Begin If COND1 == 1 Then Level = Level + 1; If COND1 == -1 Then Level = Level + 1; If COND1 == 1 Then Buy("B1"); If COND1 == -1 Then Sell("S1"); End For Level = 1 To Level = 2 Begin If C > EntryPrice * 1.03 AND COND2 == -1 Then Level = Level + 1; If C < EntryPrice * 0.97 AND COND2 == 1 Then Level = Level + 1; If C > EntryPrice * 1.03 AND COND2 == -1 Then ExitLong("EL"); If C < EntryPrice * 0.97 AND COND2 == 1 Then ExitShort("ES"); End For Level = 2 To Level = 3 Begin If COND2 == 1 Then Level = Level + 1; If COND2 == -1 Then Level = Level + 1; If COND2 == 1 Then Buy("B2"); If COND2 == -1 Then Sell("S2"); End For Level = 3 To Level = 1 Begin If COND1 == 1 Then Buy("B3"); If COND1 == -1 Then Sell("S3"); If COND1 == 1 Then Level = Level - 2; If COND1 == -1 Then Level = Level - 2; End 일단 지표로 Level을 확인해보니 1에서 바뀌지 않는 것으로 나옵니다. 각 단계별로 Level이 변하게 할 수 있을까요?