커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

[공지] 예스랭귀지 AI 어시스턴트, '예스나 AI' 출시 및 무료 체험 안내

안녕하세요, 예스스탁 입니다.복잡한 수식 공부 없이 여러분의 아이디어를 말하면 시스템 트레이딩 언어 예스랭귀지로 작성해주는 서비스예스나 AI(YesNa AI)가 출시되었습니다.지금 예스나 AI를 직접 경험해 보실 수 있도록 20크레딧(질문권 20회)를 무료로 증정해 드리고 있습니다.바로 여러분의 아이디어를 코드로 변환해보세요.--------------------------------------------------🚀 YesNa AI 핵심 기능- 지표식/전략식/종목검색식 생성: 자연어로 요청하면 예스랭귀지 문법에 맞는 코드를 작성합니다.- 종목검색식 변환 지원: K증권의 종목 검색식을 예스랭귀지로 변환 지원합니다.- 컴파일 검증: 작성된 코드가 실행 가능한지 컴파일러를 통해 문법 검증을 거쳐 결과물을 제공합니다.상세한 서비스 개요 및 활용 방법은 [서비스 소개 페이지]에서 확인하실 수 있습니다.▶ 서비스 소개 페이지: 바로가기서비스 사용 유의사항 및 결제 환불정책은 [이용약관]을 참고 부탁드립니다.▶ 서비스 이용약관: 바로가기💬 이용 문의사용 중 문의사항은 [프로그램 사용법 Q&A] 게시판에서 [예스나 AI] 카테고리를 설정 후 문의해 주시면 상세히 안내해 드리겠습니다.--------------------------------------------------앞으로도 AI를 활용한 다양한 트레이딩 기능들을 지속적으로 선보일 예정입니다.많은 관심과 기대 부탁드립니다.
프로필 이미지
예스스탁
2026-02-27
1635
글번호 230811
지표
답변완료

조건을 만족하는 값 추리기

안녕하세요 항상 건강하셨으면 좋겠습니다. 코드 짜주시고 도움 주셔서 항상 고맙습니다 (__) 특정 조건을 만족하는 값만 추리길 원합니다 어떻게 해야할지 도움 주시면 감사하겠습니다 X = IFF(Y, 1, 0)이라고 가정하고 (X는 0 또는 1일수밖에 없음) X가 1이었다가 0으로 바뀌었다는 가정하에, X가 1이었을때의 봉들 중 가장 작은 거래량을 가진 봉의 저가 <--var1에 넣고싶습니다. X가 0이었다가 1로 바뀌었다면, x가 0이었을떄의 봉들 중 가장 작은 거래량을 가진 봉의 저가 <-- var2에 넣고싶습니다 var2에 새로운 값이 저장되어있는 상태이고, 다시 x가 1이었다가 0으로 바뀌면, var1에 바로 전에 x가 1인 상황이었을때 만들어진 가장 작은 거래량을 가진 봉의 저가 값'을 다시 넣고, 그 전에 있던 var1 값은 var3에 저장이 되었으면 좋겠습니다. var1에 새로운 값이 저장되어있고, x가 0이었다가 다시 1로 바뀌면, var2의 x가 1이었을때 만들어진 가장 적은 거래량을 가진 봉의 저가 값을 넣고, 그 전에있던 var2는 var4에 저장되었으면 좋겠습니다. 이렇게 하면 홀수 var에는 x가 1이었을때 값이 계속 갱신되었으면 좋겠습니다. , 짝수 var에는 x가 0이었을때의 값들이 계속 갱신되었으면 좋겠습니다. 홀수, 짝수 var들은 위와 같은 갱신은 10번까지 할 수 있도록 도와주세요(var 값은 계속 바뀌지만 실제 사용은 홀수당 10개, 짝수당 10개까지 할 수 있도록) 부탁드립니다.
프로필 이미지
이만스닥
2022-11-03
1003
글번호 163500
시스템
답변완료

문의드립니다.

안녕하세요 사진파일 처럼 빨간 화살표 부분 사각 박스를 그린후 박스 시작세로선과 박스 끝세로선이 캔들의 세로부분 중심부분부터 그려지는데요. 검은색으로 빗금친 부분부터 그릴 수 있을까요? 시작세로선이 캔들의 맨 왼쪽 끝세로선이 캔들의 맨오른쪽까지 그릴 수 있을까요? 감사합니다. if cond1 == True Then { if cond1[1] == False Then { Box1 = Box_New(sDate,sTime,Value10,NextBarSdate,NextBarStime,H); Box_SetColor(Box1,Black); Box_SetFill(Box1,True,70,True); } Else { Box_SetEnd(Box1,sDate,sTime,O); } }
프로필 이미지
올독
2022-11-03
783
글번호 163496
지표
답변완료

추세선 쓰리바닥

input : Period(12),선두께(1); Var:상승색(Red), 하락색(Blue); Var:j(0),T(0); Var: date11(0),date12(0),time11(0),time12(0),TL1(0),TL(0), date21(0),date22(0),time21(0),time22(0), date31(0),date32(0),time31(0),time32(0),tx(0),tx1(0),tl4(0); Array:HiVal[20](0),LoVal[20](0),HiBar[20](0),LoBar[20](0)/*,ZZ[20](0)*/; Array:r[7](0),fr[7](0),TL2[7](0),TL3[7](0),TX2[7](0),TX3[7](0); r[0] = 0; r[1] = 2; r[2] = 3.; r[3] = -1; r[4] = -2.; r[5] = 1; r[6] = 0.5; For j = 0 To 19 { HiBar[j] = HiBar[j] + 1; LoBar[j] = LoBar[j] + 1; } if crossup(c,highest(H,Period)[1]) Then T = 1; if CrossDown(c,Lowest(L,Period)[1]) Then T = -1; If T == -1 Then { If T[1] != -1 Then { For j = 18 DownTo 0 { LoVal[j+1] = LoVal[j]; LoBar[j+1] = LoBar[j]; //ZZ[j+1] = ZZ[j]; } LoVal[0] = L; LoBar[0] = 0; //ZZ[0] = L; date11 = date[HiBar[0]]; time11 = stime[HiBar[0]]; Value11 = HiVal[0]; date12 = date[LoBar[0]]; time12 = stime[LoBar[0]]; Value12 = LoVal[0]; TL_Delete(tl); TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen); TL1 = TL_New(date11,time11,Value11,date12,time12,Value12); TL_SetColor(TL1,하락색); Tx = Text_New(date11,time11,Value11,"●"); #동그라미 색상, 빨강 Text_SetColor(Tx,Blue); Text_SetStyle(Tx,2,2); Text_SetSize(tx,7); //tx = Text_New(date11,time11,Value11,NumToStr(value11,2)+NewLine+NumToStr(value11,2)+NewLine); //Text_SetStyle(tx,2,1); date21 = date[HiBar[0]]; time21 = stime[HiBar[0]]; date22 = date[0]; time22 = stime[0]; for j = 0 to 6 { fr[j] = LoVal[1] + ((HiVal[0] - LoVal[1]) * r[j]); } #TL2[1] = TL_New(date21,time21,fr[1],date22,time22,fr[1]); #TL_SetColor(TL2[1],RED); #TL_SetStyle(TL2[1], 3); #TL2[2] = TL_New(date21,time21,fr[2],date22,time22,fr[2]); #TL_SetColor(TL2[2],RED); #TL_SetSize(TL2[2],1); #TX2[2] = Text_New(date22,time22,fr[2],NumToStr(fr[2],2)); #Text_SetColor(Tx2[2],BWHITE); #Text_SetStyle(TX2[2],1,1); #TL2[3] = TL_New(date21,time21,fr[3],date22,time22,fr[3]); #TL_SetColor(TL2[3],RED); #TL_SetStyle(TL2[3], 3); #TL2[4] = TL_New(date21,time21,fr[4],date22,time22,fr[4]); #TL_SetColor(TL2[4],RED); #TL_SetSize(TL2[4],1); #TX2[4] = Text_New(date22,time22,fr[4],NumToStr(fr[4],2)); #Text_SetColor(Tx2[4],BWHITE); #Text_SetStyle(TX2[4],1,0); } If LoVal[0] > L Then { LoVal[0] = L; LoBar[0] = 0; //ZZ[0] = L; date12 = date[LoBar[0]]; time12 = stime[LoBar[0]]; Value12 = LoVal[0]; TL_SetEnd(TL1, date12,time12,Value12); date22 = date[0]; time22 = stime[0]; TL_SetEnd(TL2[0],date22,time22,fr[0]); TL_SetEnd(TL2[1],date22,time22,fr[1]); TL_SetEnd(TL2[2],date22,time22,fr[2]); Text_SetLocation(TX2[2],date22,time22,fr[2]); TL_SetEnd(TL2[3],date22,time22,fr[3]); TL_SetEnd(TL2[4],date22,time22,fr[4]); Text_SetLocation(TX2[4],date22,time22,fr[4]); TL_SetEnd(TL2[5],date22,time22,fr[5]); TL_SetEnd(TL2[6],date22,time22,fr[6]); TL_Delete(tl); TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen); } } If T == 1 Then { If T[1] != 1 Then { For j = 18 DownTo 0 { HiVal[j+1] = HiVal[j]; HiBar[j+1] = HiBar[j]; //ZZ[j+1] = ZZ[j]; } HiVal[0] = H; HiBar[0] = 0; //ZZ[0] = H; date11 = date[LoBar[0]]; time11 = stime[LoBar[0]]; Value11 = LoVal[0]; date12 = date[HiBar[0]]; time12 = stime[HiBar[0]]; Value12 = HiVal[0]; TL_Delete(tl); TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen); TL1 = TL_New(date11,time11,Value11,date12,time12,Value12); TL_SetColor(TL1,상승색); Tx1 = Text_New(date11,time11,Value11,"●"); #동그라미 색상, 파랑 Text_SetColor(Tx1,Red); Text_SetStyle(Tx1,2,2); Text_SetSize(tx1,7); //tx = Text_New(date11,time11,Value11,NewLine+NumToStr(value11,2)+NewLine+NumToStr(value11,2)); //Text_SetStyle(tx,2,0); date31 = date[LoBar[0]]; time31 = stime[LoBar[0]]; date32 = date[0]; time32 = stime[0]; for j = 0 to 5 { fr[j] = LoVal[0] + ((HiVal[1] - LoVal[0]) * r[j]); } } If HiVal[0] < H Then { HiVal[0] = H; HiBar[0] = 0; //ZZ[0] = H; date12 = date[HiBar[0]]; time12 = stime[HiBar[0]]; Value12 = HiVal[0]; TL_SetEnd(TL1, date12,time12,Value12); date32 = date[0]; time32 = stime[0]; TL_SetEnd(TL3[0],date32,time32,fr[0]); TL_SetEnd(TL3[1],date32,time32,fr[1]); TL_SetEnd(TL3[2],date32,time32,fr[2]); Text_SetLocation(TX3[2],date32,time32,fr[2]); TL_SetEnd(TL3[3],date32,time32,fr[3]); TL_SetEnd(TL3[4],date32,time32,fr[4]); Text_SetLocation(TX3[4],date32,time32,fr[4]); TL_SetEnd(TL3[5],date32,time32,fr[5]); TL_SetEnd(TL3[6],date32,time32,fr[6]); TL_Delete(tl); TL = TL_New(sdate,stime,Value12,NextBarSdate,NextBarStime,NextBarOpen); } } TL_SetSize(TL1,선두께); //TL_SetEnd(tl,NextBarSdate,NextBarStime,NextBarOpen); 0.35p 내에서 쓰리바닥을 형성하는지를 실시간으로 보기위한 지표입니다. 1.추세선이 음전환될 때, 직전저점과 전전저점의 차이가 상하 관계없이 0.35p 이내이면 상단에 동그라미 표시. 2.동그라미 삭제 시점:직전저점과 전전저점 중에 "높은 저점"을 기준으로하여 가.아래로 -0.35p 도달 전에 양전환시. 나.계속 하락하여 -0.35p를 하향 붕괴할 때. (동그라미는 생성과 삭제를 반복합니다.) 감사합니다.
프로필 이미지
고성
2022-11-03
918
글번호 163495
지표
답변완료

타주기 참조 시스템의 연산 속도를 높이려면 ?

안녕하세요. 1. 예스트레이더에서 기본 10틱 차트에 Data2 에는 4분봉을 설정하고, 4분봉이 완성되면 지표 를 계산하여 틱차트에서 매매를 하는 시스템입니다. 지표가 연산을 많이 해야 해서 4분봉이 완성되었을 때 한번만 연산을 하게 만들고 싶습니다. 아래 시스템을 시뮬레이션 해보면 4분에 한 번씩 제대로 실행하고 있지만, 전략실행차트에서 실행을 하면 bn4 는 맞게 나오는 반면, MessageLog 가 틱봉마다 계속 프린트 되고 있습니다. MessageLog만 나오고 실제 연산은 제가 원하는 대로 4분에 한번만 하고 있는 걸까요? 만약 연산이 계속 되고 있다면 연산을 한번만 할 수 있도록 수식을 수정해 주시면 감사하겠습니다. 만약 연산이 4분에 한번만 이루어지고 있다면 틱 처리 속도를 높이기 위해 컴퓨터나 예스트레이더의 설정을 바꿔 줘야 하는 부분이 있다면 알려 주시면 감사하겠습니다. vars: T4(0), bn4(0); T4 = Data2(sTime); if (T4 != T4[1]) Then { MessageLog("%.0f %.0f T4 %.0f %.0f bn4 %.0f C4 %.2f", Date, Time, T4[1], T4, bn4, Data2(C[1])); bn4 = bn4 + 1; // 4분봉 barIndex //여기에 연산식이 있습니다 } 2. 하이투자증권예스트레이더에 64비트용이 있던데 여기서 해외선물(E-mini S&P 500, E-mini Nasdaq 100 등) 거래가 가능한가요? 감사합니다.
프로필 이미지
gemini
2022-11-03
980
글번호 163494
시스템
답변완료

제 수식작성 구성 방식이 잘못되었나요

수식 코드 중에 아래의 수식이 들어가면 검색이 되고 이 수식을 빼면 검색이 되지 않습니다. 혹시 제가 작성하는 수식 방식에 문제가 있나요??? if ( V > nMav * 0.08 ) Then { Find(0); } 3분봉 기준으로 당일 고가를 돌파하는 종목을 검색하는 수식입니다. 당일 분봉에서만 검색하고 싶고요. 제가 작성하는 방식이 잘못된건가요?? /////////////////////////////////////////////////////////////////// //// 종목검색 수식.... input : TargetDate(20221103); var : nCnt(0), nSum(0), nMav(0), nMav1(0), nMav2(0), nMav3(0); var : dwCloseRate(0), dwLowRate(0), dwLowCloseRate(0), dwAdjustedRate(0), dwRate(0); var : bIsCond1(False), bIsCond2(False), bIsCond3(False), bIsCond4(False), bIsCond5(False); var : nCondTime1(0), nCondTime2(0); ////////////////////////////////////////////////////////////////////////////////// ////// 전역변수 설정. ////// ////// var1 ==> 당일 캔들 인덱스.... ////// var2 ==> 과거 (10/20/40일) 최소 일평균거래량 ////// var3 ==> 당일 종가 상 고가 캔들 Index ////// var4 ==> ////// Var5 ==> ////// var6 ==> ////// var7 ==> ////// var8 ==> 5EMA의 20EMA 이탈 캔들 Index ////// var9 ==> 5EMA의 60EMA 이탈 캔들 Index ////// var10 ==> 과거 일평균거래량 대비 당일 거래량 비율 ////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////// ///// DataCompress = (0:틱, 1:초, 2:분, 3:일, 4:주, 5:월......) if ( date != date[1] && date == TargetDate) Then { nSum = 0; For nCnt = 1 to 40 { nSum = nSum + DayVolume(nCnt); if nCnt == 10 Then nMav1 = INT(nSum / 10); Else if nCnt == 20 Then nMav2 = INT(nSum / 20); Else if nCnt == 40 Then nMav3 = INT(nSum / 40); } ////////////////////////////////////////////////////////////////////////// //// 3분봉 기준으로으로 캔들 평균거래량 nMav = Min(nMav1, nMav2, nMav3); var3 = 1; var4 = H; Var5 = 0; Var6 = 0; bIsCond1 = False; bIsCond2 = False; bIsCond3 = False; bIsCond4 = False; bIsCond5 = False; } else if ( date == TargetDate && nMav > 80000 ) Then { dwRate = (C - C[1])/C[1]*100; dwCloseRate = (C - DayClose(1))/DayClose(1)*100; dwLowRate = (DayLow(0) - DayClose(1))/DayClose(1)*100; dwLowCloseRate = (DayClose(0) - DayLow(0))/DayLow(0)*100; //////////////////////////////////////////////////// ///// 이 코드가 들어가면 검색이 되고 이 코드를 빼면 검색이 되지 않아요. ///// 전혀 의미없는 코드 같은데....... if ( V > nMav * 0.08 ) Then { Find(0); } ////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////// ////// 장시작 후 하락하다가 고점 돌파 후 상승전환 한 경우..... if ( C > H[Var3] && sTime >= 090900 && sTime <= 113000 && bIsCond1 == False ) Then { if ( dwCloseRate > 0 && dwLowRate < 0 && dwLowCloseRate > 1.5 ) Then { nCondTime1 = sTime; bIsCond1 = True; } } //////////////////////////////////////////////////////////////////////////////////////////// ////// 장시작 직후(10시이전) 거래량을 수반하면서 캔들 등락률이 1% 이상..... if ( C > H[Var3] && sTime >= 090900 && sTime <= 100100 && bIsCond2 == False ) Then { if ( dwRate > 0.8 && dwCloseRate > 0 && (V > DayVolume(1)*0.1 || V > nMav/125*5) ) Then { nCondTime2 = sTime; bIsCond2 = True; } } if ( bIsCond1 == TRUE ) Then Find(nCondTime1); if ( bIsCond2 == TRUE ) Then Find(nCondTime2); if ( H >= H[Var3] ) Then { Var3 = 1; } Else { Var3 = var3+1; } }
프로필 이미지
태공
2022-11-04
895
글번호 163493
종목검색
답변완료

MACD + 스토캐스틱 수식 질문입니다.

질문 드립니다! 하고싶은 액션은, · 스토캐스틱 %D가 과매수 구간 퇴장 후, B)%K가 %D를 하향돌파 & C)MACD가 시그널 선을 하향돌파 시 매도 · 스토캐스틱 %D가 과매도 구간 퇴장 후, B)%K가 %D를 상향돌파 & C)MACD가 시그널 선을 상향돌파 시 매수 여기서 주의점은 1) A)와C)는 누가 먼저 나오든 신호가 켜진 상태 2) 단 B)는 A)신호가 나온 후의 것만 신호접수 (ex.과매수 구간에서 이미 나온 %K %D교차는 무시) -> 2)의 코딩을 잘 못하겠어서 도움을 요청드립니다. 아래는 사용한 코딩식입니다. Var1 = StochasticsK(12,5); Var2 = StochasticsD(12,5,5); Var3 = MACD(12,26); Var4 = Ema(Var3,9); # %D 과열구간 내 추세전환(변곡점) 후, %K %D교차 if CrossDown(Var2, 80) then if CrossDown(Var1,Var2) Then Condition1 = True; if CrossDown(Var2,20) Then Condition1 = False; if CrossUp(Var2, 20) then if CrossUp(Var1,Var2) Then Condition2 = True; if Crossup(Var2,80) Then Condition2 = False; # 매수 if Condition1 == True && CrossDown(Var3,Var4) Then Sell(); # 매도 if Condition2 == True && CrossUp(Var3,Var4) Then Buy();
프로필 이미지
tsys7
2022-11-02
1182
글번호 163492
시스템
답변완료

수식 문의 드립니다

Inputs: VtyPercent(0.75),ATRperiod(5); If MarketPosition() <> 1 Then Buy ("Vty_LE", AtStop, Close + (VtyPercent * ATR(ATRperiod))); If MarketPosition() <> -1 Then Sell ("Vty_SE)", AtStop, Close - (VtyPercent * ATR(ATRperiod))); 위 수식어에 해외선물 매매시간을 19:00 ~ 익일 05:30 와 손절100틱 추가의 수식어를 부탁드립니다. ----------------------- input : Period(12),선두께(2); Var:하락색(Red), 상승색(Blue); Var:j(0),T(0); Var: date11(0),date12(0),time11(0),time12(0),TL1(0),TL(0), date21(0),date22(0),time21(0),time22(0), date31(0),date32(0),time31(0),time32(0),tx(0),tx1(0),tl4(0); Array:HiVal[20](0),LoVal[20](0),HiBar[20](0),LoBar[20](0)/*,ZZ[20](0)*/; Array:r[7](0),fr[7](0),TL2[7](0),TL3[7](0),TX2[7](0),TX3[7](0); var : box(0),box1(0); r[0] = 0; r[1] = 2; r[2] = 3.; r[3] = -1; r[4] = -2.; r[5] = 1; r[6] = 0.5; For j = 0 To 19 { HiBar[j] = HiBar[j] + 1; LoBar[j] = LoBar[j] + 1; } if crossup(c,highest(H,Period)[1]) Then T = 1; if CrossDown(c,Lowest(L,Period)[1]) Then T = -1; If T == -1 Then { If T[1] != -1 Then { For j = 18 DownTo 0 { LoVal[j+1] = LoVal[j]; LoBar[j+1] = LoBar[j]; //ZZ[j+1] = ZZ[j]; } LoVal[0] = L; LoBar[0] = 0; //ZZ[0] = L; date11 = date[HiBar[0]]; time11 = stime[HiBar[0]]; Value11 = HiVal[0]; date12 = date[LoBar[0]]; time12 = stime[LoBar[0]]; Value12 = LoVal[0]; date21 = date[HiBar[0]]; time21 = stime[HiBar[0]]; date22 = date[0]; time22 = stime[0]; for j = 0 to 6 { fr[j] = LoVal[1] + ((HiVal[0] - LoVal[1]) * r[j]); } box = box_new(date11,time11,Value11,date12,time12,Value12); Box_SetColor(box,상승색); Box_SetFill(box,true); } If LoVal[0] > L Then { LoVal[0] = L; LoBar[0] = 0; //ZZ[0] = L; date12 = date[LoBar[0]]; time12 = stime[LoBar[0]]; Value12 = LoVal[0]; date22 = date[0]; time22 = stime[0]; Box_SetEnd(box,date12,time12,Value12); } } If T == 1 Then { If T[1] != 1 Then { For j = 18 DownTo 0 { HiVal[j+1] = HiVal[j]; HiBar[j+1] = HiBar[j]; //ZZ[j+1] = ZZ[j]; } HiVal[0] = H; HiBar[0] = 0; //ZZ[0] = H; date11 = date[LoBar[0]]; time11 = stime[LoBar[0]]; Value11 = LoVal[0]; date12 = date[HiBar[0]]; time12 = stime[HiBar[0]]; Value12 = HiVal[0]; date31 = date[LoBar[0]]; time31 = stime[LoBar[0]]; date32 = date[0]; time32 = stime[0]; for j = 0 to 5 { fr[j] = LoVal[0] + ((HiVal[1] - LoVal[0]) * r[j]); } box = box_new(date11,time11,Value11,date12,time12,Value12); Box_SetColor(box,하락색); Box_SetFill(box,true); } If HiVal[0] < H Then { HiVal[0] = H; HiBar[0] = 0; //ZZ[0] = H; date12 = date[HiBar[0]]; time12 = stime[HiBar[0]]; Value12 = HiVal[0]; TL_SetEnd(TL1, date12,time12,Value12); date32 = date[0]; time32 = stime[0]; Box_SetEnd(box,date12,time12,Value12); } } ---------------------- 위 수식어와 그래프는 좀전 고성님이 올리신 추세선지표 입니다. 시스템으로 변경하고자 합니다. 적색 시작 싯점 이후 파란색 시작전까지 바이 청산 파란색 시작 싯점 이후 적색 시작전까지 셀 청산의 시스템을 넣고자합니다. 매매시간은 07:00~ 익일05:55 손절 50틱
프로필 이미지
푸른
2022-11-03
1235
글번호 163491
시스템
답변완료

79419 시스템 검토및 수정 부탁드립니다

### 다시부탁 드려요 과거의 신호도 부탁 드려요 @@@@ 79419 번입니다 1,번 input : length(12),reverse(false); var : hh(0),ll(0),ps(0),pssig(0); hh = highest(high, length); ll = lowest(low, length); if C > hh[1] Then ps = 1; if C < ll[1] Then ps = -1; pssig = iff(reverse and ps == 1, -1, iff(reverse and ps == -1, 1, ps)); if pssig == 1 then buy(); if pssig == -1 then sell(); 2,번 input : Period1(5),Period2(10),d1(2),period(40); var : RSIv(0),rsis(0),stdv(0),t1(0),t2(0),b(0),s(0); RSIv = RSI(Period1); RSIs = ema(RSIv,period2); stdv = std(rsiv,period2); t1 = ema(ema(ema(C,5),5),5); t2 = ema(ema(ema(C,10),10),10); var1 = lrl(c,period)+lrs(c,period); b = 0; if RSIV > rsis+d1*stdv Then b = b+1; if t1 > t2 Then b = b+1; if var1 > var1[1] Then b = b+1; s = 0; if RSIV < rsis-d1*stdv Then s = s+1; if t1 < t2 Then s = s+ 1; if var1 < var1[1] Then s = s+ 1; if b >= 2 Then buy(); if s >= 2 Then sell(); 3,번 Input : Period(3),Period1(4),Period2(5),Period3(6),Period4(7), LPercent(30), SPercent(65); var : Relative(0),Relative1(0),Relative2(0),Relative3(0),Relative4(0); Relative = RSI(Period); Relative1 = RSI(Period1); Relative2 = RSI(Period2); Relative3 = RSI(Period3); Relative4 = RSI(Period4); Var : value(0); value = RSI(Period); # 매수/매도청산 If Relative > 65 && Relative1 > 65 && Relative2 > 65 && Relative3 > 65 && Relative4[1] < 65 && CrossUP(Relative4, sPercent) Then { Buy(); } # 매도/매수청산 If CrossDown(Relative1, lPercent) Then { Sell(); } 4,번 input : dayLen(18); var : ii(0); Var1 = (close - close[DayLen - 1]) / (DayLen - 1); Var2 = 0; For ii = 2 To DayLen - 1 begin Var2 = Var2 + abs(close[DayLen - ii] - Close[DayLen - 1] - (ii - 1) * Var1); end; If Var2 <> 0 Then { If DayLen / 2 == 0 Then Var3 = accumN(close, DayLen) - DayLen * close[DayLen - 1] - (DayLen * (DayLen - 2) / 2 + DayLen / 2) * Var1; Else Var3 = accumN(close, DayLen) - DayLen * close[DayLen - 1] - DayLen * (DayLen - 1) / 2 * Var1; If Var3 > 0 Then Var4 = (Var2 - Var3) / 2 + Var3; Else Var4 = (Var2 + Var3) / 2; Var5 = Var4 / Var2 * 100; If Var1 > 0 And Var5 < 20 Then buy("매수", Atmarket); If Var1 < 0 And Var5 > 80 Then sell("매도", Atmarket); } 위 1번 2번 3번 4번 시스템을 하나로 부탁드립니다 ## 각각의 신호에 번호 부여 부탁 드립니다 ## 첨부사진1 1 2 3 4 시스템 인데 과거 신호 두 없네요 첨부사진2 1번은 오늘만들어주신호 옆사진은 신호식 1번 인데 매수신호가 1과 2번 신호가 상이하네요
프로필 이미지
매치다는
2022-11-02
1075
글번호 163490
시스템
답변완료

수정부탁드립니다

강조 부탁 드립니다. Input : short(12), long(26), signal(9); Var : MACDV(0),MACDS(0),MACDO(0),TX(0); var : TL(0),T(0); MACDV = MACD(short, long); MACDV = ema(MACDV,signal); MACDO = MACDV-MACDS; plot1(MACDV,"MACD"); 2)강조식 부탁 드립니다. inputs: bATRLength1(100), bATRMult1(2.9); vars: bATR1(0), bavg1(0), bdn1(0), bup1(0), btrend1(1), bflag1(0), bflagh1(0), bqqq1(0); bATR1 = ATR(bATRLength1) * bATRMult1; bavg1 = (High + Low)/2; bup1 = bavg1 + bATR1; bdn1 = bavg1 - bATR1; if close > bup1[1] then btrend1 = 1; else if close < bdn1[1] then btrend1 = -1; if btrend1 < 0 and btrend1[1] > 0 then bflag1 = 1; else bflag1 = 0; if btrend1 > 0 and btrend1[1] < 0 then bflagh1 = 1; else bflagh1 = 0; if btrend1 > 0 and bdn1 < bdn1[1] then bdn1=bdn1[1]; if btrend1 < 0 and bup1 > bup1[1] then bup1=bup1[1]; if bflag1 == 1 then bup1 = bavg1 + bATR1; if bflagh1 == 1 then bdn1 = bavg1 - bATR1; if btrend1 == 1 then bqqq1 = bdn1; else bqqq1 = bup1; Plot1(bqqq1,"bqqq1",iff(btrend1 == 1, Red, Blue)); //plot2(MACDS,"MACD cc"); if MACDO > 0 then { IF MACDO >= MACDO[1] Then { T = 1; plot3(MACDO,"c1",RED); } Else { T = 2; plot3(MACDO,"c1",BLUE); } } else { IF MACDO <= MACDO[1] Then { T = -1; plot3(MACDO,"c1",BLACK); } Else { T = -2; plot3(MACDO,"c1",GREEN); } }
프로필 이미지
외국인
2022-11-02
1074
글번호 163483
강조