커뮤니티

수식문의드립니다

프로필 이미지
jshwang2
2022-05-11 22:03:10
1035
글번호 158772
답변완료
안녕하세요~ 아래 수식을 반복문으로 단순화하고 싶은데 어떻게 해야할까요?? 우선은 수식상의 L01 ~ L10까지만 해서 만들었는데, L을 2~30개 정도 쓰고싶어서요... input의 Lxx는 수기로 입력하고 시스템상의 반복적으로 입력된 부분들을 조건문 사용해 줄이는데 도움 주시면 감사하겠습니다 -------------------- input : IB(2), OB(2), ML(15), L01(12490), L02(12460), L03(12430), L04(12400), L05(12370), L06(12340), L07(12310), L08(12280), L09(12250), L10(12220); var : Bsystem(true), Ssystem(true); //if C > L5 Then Ssystem = False; //if C < L5 Then Ssystem = true; // 매수진입 조건 if Bsystem == true Then { if MarketPosition == 0 && condition11 == true && L <= L01 && C > L01-OB && C < L01+IB Then buy("b01"); if MarketPosition == 0 && condition12 == true && L <= L02 && C > L02-OB && C < L02+IB Then buy("b02"); if MarketPosition == 0 && condition13 == true && L <= L03 && C > L03-OB && C < L03+IB Then buy("b03"); if MarketPosition == 0 && condition14 == true && L <= L04 && C > L04-OB && C < L04+IB Then buy("b04"); if MarketPosition == 0 && condition15 == true && L <= L05 && C > L05-OB && C < L05+IB Then buy("b05"); if MarketPosition == 0 && condition16 == true && L <= L06 && C > L06-OB && C < L06+IB Then buy("b06"); if MarketPosition == 0 && condition17 == true && L <= L07 && C > L07-OB && C < L07+IB Then buy("b07"); if MarketPosition == 0 && condition18 == true && L <= L08 && C > L08-OB && C < L08+IB Then buy("b08"); if MarketPosition == 0 && condition19 == true && L <= L09 && C > L09-OB && C < L09+IB Then buy("b09"); if MarketPosition == 0 && condition10 == true && L <= L10 && C > L10-OB && C < L10+IB Then buy("b10"); if MarketPosition == 0 && CrossDown(C, L01+ML) Then condition11 = true; if MarketPosition == 0 && CrossDown(C, L02+ML) Then condition12 = true; if MarketPosition == 0 && CrossDown(C, L03+ML) Then condition13 = true; if MarketPosition == 0 && CrossDown(C, L04+ML) Then condition14 = true; if MarketPosition == 0 && CrossDown(C, L05+ML) Then condition15 = true; if MarketPosition == 0 && CrossDown(C, L06+ML) Then condition16 = true; if MarketPosition == 0 && CrossDown(C, L07+ML) Then condition17 = true; if MarketPosition == 0 && CrossDown(C, L08+ML) Then condition18 = true; if MarketPosition == 0 && CrossDown(C, L09+ML) Then condition19 = true; if MarketPosition == 0 && CrossDown(C, L10+ML) Then condition10 = true; if CrossDown(L, L01) Then condition11 = False; if CrossDown(L, L02) Then condition12 = False; if CrossDown(L, L03) Then condition13 = False; if CrossDown(L, L04) Then condition14 = False; if CrossDown(L, L05) Then condition15 = False; if CrossDown(L, L06) Then condition16 = False; if CrossDown(L, L07) Then condition17 = False; if CrossDown(L, L08) Then condition18 = False; if CrossDown(L, L09) Then condition19 = False; if CrossDown(L, L10) Then condition10 = False; } //매도진입 조건 if Ssystem == true Then { if MarketPosition == 0 && Condition21 == true && H >= L01 && C > L01-IB && C < L01+OB Then Sell("s01"); if MarketPosition == 0 && Condition22 == true && H >= L02 && C > L02-IB && C < L02+OB Then Sell("s02"); if MarketPosition == 0 && Condition23 == true && H >= L03 && C > L03-IB && C < L03+OB Then Sell("s03"); if MarketPosition == 0 && Condition24 == true && H >= L04 && C > L04-IB && C < L04+OB Then Sell("s04"); if MarketPosition == 0 && Condition25 == true && H >= L05 && C > L05-IB && C < L05+OB Then Sell("s05"); if MarketPosition == 0 && Condition26 == true && H >= L06 && C > L06-IB && C < L06+OB Then Sell("s06"); if MarketPosition == 0 && Condition27 == true && H >= L07 && C > L07-IB && C < L07+OB Then Sell("s07"); if MarketPosition == 0 && Condition28 == true && H >= L08 && C > L08-IB && C < L08+OB Then Sell("s08"); if MarketPosition == 0 && Condition29 == true && H >= L09 && C > L09-IB && C < L09+OB Then Sell("s09"); if MarketPosition == 0 && Condition20 == true && H >= L10 && C > L10-IB && C < L10+OB Then Sell("s10"); if MarketPosition == 0 && CrossUp(C, L01-ML) Then condition21 = true; if MarketPosition == 0 && CrossUp(C, L02-ML) Then condition22 = true; if MarketPosition == 0 && CrossUp(C, L03-ML) Then condition23 = true; if MarketPosition == 0 && CrossUp(C, L04-ML) Then condition24 = true; if MarketPosition == 0 && CrossUp(C, L05-ML) Then condition25 = true; if MarketPosition == 0 && CrossUp(C, L06-ML) Then condition26 = true; if MarketPosition == 0 && CrossUp(C, L07-ML) Then condition27 = true; if MarketPosition == 0 && CrossUp(C, L08-ML) Then condition28 = true; if MarketPosition == 0 && CrossUp(C, L09-ML) Then condition29 = true; if MarketPosition == 0 && CrossUp(C, L10-ML) Then condition20 = true; if CrossUp(H, L01) Then Condition21 = False; if CrossUp(H, L02) Then Condition22 = False; if CrossUp(H, L03) Then Condition23 = False; if CrossUp(H, L04) Then Condition24 = False; if CrossUp(H, L05) Then Condition25 = False; if CrossUp(H, L06) Then Condition26 = False; if CrossUp(H, L07) Then Condition27 = False; if CrossUp(H, L08) Then Condition28 = False; if CrossUp(H, L09) Then Condition29 = False; if CrossUp(H, L10) Then Condition20 = False; } // 청산 if C < L01+ML && C > L01-ML Then { if MarketPosition == 1 Then { ExitLong("exitL01-1",AtLimit,L01+ML); ExitLong("exitL01-2",AtStop,L01-ML); } if MarketPosition == -1 Then { ExitShort("exitS01-1",AtLimit,L01-ML); ExitShort("exitS01-2",AtStop,L01+ML); } } if C < L02+ML && C > L02-ML Then { if MarketPosition == 1 Then { ExitLong("exitL02-1",AtLimit,L02+ML); ExitLong("exitL02-2",AtStop,L02-ML); } if MarketPosition == -1 Then { ExitShort("exitS02-1",AtLimit,L02-ML); ExitShort("exitS02-2",AtStop,L02+ML); } } if C < L03+ML && C > L03-ML Then { if MarketPosition == 1 Then { ExitLong("exitL03-1",AtLimit,L03+ML); ExitLong("exitL03-2",AtStop,L03-ML); } if MarketPosition == -1 Then { ExitShort("exitS03-1",AtLimit,L03-ML); ExitShort("exitS03-2",AtStop,L03+ML); } } if C < L04+ML && C > L04-ML Then { if MarketPosition == 1 Then { ExitLong("exitL04-1",AtLimit,L04+ML); ExitLong("exitL04-2",AtStop,L04-ML); } if MarketPosition == -1 Then { ExitShort("exitS04-1",AtLimit,L04-ML); ExitShort("exitS04-2",AtStop,L04+ML); } } if C < L05+ML && C > L05-ML Then { if MarketPosition == 1 Then { ExitLong("exitL05-1",AtLimit,L05+ML); ExitLong("exitL05-2",AtStop,L05-ML); } if MarketPosition == -1 Then { ExitShort("exitS05-1",AtLimit,L05-ML); ExitShort("exitS05-2",AtStop,L05+ML); } } if C < L06+ML && C > L06-ML Then { if MarketPosition == 1 Then { ExitLong("exitL06-1",AtLimit,L06+ML); ExitLong("exitL06-2",AtStop,L06-ML); } if MarketPosition == -1 Then { ExitShort("exitS06-1",AtLimit,L06-ML); ExitShort("exitS06-2",AtStop,L06+ML); } } if C < L07+ML && C > L07-ML Then { if MarketPosition == 1 Then { ExitLong("exitL07-1",AtLimit,L07+ML); ExitLong("exitL07-2",AtStop,L07-ML); } if MarketPosition == -1 Then { ExitShort("exitS07-1",AtLimit,L07-ML); ExitShort("exitS07-2",AtStop,L07+ML); } } if C < L08+ML && C > L08-ML Then { if MarketPosition == 1 Then { ExitLong("exitL08-1",AtLimit,L08+ML); ExitLong("exitL08-2",AtStop,L08-ML); } if MarketPosition == -1 Then { ExitShort("exitS08-1",AtLimit,L08-ML); ExitShort("exitS08-2",AtStop,L08+ML); } } if C < L09+ML && C > L09-ML Then { if MarketPosition == 1 Then { ExitLong("exitL09-1",AtLimit,L09+ML); ExitLong("exitL09-2",AtStop,L09-ML); } if MarketPosition == -1 Then { ExitShort("exitS09-1",AtLimit,L09-ML); ExitShort("exitS09-2",AtStop,L09+ML); } } if C < L10+ML && C > L10-ML Then { if MarketPosition == 1 Then { ExitLong("exitL10-1",AtLimit,L10+ML); ExitLong("exitL10-2",AtStop,L10-ML); } if MarketPosition == -1 Then { ExitShort("exitS10-1",AtLimit,L10-ML); ExitShort("exitS10-2",AtStop,L10+ML); } }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2022-05-12 13:14:01

안녕하세요 예스스탁입니다. 올리신 내용에 별도로 반복문으로 처리할만한 내용이 없습니다. 현재와 같이 나열해서 작성하셔야 합니다. for문을 숫자값을 증감시켜 한봉에서 여러번 수행해야 하는데 올리신 내용에 숫자값을 지정해 호출할수 있는 값이 없고 L01~L10을 배열변수로 처리해도 각각 조건만족시 신호가 발생해야 하는 내용으로 for문으로 처리할수 없습니다. 즐거운 하루되세요 > jshwang2 님이 쓴 글입니다. > 제목 : 수식문의드립니다 > 안녕하세요~ 아래 수식을 반복문으로 단순화하고 싶은데 어떻게 해야할까요?? 우선은 수식상의 L01 ~ L10까지만 해서 만들었는데, L을 2~30개 정도 쓰고싶어서요... input의 Lxx는 수기로 입력하고 시스템상의 반복적으로 입력된 부분들을 조건문 사용해 줄이는데 도움 주시면 감사하겠습니다 -------------------- input : IB(2), OB(2), ML(15), L01(12490), L02(12460), L03(12430), L04(12400), L05(12370), L06(12340), L07(12310), L08(12280), L09(12250), L10(12220); var : Bsystem(true), Ssystem(true); //if C > L5 Then Ssystem = False; //if C < L5 Then Ssystem = true; // 매수진입 조건 if Bsystem == true Then { if MarketPosition == 0 && condition11 == true && L <= L01 && C > L01-OB && C < L01+IB Then buy("b01"); if MarketPosition == 0 && condition12 == true && L <= L02 && C > L02-OB && C < L02+IB Then buy("b02"); if MarketPosition == 0 && condition13 == true && L <= L03 && C > L03-OB && C < L03+IB Then buy("b03"); if MarketPosition == 0 && condition14 == true && L <= L04 && C > L04-OB && C < L04+IB Then buy("b04"); if MarketPosition == 0 && condition15 == true && L <= L05 && C > L05-OB && C < L05+IB Then buy("b05"); if MarketPosition == 0 && condition16 == true && L <= L06 && C > L06-OB && C < L06+IB Then buy("b06"); if MarketPosition == 0 && condition17 == true && L <= L07 && C > L07-OB && C < L07+IB Then buy("b07"); if MarketPosition == 0 && condition18 == true && L <= L08 && C > L08-OB && C < L08+IB Then buy("b08"); if MarketPosition == 0 && condition19 == true && L <= L09 && C > L09-OB && C < L09+IB Then buy("b09"); if MarketPosition == 0 && condition10 == true && L <= L10 && C > L10-OB && C < L10+IB Then buy("b10"); if MarketPosition == 0 && CrossDown(C, L01+ML) Then condition11 = true; if MarketPosition == 0 && CrossDown(C, L02+ML) Then condition12 = true; if MarketPosition == 0 && CrossDown(C, L03+ML) Then condition13 = true; if MarketPosition == 0 && CrossDown(C, L04+ML) Then condition14 = true; if MarketPosition == 0 && CrossDown(C, L05+ML) Then condition15 = true; if MarketPosition == 0 && CrossDown(C, L06+ML) Then condition16 = true; if MarketPosition == 0 && CrossDown(C, L07+ML) Then condition17 = true; if MarketPosition == 0 && CrossDown(C, L08+ML) Then condition18 = true; if MarketPosition == 0 && CrossDown(C, L09+ML) Then condition19 = true; if MarketPosition == 0 && CrossDown(C, L10+ML) Then condition10 = true; if CrossDown(L, L01) Then condition11 = False; if CrossDown(L, L02) Then condition12 = False; if CrossDown(L, L03) Then condition13 = False; if CrossDown(L, L04) Then condition14 = False; if CrossDown(L, L05) Then condition15 = False; if CrossDown(L, L06) Then condition16 = False; if CrossDown(L, L07) Then condition17 = False; if CrossDown(L, L08) Then condition18 = False; if CrossDown(L, L09) Then condition19 = False; if CrossDown(L, L10) Then condition10 = False; } //매도진입 조건 if Ssystem == true Then { if MarketPosition == 0 && Condition21 == true && H >= L01 && C > L01-IB && C < L01+OB Then Sell("s01"); if MarketPosition == 0 && Condition22 == true && H >= L02 && C > L02-IB && C < L02+OB Then Sell("s02"); if MarketPosition == 0 && Condition23 == true && H >= L03 && C > L03-IB && C < L03+OB Then Sell("s03"); if MarketPosition == 0 && Condition24 == true && H >= L04 && C > L04-IB && C < L04+OB Then Sell("s04"); if MarketPosition == 0 && Condition25 == true && H >= L05 && C > L05-IB && C < L05+OB Then Sell("s05"); if MarketPosition == 0 && Condition26 == true && H >= L06 && C > L06-IB && C < L06+OB Then Sell("s06"); if MarketPosition == 0 && Condition27 == true && H >= L07 && C > L07-IB && C < L07+OB Then Sell("s07"); if MarketPosition == 0 && Condition28 == true && H >= L08 && C > L08-IB && C < L08+OB Then Sell("s08"); if MarketPosition == 0 && Condition29 == true && H >= L09 && C > L09-IB && C < L09+OB Then Sell("s09"); if MarketPosition == 0 && Condition20 == true && H >= L10 && C > L10-IB && C < L10+OB Then Sell("s10"); if MarketPosition == 0 && CrossUp(C, L01-ML) Then condition21 = true; if MarketPosition == 0 && CrossUp(C, L02-ML) Then condition22 = true; if MarketPosition == 0 && CrossUp(C, L03-ML) Then condition23 = true; if MarketPosition == 0 && CrossUp(C, L04-ML) Then condition24 = true; if MarketPosition == 0 && CrossUp(C, L05-ML) Then condition25 = true; if MarketPosition == 0 && CrossUp(C, L06-ML) Then condition26 = true; if MarketPosition == 0 && CrossUp(C, L07-ML) Then condition27 = true; if MarketPosition == 0 && CrossUp(C, L08-ML) Then condition28 = true; if MarketPosition == 0 && CrossUp(C, L09-ML) Then condition29 = true; if MarketPosition == 0 && CrossUp(C, L10-ML) Then condition20 = true; if CrossUp(H, L01) Then Condition21 = False; if CrossUp(H, L02) Then Condition22 = False; if CrossUp(H, L03) Then Condition23 = False; if CrossUp(H, L04) Then Condition24 = False; if CrossUp(H, L05) Then Condition25 = False; if CrossUp(H, L06) Then Condition26 = False; if CrossUp(H, L07) Then Condition27 = False; if CrossUp(H, L08) Then Condition28 = False; if CrossUp(H, L09) Then Condition29 = False; if CrossUp(H, L10) Then Condition20 = False; } // 청산 if C < L01+ML && C > L01-ML Then { if MarketPosition == 1 Then { ExitLong("exitL01-1",AtLimit,L01+ML); ExitLong("exitL01-2",AtStop,L01-ML); } if MarketPosition == -1 Then { ExitShort("exitS01-1",AtLimit,L01-ML); ExitShort("exitS01-2",AtStop,L01+ML); } } if C < L02+ML && C > L02-ML Then { if MarketPosition == 1 Then { ExitLong("exitL02-1",AtLimit,L02+ML); ExitLong("exitL02-2",AtStop,L02-ML); } if MarketPosition == -1 Then { ExitShort("exitS02-1",AtLimit,L02-ML); ExitShort("exitS02-2",AtStop,L02+ML); } } if C < L03+ML && C > L03-ML Then { if MarketPosition == 1 Then { ExitLong("exitL03-1",AtLimit,L03+ML); ExitLong("exitL03-2",AtStop,L03-ML); } if MarketPosition == -1 Then { ExitShort("exitS03-1",AtLimit,L03-ML); ExitShort("exitS03-2",AtStop,L03+ML); } } if C < L04+ML && C > L04-ML Then { if MarketPosition == 1 Then { ExitLong("exitL04-1",AtLimit,L04+ML); ExitLong("exitL04-2",AtStop,L04-ML); } if MarketPosition == -1 Then { ExitShort("exitS04-1",AtLimit,L04-ML); ExitShort("exitS04-2",AtStop,L04+ML); } } if C < L05+ML && C > L05-ML Then { if MarketPosition == 1 Then { ExitLong("exitL05-1",AtLimit,L05+ML); ExitLong("exitL05-2",AtStop,L05-ML); } if MarketPosition == -1 Then { ExitShort("exitS05-1",AtLimit,L05-ML); ExitShort("exitS05-2",AtStop,L05+ML); } } if C < L06+ML && C > L06-ML Then { if MarketPosition == 1 Then { ExitLong("exitL06-1",AtLimit,L06+ML); ExitLong("exitL06-2",AtStop,L06-ML); } if MarketPosition == -1 Then { ExitShort("exitS06-1",AtLimit,L06-ML); ExitShort("exitS06-2",AtStop,L06+ML); } } if C < L07+ML && C > L07-ML Then { if MarketPosition == 1 Then { ExitLong("exitL07-1",AtLimit,L07+ML); ExitLong("exitL07-2",AtStop,L07-ML); } if MarketPosition == -1 Then { ExitShort("exitS07-1",AtLimit,L07-ML); ExitShort("exitS07-2",AtStop,L07+ML); } } if C < L08+ML && C > L08-ML Then { if MarketPosition == 1 Then { ExitLong("exitL08-1",AtLimit,L08+ML); ExitLong("exitL08-2",AtStop,L08-ML); } if MarketPosition == -1 Then { ExitShort("exitS08-1",AtLimit,L08-ML); ExitShort("exitS08-2",AtStop,L08+ML); } } if C < L09+ML && C > L09-ML Then { if MarketPosition == 1 Then { ExitLong("exitL09-1",AtLimit,L09+ML); ExitLong("exitL09-2",AtStop,L09-ML); } if MarketPosition == -1 Then { ExitShort("exitS09-1",AtLimit,L09-ML); ExitShort("exitS09-2",AtStop,L09+ML); } } if C < L10+ML && C > L10-ML Then { if MarketPosition == 1 Then { ExitLong("exitL10-1",AtLimit,L10+ML); ExitLong("exitL10-2",AtStop,L10-ML); } if MarketPosition == -1 Then { ExitShort("exitS10-1",AtLimit,L10-ML); ExitShort("exitS10-2",AtStop,L10+ML); } }