커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

여러개 중에 먼저 조건이 달성하는 것만 진입하는 수식을 작성하고 싶습니다.

항상 도움에 감사드립니다. 아래의 코드를 실행하면 첫번째 이미지와 같은 지표가 그려지는데요. ------------------------------------------ input : ntime(140800), xtime(150600); input : line_num(5), tick_size(12); var : Tcond(False), oo(0), k(0), j(0); array : flag[3](0); array : up[2](0), middle[2](0), down[2](0); array : up_TL[2](0), middle_TL[2](0), down_TL[2](0); array : up_cnt[2](0), middle_cnt[2](0), down_cnt[2](0); array : up_text[2](0), middle_text[2](0), down_text[2](0); if (sdate != sdate[1] and stime >= xtime) or (sdate == sdate[1] and stime >= xtime and stime[1] < xtime) Then Tcond = False; if (sdate != sdate[1] and stime >= ntime) or (sdate == sdate[1] and stime >= ntime and stime[1] < ntime) Then { // 변수들 초기화 해주기 Tcond = true; oo = o; For k=1 to 3 { flag[k] = 0; } For j=1 to 2 { up[k] = 0; middle[k] = 0; down[k] = 0; up_cnt[k] = 0; middle_cnt[k] = 0; down_cnt[k] = 0; } up[2] = oo + PriceScale*30; up[1] = oo + PriceScale*20; middle[2] = oo + PriceScale*10; middle[1] = oo + PriceScale; down[2] = oo - PriceScale*10; down[1] = oo - PriceScale*20; // 선그리기 up_TL[2] = TL_New(sDate,sTime,up[2],NextBarSdate,NextBarStime,up[2]); // 선긋기 up_TL[1] = TL_New(sDate,sTime,up[1],NextBarSdate,NextBarStime,up[1]); // 선긋기 middle_TL[2] = TL_New(sDate,sTime,middle[2],NextBarSdate,NextBarStime,middle[2]); // 선긋기 middle_TL[1] = TL_New(sDate,sTime,middle[1],NextBarSdate,NextBarStime,middle[1]); // 선긋기 down_TL[2] = TL_New(sDate,sTime,down[2],NextBarSdate,NextBarStime,down[2]); // 선긋기 down_TL[1] = TL_New(sDate,sTime,down[1],NextBarSdate,NextBarStime,down[1]); // 선긋기 // 조건문으로 터치 카운트 하기 // up if H >= up[2] Then { flag[3] = 1; up_cnt[2] = up_cnt[2] + 1; } if L <= up[1] Then { flag[3] = -1; up_cnt[1] = up_cnt[1] + 1; } // middle if H >= middle[2] Then { flag[2] = 1; middle_cnt[2] = middle_cnt[2] + 1; } if L <= middle[1] Then { flag[2] = -1; middle_cnt[1] = middle_cnt[1] + 1; } // down if H >= down[2] Then { flag[1] = 1; down_cnt[2] = down_cnt[2] + 1; } if L <= down[1] Then { flag[1] = -1; down_cnt[1] = down_cnt[1] + 1; } // 터치 횟수 출력 up_text[2] = Text_New(NextBarSdate,NextBarStime,up[2],NumToStr(up_cnt[2],0)); up_text[1] = Text_New(NextBarSdate,NextBarStime,up[1],NumToStr(up_cnt[1],0)); middle_text[2] = Text_New(NextBarSdate,NextBarStime,middle[2],NumToStr(middle_cnt[2],0)); middle_text[1] = Text_New(NextBarSdate,NextBarStime,middle[1],NumToStr(middle_cnt[1],0)); down_text[2] = Text_New(NextBarSdate,NextBarStime,down[2],NumToStr(down_cnt[2],0)); down_text[1] = Text_New(NextBarSdate,NextBarStime,down[1],NumToStr(down_cnt[1],0)); } Else { if Tcond == true Then { // up쪽 카운트 갱신하기 if flag[3] <= 0 and H >= up[2] and H[1] < up[2] Then { flag[3] = 1; up_cnt[2] = up_cnt[2] + 1; Text_SetString(up_text[2],NumToStr(up_cnt[2],0)); } if flag[3] >= 0 and H >= up[1] and H[1] < up[1] Then { flag[3] = -1; up_cnt[1] = up_cnt[1] + 1; Text_SetString(up_text[1],NumToStr(up_cnt[1],0)); } // middle쪽 카운트 갱신하기 if flag[2] <= 0 and H >= middle[2] and H[1] < middle[2] Then { flag[2] = 1; middle_cnt[2] = middle_cnt[2] + 1; Text_SetString(middle_text[2],NumToStr(middle_cnt[2],0)); } if flag[2] >= 0 and H >= middle[1] and H[1] < middle[1] Then { flag[2] = -1; middle_cnt[1] = middle_cnt[1] + 1; Text_SetString(middle_text[1],NumToStr(middle_cnt[1],0)); } // down쪽 카운트 갱신하기 if flag[1] <= 0 and H >= down[2] and H[1] < down[2] Then { flag[1] = 1; down_cnt[2] = down_cnt[2] + 1; Text_SetString(down_text[2],NumToStr(down_cnt[2],0)); } if flag[1] >= 0 and H >= down[1] and H[1] < down[1] Then { flag[1] = -1; down_cnt[1] = down_cnt[1] + 1; Text_SetString(down_text[1],NumToStr(down_cnt[1],0)); } // 선긋기 연장해줌 TL_SetEnd(up_TL[2],NextBarSdate,NextBarStime,up[2]); // 선 긋기 연장해줌 TL_SetEnd(up_TL[1],NextBarSdate,NextBarStime,up[1]); // 선 긋기 연장해줌 TL_SetColor(up_TL[2], Red); TL_SetColor(up_TL[1], Red); TL_SetEnd(middle_TL[2],NextBarSdate,NextBarStime,middle[2]); // 선 긋기 연장해줌 TL_SetEnd(middle_TL[1],NextBarSdate,NextBarStime,middle[1]); // 선 긋기 연장해줌 TL_SetColor(middle_TL[2], Black); TL_SetColor(middle_TL[1], Black); TL_SetEnd(down_TL[2],NextBarSdate,NextBarStime,down[2]); // 선 긋기 연장해줌 TL_SetEnd(down_TL[1],NextBarSdate,NextBarStime,down[1]); // 선 긋기 연장해줌 TL_SetColor(down_TL[2], Blue); TL_SetColor(down_TL[1], Blue); // 텍스트 출력 끝으로 몰아줌 Text_SetLocation(up_text[2],NextBarSdate,NextBarStime,up[2]); Text_SetLocation(up_text[1],NextBarSdate,NextBarStime,up[1]); Text_SetLocation(middle_text[2],NextBarSdate,NextBarStime,middle[2]); Text_SetLocation(middle_text[1],NextBarSdate,NextBarStime,middle[1]); Text_SetLocation(down_text[2],NextBarSdate,NextBarStime,down[2]); Text_SetLocation(down_text[1],NextBarSdate,NextBarStime,down[1]); } } -------------------------------------------------------------------------------- 빨간색 박스권 그룹 검은색 박스권 그룹 파란색 박스권 그룹 이렇게 세개의 박스권 그룹이 있어서 가격이 각각의 박스권 사이를 몇 번 터치하는지 출력이 되게 만들었습니다. 이미지를 보면 검은색 박스권 사이에서의 터치가 6번 먼저 도달했는데요. 이럴경우 검은색선의 상단을 돌파시 매수 진입하고, 검은색선의 하단을 이탈하면 매도 진입하는 매매식을 만들고 싶습니다. 검은색선 하단쪽에서 먼저 매도를 진입한다면 손절은 상단 가격이고 검은색선 상단쪽에서 먼저 매수를 진입한다면 손절은 하단 가격으로 만들고, 익절은 상단과 하단 폭 x 3배 입니다. 그리고 빨간색 박스권 그룹, 파란색 박스권 그룹에서는 진입 기능이 정지가 되어야 합니다. (이후에 빨간색 박스권 터치가 6번이 되어도 진입 안됨) 마찬가지로, 빨간색선 박스권 그룹에서 먼저 6번 터치가 발생한다면 빨간색선의 상단을 돌파시 매수 진입하고, 빨간색선의 하단을 이탈하면 매도 진입합니다. 빨간색선 하단쪽에서 먼저 매도를 진입한다면 손절은 상단 가격이고 빨간색선 상단쪽에서 먼저 매수를 진입한다면 손절은 하단 가격으로 만들고, 익절은 상단과 하단 폭 x 3배 입니다. 그리고 검은색 박스권 그룹, 파란색 박스권 그룹에서는 진입 기능이 정지가 되어야 합니다. (이후에 검은색 박스권 터치가 6번이 되어도 진입 안됨) 마찬가지로, 파란색선 박스권 그룹에서 먼저 6번 터치가 발생한다면 위와 같은 조건으로 매매가 되도록 하고 싶습니다. 수식 부탁드립니다.
프로필 이미지
예스쟁이
2023-08-25
1173
글번호 171861
시스템

고성 님에 의해서 삭제되었습니다.

프로필 이미지
고성
2023-08-27
42
글번호 171859
지표

이만스닥 님에 의해서 삭제되었습니다.

프로필 이미지
이만스닥
2023-08-25
0
글번호 171856
시스템

2wnwn 님에 의해서 삭제되었습니다.

프로필 이미지
2wnwn
2023-08-25
1
글번호 171854
지표
답변완료

수식문의 드립니다

1. 20선과 60선 골든크로스 이후에 5선과 20선 데드크로스 이후 주가와 5선 골든크로스 발생시 매수신호 2. 20선과 60선 데드크로스 이후에 5선과 20선 골든크로스 이후 주가와 5선 데드크로스 발생시 매도신호 부탁드립니다
프로필 이미지
한림
2023-08-25
1035
글번호 171849
시스템
답변완료

안녕하세요 간단한 지표식 부탁드립니다

1분봉에서 일봉 기준 지수이평선 5,10,20,60,120일선 을 만들어주시면 감사하겠습니다 제가 대략 타임프레임을 늘려 적용해 봤는데 어떨땐 맞는거같기도한데 어떨때는 틀리더라구요 그래서 부탁드려봅니다 감사합니다!
프로필 이미지
dsad
2023-08-25
1464
글번호 171846
지표
답변완료

swing

안녕하세요? SwingHigh(1,H,3,3,20)를 사용해 보려는데 어렵네요 SL1, SH1 : 진입으로부터 0~5개사이에 발생 SL2, SH2 : 진입으로부터 6~20개사이에 발생 하는 조건 추가 부탁드립니다. 안녕하세요 예스스탁입니다. input : left(3),right(3); var : sl1(0),sl2(0),sh1(0),sh2(0); if SwingLow(1,L,Left,right,Left+right+1) != -1 Then { sl1 = l[right]; sl2 = sl1[1]; #최근저점이 전저점보다 크면 매수 if SL1 > SL2 and SL2 > 0 Then buy(); } if SwingHigh(1,H,Left,right,Left+right+1) != -1 Then { sh1 = h[right]; sh2 = sh1[1]; #최근고점이 전고점보다 작으면 매도 if SH1 < SH2 and SH2 > 0 Then sell(); } if MarketPosition == 1 Then ExitLong("bx",AtStop,SL2[BarsSinceEntry]); if MarketPosition == -1 Then ExitShort("sx",AtStop,SH2[BarsSinceEntry]);
프로필 이미지
코퍼
2023-08-25
1124
글번호 171845
시스템
답변완료

지표 및 종목 검색 수식 요청드립니다

안녕하세요~~ 시스템 관리자님 항상 고맙습니다. 하기 그림 기준 [종목명 : 맥쿼리인프라] 2023년5월08일 발생한 캔들 기준으로 키움의 수식인 ValueWhen선 정의 및 종목 검색을 하고자 합니다. 녹색 캔들의 기준 ①전날 양봉 ②금일 음봉 + 전날의 종가 위에 마감(갭으로 마감) ③상단 꼬리 : 몸통(O,C) 기준 몸통보다 작을 것 위 녹색 캔들 기준으로 ①ValueWhen 선을 긋고... ②ValueWhen 선을 기준 다음날 이후 돌파 하는 종목 검색
프로필 이미지
yes초보님
2023-08-25
1764
글번호 171840
종목검색
답변완료

수식간의 충돌 문제를 어떻게 해결하나요?

Plot13(macdOsc2, "Oscillator up",rgb(197,21,7),def,8); 아래에 FixPlotShift(13,1); 이렇게 넣어서 쉬프트 시키려고 하는데, 오류가 발생합니다. ------------------------------------------------ if 모드 == "미래1" Then { if LastBarOnChart == 1 Then { Plot11(macd3, "MACD 미래1",rgb(190,64,115)); FixPlotShift(11,1); Plot12(Signal2, "MACDSignal 미래1",rgb(57,166,197)); FixPlotShift(12,1); if macdOsc2 > 0 then Plot13(macdOsc2, "Oscillator up",rgb(197,21,7),def,8); else plot10(macdOsc2, "Oscillator down", rgb(73,188,227),def,8); } }
프로필 이미지
이웃집고양이
2023-08-25
1296
글번호 171839
지표

2wnwn 님에 의해서 삭제되었습니다.

프로필 이미지
2wnwn
2023-08-25
182
글번호 171833
지표