커뮤니티

안녕하세요 도움 부탁드립니다.

프로필 이미지
이만스닥
2022-01-07 14:07:54
1136
글번호 155235
답변완료
안녕하세요 도움 부탁드립니다. 아무리 제가 해보려 해봐도 마음대로 원하는게 나오지 않습니다 ㅠㅠ 아래의 수식은 수식지왕님의 range bar 차트입니다. 제가 구현하고 싶어하는 것은 아래와 같습니다. 1. Range bar 한개당 매매 한번만 실행 2. A라는 조건이 만족되면 매수 진입 3. 변수로 Range bar 한개당 매매 횟수를 설정 if OO != OO[1] Then Entry = 0 ; If entry == 0 and A then Buy(); 라고 하거나 if bars == bars[BarsSinceEntry]+1 and A then Buy(); 이렇게 하면 진입은 제대로 되는데, A라는 조건을 만족할때마다 자꾸 매수 시그널이 나갑니다. range bar 하나당 한번만 진입하게는 어떻게 하나요? 참고로 If A then entry = 1; 이렇게 해서 진입을 막으려해도 되지가 않습니다 ㅠㅠ ================= Input:tick(300); Var:j(0),k(0),n(0),trend(0),tickVal(0),oneTick(0),count(0),remain(0); Array:OO[1000](0),HH[1000](0),LL[1000](0),CC[1000](0),val[4](0); #==============================================================================# # Range Bar Chart 계산 #==============================================================================# If Index == 0 Then { tickVal = tick * PriceScale; oneTick = PriceScale; OO[0] = O; HH[0] = O; LL[0] = O; CC[0] = O; } count = 0; val[0] = O; val[3] = C; If O > C Then { val[1] = H; val[2] = L; If L < C Then trend = 1; Else trend = -1; } Else If O < C Then { val[1] = L; val[2] = H; If H > C Then trend = -1; Else trend = 1; } Else If C[1] > O Then { val[1] = L; val[2] = H; If H > C Then trend = -1; Else trend = 1; } Else If C[1] < O Then { val[1] = H; val[2] = L; If L < C Then trend = 1; Else trend = -1; } Else If trend == 1 Then { val[1] = H; val[2] = L; If L < C Then trend = 1; Else trend = -1; } Else If trend == -1 Then { val[1] = L; val[2] = H; If H > C Then trend = -1; Else trend = 1; } For k = 0 To 3 { If HH[0] > 0 && HH[0] < val[k] Then { While val[k] - LL[0] > tickVal { HH[0] = LL[0] + tickVal; CC[0] = HH[0]; For j = 998 DownTo 0 { OO[j+1] = OO[j]; HH[j+1] = HH[j]; LL[j+1] = LL[j]; CC[j+1] = CC[j]; } count = count + 1; OO[0] = HH[1] + oneTick; LL[0] = OO[0]; } If val[k] - LL[0] <= tickVal Then { HH[0] = val[k]; CC[0] = val[k]; } } Else If LL[0] > val[k] Then { While HH[0] - val[k] > tickVal { LL[0] = HH[0] - tickVal; CC[0] = LL[0]; For j = 998 DownTo 0 { OO[j+1] = OO[j]; HH[j+1] = HH[j]; LL[j+1] = LL[j]; CC[j+1] = CC[j]; } count = count + 1; OO[0] = LL[1] - oneTick; HH[0] = OO[0]; } If HH[0] - val[k] <= tickVal Then { LL[0] = val[k]; CC[0] = val[k]; } } Else { CC[0] = val[k]; } }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2022-01-10 10:12:20

안녕하세요 예스스탁입니다. Input:tick(20),진입횟수(1); Var:j(0),k(0),n(0),trend(0),tickVal(0),oneTick(0),count(0),remain(0),new(0),entry(0); Array:OO[1000](0),HH[1000](0),LL[1000](0),CC[1000](0),val[4](0); #==============================================================================# # Range Bar Chart 계산 #==============================================================================# If Index == 0 Then { tickVal = tick * PriceScale; oneTick = PriceScale; OO[0] = O; HH[0] = O; LL[0] = O; CC[0] = O; } count = 0; val[0] = O; val[3] = C; If O > C Then { val[1] = H; val[2] = L; If L < C Then trend = 1; Else trend = -1; } Else If O < C Then { val[1] = L; val[2] = H; If H > C Then trend = -1; Else trend = 1; } Else If C[1] > O Then { val[1] = L; val[2] = H; If H > C Then trend = -1; Else trend = 1; } Else If C[1] < O Then { val[1] = H; val[2] = L; If L < C Then trend = 1; Else trend = -1; } Else If trend == 1 Then { val[1] = H; val[2] = L; If L < C Then trend = 1; Else trend = -1; } Else If trend == -1 Then { val[1] = L; val[2] = H; If H > C Then trend = -1; Else trend = 1; } new = 0; For k = 0 To 3 { If HH[0] > 0 && HH[0] < val[k] Then { While val[k] - LL[0] > tickVal { HH[0] = LL[0] + tickVal; CC[0] = HH[0]; For j = 998 DownTo 0 { OO[j+1] = OO[j]; HH[j+1] = HH[j]; LL[j+1] = LL[j]; CC[j+1] = CC[j]; } count = count + 1; OO[0] = HH[1] + oneTick; new = 1; LL[0] = OO[0]; } If val[k] - LL[0] <= tickVal Then { HH[0] = val[k]; CC[0] = val[k]; } } Else If LL[0] > val[k] Then { While HH[0] - val[k] > tickVal { LL[0] = HH[0] - tickVal; CC[0] = LL[0]; For j = 998 DownTo 0 { OO[j+1] = OO[j]; HH[j+1] = HH[j]; LL[j+1] = LL[j]; CC[j+1] = CC[j]; } count = count + 1; OO[0] = LL[1] - oneTick; HH[0] = OO[0]; new = -1; } If HH[0] - val[k] <= tickVal Then { LL[0] = val[k]; CC[0] = val[k]; } } Else { CC[0] = val[k]; } } if New == true Then entry = 0; if (MarketPosition != 0 and MarketPosition != MarketPosition[1]) Then entry = entry+1; if entry < 진입횟수 and A조건 Then Buy(); 즐거운 하루되세요 > 이만스닥 님이 쓴 글입니다. > 제목 : 안녕하세요 도움 부탁드립니다. > 안녕하세요 도움 부탁드립니다. 아무리 제가 해보려 해봐도 마음대로 원하는게 나오지 않습니다 ㅠㅠ 아래의 수식은 수식지왕님의 range bar 차트입니다. 제가 구현하고 싶어하는 것은 아래와 같습니다. 1. Range bar 한개당 매매 한번만 실행 2. A라는 조건이 만족되면 매수 진입 3. 변수로 Range bar 한개당 매매 횟수를 설정 if OO != OO[1] Then Entry = 0 ; If entry == 0 and A then Buy(); 라고 하거나 if bars == bars[BarsSinceEntry]+1 and A then Buy(); 이렇게 하면 진입은 제대로 되는데, A라는 조건을 만족할때마다 자꾸 매수 시그널이 나갑니다. range bar 하나당 한번만 진입하게는 어떻게 하나요? 참고로 If A then entry = 1; 이렇게 해서 진입을 막으려해도 되지가 않습니다 ㅠㅠ ================= Input:tick(300); Var:j(0),k(0),n(0),trend(0),tickVal(0),oneTick(0),count(0),remain(0); Array:OO[1000](0),HH[1000](0),LL[1000](0),CC[1000](0),val[4](0); #==============================================================================# # Range Bar Chart 계산 #==============================================================================# If Index == 0 Then { tickVal = tick * PriceScale; oneTick = PriceScale; OO[0] = O; HH[0] = O; LL[0] = O; CC[0] = O; } count = 0; val[0] = O; val[3] = C; If O > C Then { val[1] = H; val[2] = L; If L < C Then trend = 1; Else trend = -1; } Else If O < C Then { val[1] = L; val[2] = H; If H > C Then trend = -1; Else trend = 1; } Else If C[1] > O Then { val[1] = L; val[2] = H; If H > C Then trend = -1; Else trend = 1; } Else If C[1] < O Then { val[1] = H; val[2] = L; If L < C Then trend = 1; Else trend = -1; } Else If trend == 1 Then { val[1] = H; val[2] = L; If L < C Then trend = 1; Else trend = -1; } Else If trend == -1 Then { val[1] = L; val[2] = H; If H > C Then trend = -1; Else trend = 1; } For k = 0 To 3 { If HH[0] > 0 && HH[0] < val[k] Then { While val[k] - LL[0] > tickVal { HH[0] = LL[0] + tickVal; CC[0] = HH[0]; For j = 998 DownTo 0 { OO[j+1] = OO[j]; HH[j+1] = HH[j]; LL[j+1] = LL[j]; CC[j+1] = CC[j]; } count = count + 1; OO[0] = HH[1] + oneTick; LL[0] = OO[0]; } If val[k] - LL[0] <= tickVal Then { HH[0] = val[k]; CC[0] = val[k]; } } Else If LL[0] > val[k] Then { While HH[0] - val[k] > tickVal { LL[0] = HH[0] - tickVal; CC[0] = LL[0]; For j = 998 DownTo 0 { OO[j+1] = OO[j]; HH[j+1] = HH[j]; LL[j+1] = LL[j]; CC[j+1] = CC[j]; } count = count + 1; OO[0] = LL[1] - oneTick; HH[0] = OO[0]; } If HH[0] - val[k] <= tickVal Then { LL[0] = val[k]; CC[0] = val[k]; } } Else { CC[0] = val[k]; } }