커뮤니티

시스템 작성 관련 문의드립니다.

프로필 이미지
비정성시
2025-11-12 11:11:56
63
글번호 227946
답변완료

첨부 이미지

항상 많은 도움 부탁드립니다. 다름이 아니라 시스템에서 stochastics을 카운트 하는 방법에 대해서 문의드립니다.  stochastics에서 Stok>80 이면 과매수 Stok<20이면 과매도로 정의하는 데요. 과매수와 과매도를 카운팅 하고 싶습니다.  stochastics은 대개 과매수와 과매도가 번갈아 나오는 경향이 있는데요.. 제가 파악하고 싶은것은 과매수가 중간에 과매도 없이 연달아 나오는 상황에서 과매수를 카운팅하고 싶습니다. 과매도도 마찬가지고 카운팅 Crossup(Stok,80)이면 1번 과매수, 그 이후에 CrossDown(Stok,20)이면 1번 과매도, 과매수는 초기화. Crossup(Stok,80)이면 1번 과매수, 그 이후에 CrossDown(Stok,20)발생하지 않고 연달아  Crossup(Stok,80)이면 2번 과매수 즉  Crossup(Stok,80) 이 이후에 CrossDown(Stok,20) 없이 연달아 발생하는 경우를 카운팅 하고 싶습니다. 반대로 CrossDown(Stok,20) 이 이후에 Crossup(Stok,80) 없이 연달아 발생하는 경우도 카운팅 하고 싶습니다. 위의 정의 대로 과매수가 과매도를 거치치 않고 연달아 발생하는 경우 카운팅. 과매도가 과매수를 거치치 않고 연달아 발생하는 경우를 카운팅. 시스템에서는 현재 상황이 2번 과매수 이하에서 만 매수진입.3번 과매수 이상 이라면 진입 금지. 2번 과매도 이하에서만 매도 진입.3번 과매도 이상 이라면 진입 금지. 진입 수식은 현재 과매수,과매도가 몇번째 인지만 파악한다면 제가 작성할 수 있을 듯 합니다. stochastics를 기준으로 연달아 발생하는 과매수,과매도에 대한 카운팅 하는 방법을 문의드립니다. CrossUp(StoK,80)이 발생했을 때 현재 몇번인지, CrossDown(StoK,20)이 발생했을때 현재 몇번인지를 파악하고 싶습니다. stochastics을 정의한 상태에서 var:과매수진입(0),과매도진입(0); 과매수진입 = CrossUp(Stok,80); 과매도진입= CrossDown(Stok,20); if MarketPosition == 0 && CrossUp(Stok,80) && 과매수진입<3 Then Buy ("A매수",atmarket,def);
if MarketPosition == 0 && CrossUp(MACDV,MACDsig) &&StoK>80 && Countif(과매수진입<3,10)>0 --> 이 부분을 어떻게 구현해야 하는지도 궁금합니다. Then Buy ("B매수",atmarket,def);
매도 수식도 동일.. 위와 같은 수식을 완성하여 시스템에 사용하고 싶습니다.

시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-11-12 13:47:17

안녕하세요 예스스탁입니다. input : sto1(10),sto2(5),sto3(5); input : short(12),long(25),signal(9); var : stok(0),stod(0),macdv(0),MACDsig(0); var : 과매수진입count(0),과매도진입count(0); stok = StochasticsK(10,5); stod = StochasticsD(10,5,5); MACDV = MACD(short,long); MACDsig = ema(MACDV,signal); if CrossUp(stok,80) Then { 과매수진입count = 과매수진입count+1; 과매도진입count = 0; } if CrossDown(stok,20) Then { 과매도진입count = 과매도진입count+1; 과매수진입count = 0; } if MarketPosition == 0 && CrossUp(Stok,80) && 과매수진입count < 3 Then Buy("A매수",atmarket,def); if MarketPosition == 0 && CrossUp(MACDV,MACDsig) && StoK > 80 && Countif(과매수진입count<3,10) > 0 Then Buy ("B매수",atmarket,def); if MarketPosition == 0 && CrossDown(Stok,20) && 과매도진입count < 3 Then Sell("A매도",atmarket,def); if MarketPosition == 0 && CrossUp(MACDV,MACDsig) && StoK < 20 && Countif(과매도진입count<3,10) > 0 Then Sell("B매도",atmarket,def); 즐거운 하루되세요