커뮤니티

예스랭귀지 Q&A

글쓰기
답변완료

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

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

안녕하세요

당일청산 관련하여 문의드립니다. 전략이 현재 setendofday로 당일청산으로 설정되어 있는데요. 3시에 청산하기위하여 셋팅을 맞췄는데 저번주 금요일 처음으로 청산이 안됐네요 직접 모니터링 중이었는데 hts 상으로는 분명히 신호가 발생했다고 나오는데 장마감 후 보니 미결제 주문 목록에 주문이 접수가 안되있고 청산도 안됐네요. 어떤 케이스인가요?
프로필 이미지
열공이삼삼
2015-04-06
230
글번호 84757
시스템
답변완료

문의드립니다

일봉 5이평이 20이평을 상향하고 주봉 5이평이 60이평을 상향할 때 매수하라
프로필 이미지
회원
2015-04-06
191
글번호 84756
시스템

회원 님에 의해서 삭제되었습니다.

프로필 이미지
회원
2015-04-06
0
글번호 84755
지표
답변완료

질문있습니다.

지표의 봉 위에 텍스트 표시를 하고 싶습니다. 텍스트 표시는 분봉, 일봉, 주봉과 무관하게 표시가 가능해야 합니다. 1. 과거 봉이 "사용자지표식"보다 위에 있으면서 하강추세로 내려오다가 현재 봉이 "사용자지표식"과 만났을때 "텍스트 표시 안함" 과거 봉이 "사용자지표식"보다 아래에 있으면서 상승추세로 올라오다가 현재 봉이 "사용자지표식"과 만났을때 "텍스트 표시" 과거 봉 및 현재 봉이 "사용자지표식" 위에 있으면 텍스트 표시 안함. 즉, 봉이 상승추세만 표시O, 하강추세이면 표시X 첨부파일 : 지표.jpg 참조 2. 과거 봉이 "사용자지표식"보다 위에 있으면서 하강추세으로 내려오다가 현재 봉이 "사용자지표식"과 만났을때 "텍스트 B 표시" 과거 봉이 "사용자지표식"보다 아래에 있으면서 상승추세으로 올라오다가 현재 봉이 "사용자지표식"과 만났을때 "텍스트 A 표시" 첨부파일: 지표AB.jpg 참조) 예스렝기지에서 과거봉의 상승/하강추세를 판단하는 함수가 있는지 모르겠습니다. 예를 들어 3봉전이 2봉전보다 높고 2봉전이 1봉전보다 높고 1봉전이 현재봉보다 높으면 표시라는 방식으로 식을 만드신다면, 봉갯수를 사용자가 선언할 수 있도록 변수로 해주세요. 상승/하강 추세 sensing은 봉 3개로 추세판단을 하겠다. 라는 의미입니다. 만약 과거봉의 상승/하강 추세를 판단하는 다른 수식이 있다면 해석할 수 있게 주석으로 표현해주십시오. 감사합니다.
프로필 이미지
만들레영토
2015-04-05
475
글번호 84754
지표
답변완료

수직선수식 부탁드립니다.

수고 많으십니다. 첨부 수식을 이용하여 Var1이 상승하다가 하락하거나 하락하다가 상승할 때 (즉 방향이 바뀌는 시점에) Data1챠트에 수직선을 그어서 보이는 식을 부탁드립니다. 가능할지 모르겠는데요, 주가가 하락할때는 파란수직선, 상승할때는 빨간수직선으로 표시되면 더욱 좋겠습니다. 감사합니다. # 첨부 # var1 = data4(Highest(V,10)); plot1(var1,"10봉간 최대거래량" );
프로필 이미지
회원
2015-04-05
252
글번호 84753
지표
답변완료

지표숫자이상

그림과 같이 CME 크루드 오일과 ICE 브렌트 크루드 오일을 data1,dat2에 놓고 두개의 가격차이를 구하는 지표를 구성했는데 차이가 틀리게 나옵니다. 전략실행에서는 되는데 시뮬레이션차트에서는 안되는데 이유가 무었인지요 식은 다음과 같습니다. ==================================================================================== var : aa(0),Period2(1500); aa = Data1(c) - Data2(C); Plot1(aa);
프로필 이미지
쿠리
2015-04-05
244
글번호 84752
지표
답변완료

시스템 수식 수정부탁드립니다.

아래의 수식을 시초가에 갭상승이 발생한 날만 진입할수 있도록 수정해 주시면 감사하겠습니다. ㅎㅎ - 아 래 - var : 상한가(0), UpLimit(0); var : up1(0), up2(0), up3(0), up4(0), up5(0),up6(0),Up7(0); var : stok(0),stod(0); var : Entry(0),GoldenCross(0); stok = StochasticsK(20,12); stod = StochasticsD(20,12,12); if date >= 19981207 then { if date < 20050328 && CodeCategory() == 2 then UpLimit = (BP[0] * 1.12); Else UpLimit = (BP[0] * 1.15); if CodeCategory() == 2 then { if date >= 20030721 then { up1 = int(UpLimit/100+0.00001)*100; up2 = int(UpLimit/100+0.00001)*100; up3 = int(UpLimit/100+0.00001)*100; up4 = int(UpLimit/50+0.00001)*50; up5 = int(UpLimit/10+0.00001)*10; up6 = int(UpLimit/5+0.00001)*5; up7 = int(UpLimit/1+0.00001)*1; } else { up1 = int(UpLimit/1000+0.00001)*1000; up2 = int(UpLimit/500+0.00001)*500; up3 = int(UpLimit/100+0.00001)*100; up4 = int(UpLimit/50+0.00001)*50; up5 = int(UpLimit/10+0.00001)*10; up6 = int(UpLimit/10+0.00001)*10; up7 = int(UpLimit/1+0.00001)*1; } } Else { up1 = int(UpLimit/1000+0.00001)*1000; up2 = int(UpLimit/500+0.00001)*500; up3 = int(UpLimit/100+0.00001)*100; up4 = int(UpLimit/50+0.00001)*50; up5 = int(UpLimit/10+0.00001)*10; up6 = int(UpLimit/5+0.00001)*5; up7 = int(UpLimit/1+0.00001)*1; } if CodeCategory() == 1 || CodeCategory() == 2 then { if sdate < 20101004 Then{ If BP >= 500000 Then 상한가 = up1; Else If BP >= 100000 Then 상한가 = iff(up2>=500000, up1, up2); Else If BP >= 50000 Then 상한가 = iff(up3>=100000, up2, up3); Else If BP >= 10000 Then 상한가 = iff(up4>=50000, up3, up4); Else If BP >= 5000 Then 상한가 = iff(up5>=10000, up4, up5); Else If BP >= 1000 Then 상한가 = iff(up5>=5000, up5, up6); Else 상한가 = iff(up6>=1000, up6, up6); } Else{ If BP >= 500000 Then 상한가 = up1; Else If BP >= 100000 Then 상한가 = iff(up2>=500000, up1, up2); Else If BP >= 50000 Then 상한가 = iff(up3>=100000, up2, up3); Else If BP >= 10000 Then 상한가 = iff(up4>=50000, up3, up4); Else If BP >= 5000 Then 상한가 = iff(up5>=10000, up4, up5); Else If BP >= 1000 Then 상한가 = iff(up5>=5000, up5, up6); Else 상한가 = iff(up6>=1000, up6, up7); } } else if CodeCategory() == 8 || CodeCategory() == 9 then { // ETF 상한가 = up6; } } if date != date[1] Then{ Entry = 0; GoldenCross = 0; } if CurrentContracts > CurrentContracts[1] Then Entry = Entry+1; if Entry == 0 Then{ if crossup(stok,stod) Then{ GoldenCross = GoldenCross+1; if GoldenCross == 1 Then buy("매수"); } } if MarketPosition == 1 Then{ ExitLong("매도",AtStop,highest(H,BarsSinceEntry)*0.94); ExitLong("상한가매도",Atlimit,상한가); } SetStopEndofday(144800);
프로필 이미지
회원
2015-04-05
190
글번호 84751
시스템
답변완료

복합시스템식 부탁합니다

지그재그패턴과 중단기추세의 신호가 동시에 발생하는 캔들을 시스템식으로 만들어주세요. 다음은 시스템식입니다 지그재그패턴= Input:length(5); Var:j(0),lastHiVal(0),lastLoVal(0),turnPntBit(""),TL1(0); Array:valArr[10](0),barArr[10](0),turnPntArr[10](""); // 봉이 새로 생겼으므로 봉개수 관리하는 변수들의 봉개수 값 1씩 증가 For j = 0 To 9 { barArr[j] = barArr[j] + 1; } // 고점조건 = 현재 봉의 고가가 기간최고가이면서 최고가 갱신되었을 때; // 저점조건 = 현재 봉의 저가가 기간최저가이면서 최저가 갱신되었을 때; // 고점,저점조건 만족시 현재 봉의 고[저]가를 변수에 저장 Condition1 = Highest(H,length) == H and lastHiVal <> H; Condition2 = Lowest(L,length) == L and lastLoVal <> L; If Condition1 Then lastHiVal = H; If Condition2 Then lastLoVal = L; // 전환점구분 null값으로 초기화; turnPntBit = ""; // if 고점조건, 저점조건 동시 만족시 then // if 이전 고점,저점 범위를 모두 벗어났을 때 // 전환점구분 = 고저점; // else if 이전 고점을 갱신했다면 전환점구분 = 고점; // else if 이전 저점을 갱신했다면 전환점구분 = 저점; // else if 고점조건 만족하면 전환점구분 = 고점; // else if 저점조건 만족하면 전환점구분 = 저점; If Condition1 and Condition2 Then { If Max(valArr[1],valArr[2]) < H and Min(valArr[1],valArr[2]) > L Then turnPntBit = "HiLo"; Else If Max(valArr[1],valArr[2]) < H Then turnPntBit = "Hi"; Else If Min(valArr[1],valArr[2]) > L Then turnPntBit = "Lo"; } Else If Condition1 Then turnPntBit = "Hi"; Else If Condition2 Then turnPntBit = "Lo"; // if 전환점구분에 값이 있을 때만 then 아래 실행, 없으면 통과 If turnPntBit <> "" Then { // if 전환점구분이 고저점이면 then // 이전 파동은 연장시키고 아래에서 새로이 파동선을 추가토록 한다. If turnPntBit == "HiLo" Then { valArr[1] = IFF(turnPntArr[1] == "Hi",H,L); barArr[1] = 0; TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]); If turnPntArr[1] == "Hi" Then turnPntBit = "Lo"; Else turnPntBit = "Hi"; } // if 신규 전환점구분이 현재(전환점배열 1번째)와 다르면 then // 배열값들을 이전값으로 Move; If turnPntBit <> turnPntArr[1] Then { for j = 8 downto 1 { valArr[j+1] = valArr[j]; barArr[j+1] = barArr[j]; turnPntArr[j+1] = turnPntArr[j]; } } // if 전환점구분이 바뀌었거나 또는 // (전환점구분은 안바뀌었는데 // (이전 고점보다 높은 고점이 발생했거나 또는 // 이전 저점보다 낮은 저점이 발생했으면)) then If turnPntBit <> turnPntArr[1] or (turnPntBit == turnPntArr[1] and ((turnPntBit == "Hi" and valArr[1] < H) or (turnPntBit == "Lo" and valArr[1] > L))) Then { // 값 배열에는 고점 또는 저점을 대입; // 봉개수 배열에는 0값 대입; // 전환점 배열에 전환점구분값을 대입; valArr[1] = IFF(turnPntBit == "Hi",H,L); barArr[1] = 0; turnPntArr[1] = turnPntBit; // if 이전봉대비 전환점구분이 바뀌었다면 추세선 새로 그리고; // else 전환점구분이 안바뀌었으면 값만 바뀐거므로 추세선 연장; If turnPntArr[1][1] <> turnPntArr[1][0] Then{ TL1 = TL_New(sDate[barArr[2]],sTime[barArr[2]],valArr[2],sDate[barArr[1]],sTime[barArr[1]],valArr[1]); if turnPntArr[1] == "Hi" Then buy(); if turnPntArr[1] == "Lo" Then sell(); } Else TL_SetEnd(TL1,sDate[barArr[1]],sTime[barArr[1]],valArr[1]); } } 중단기추세= Input:n(5),미완성사용(1); Var:j(0),q(0),k(0),상단(200),하단(100),고점표시(0),저점표시(0),Exit(100), 고점갱신(False),저점갱신(False),중기고점갱신(False),중기저점갱신(False), 중기추세갱신(0),장기추세갱신(0), 단기상단기울기(0),단기상단Bar(0),단기상단절편(0),단기하단기울기(0), 단기하단Bar(0),단기하단절편(0), 중기상단기울기(0),중기상단Bar(0),중기상단절편(0),중기하단기울기(0), 중기하단Bar(0),중기하단절편(0), 장기상단기울기(0),장기상단Bar(0),장기상단절편(0),장기하단기울기(0), 장기하단Bar(0),장기하단절편(0), 단기상단채널(0),단기하단채널(0),중기상단채널(0),중기하단채널(0), 장기상단채널(0),장기하단채널(0); Array:고[50](0),저[50](0),고Bar[50](0),저Bar[50](0), 중기고[20](0),중기저[20](0),중기고Bar[20](0),중기저Bar[20](0), 장기고[20](0),장기저[20](0),장기고Bar[20](0),장기저Bar[20](0); #==========================================# # 초기처리 (Initialize Routine) #==========================================# for j = 1 to 19 { 고Bar[j] = 고Bar[j] + 1; 저Bar[j] = 저Bar[j] + 1; 중기고Bar[j] = 중기고Bar[j] + 1; 중기저Bar[j] = 중기저Bar[j] + 1; 장기고Bar[j] = 장기고Bar[j] + 1; 장기저Bar[j] = 장기저Bar[j] + 1; } for j = 20 to 49 { 고Bar[j] = 고Bar[j] + 1; 저Bar[j] = 저Bar[j] + 1; } 단기상단Bar = 단기상단Bar + 1; 단기하단Bar = 단기하단Bar + 1; 중기상단Bar = 중기상단Bar + 1; 중기하단Bar = 중기하단Bar + 1; 장기상단Bar = 장기상단Bar + 1; 장기하단Bar = 장기하단Bar + 1; 고점표시=(O[n]+C[n])/2; 저점표시=(O[n]+C[n])/2; #==========================================# # 단기 파동선 계산 #==========================================# # 전고점(Peak) 계산 #------------------------------------------# //Highest(H,2)[3] <= H[2] and H[2] > Highest(H,2) if Highest(H,n)[n+1] <= H[n] and H[n] > Highest(H,n) then { if 미완성사용 == 1 then { for j = 48 downto 1 { 고[j+1] = 고[j]; 고Bar[j+1] = 고Bar[j]; } 고[1] = H[n]; 고Bar[1] = n; 고점갱신 = True; 고점표시 = 고[1]*1.005; if 저Bar[1] > 고Bar[2] then { for j = 48 downto 1 { 저[j+1] = 저[j]; 저Bar[j+1] = 저Bar[j]; } k = n + 1; for j = n + 2 to 고Bar[2]-1 { if L[k] > L[j] then k = j; } 저[1] = L[k]; 저Bar[1] = k; } } if 미완성사용 == 0 then { if 고Bar[1] > 저Bar[1] then { for j = 48 downto 1 { 고[j+1] = 고[j]; 고Bar[j+1] = 고Bar[j]; } } if 고Bar[1] > 저Bar[1] or 고[1] <= H[n] then { 고[1] = H[n]; 고Bar[1] = n; 고점갱신 = True; 고점표시 = 고[1]*1.005; } } } #------------------------------------------# # 전저점(Trough) 계산 #------------------------------------------# //Lowest(L,2)[3] >= L[2] and L[2] < Lowest(L,2) if Lowest(L,n)[n+1] >= L[n] and L[n] < Lowest(L,n) then { if 미완성사용 == 1 then { for j = 48 downto 1 { 저[j+1] = 저[j]; 저Bar[j+1] = 저Bar[j]; } 저[1] = L[n]; 저Bar[1] = n; 저점갱신 = True; 저점표시 = 저[1]*0.995; if 고Bar[1] > 저Bar[2] then { for j = 48 downto 1 { 고[j+1] = 고[j]; 고Bar[j+1] = 고Bar[j]; } k = n + 1; for j = n + 2 to 저Bar[2]-1 { if H[k] < H[j] then k = j; } 고[1] = H[k]; 고Bar[1] = k; } } if 미완성사용 == 0 then { if 저Bar[1] > 고Bar[1] then { for j = 48 downto 1 { 저[j+1] = 저[j]; 저Bar[j+1] = 저Bar[j]; } } if 저Bar[1] > 고Bar[1] or 저[1] >= L[n] then { 저[1] = L[n]; 저Bar[1] = n; 저점갱신 = True; 저점표시 = 저[1]*0.995; } } } #==========================================# # 중기 파동선 계산 #==========================================# # 중기고점 계산 #------------------------------------------# //단기 고점이 발생한 다음 꼭지점을 찾아 중기고점으로 설정 if 고점갱신 == True and 고[3] < 고[2] and 고[2] > 고[1] then { //↗↘ if 미완성사용 == 1 then { for j = 18 downto 1 { 중기고[j+1] = 중기고[j]; 중기고Bar[j+1] = 중기고Bar[j]; } 중기고[1] = 고[2]; 중기고Bar[1] = 고Bar[2]; 중기고점갱신 = True; if 중기저Bar[1] > 중기고Bar[2] then { for j = 18 downto 1 { 중기저[j+1] = 중기저[j]; 중기저Bar[j+1] = 중기저Bar[j]; } k = 2; for j = 3 to 19 { if 중기고Bar[2] > 저Bar[j] and 저[k] > 저[j] then { k = j; } } 중기저[1] = 저[k]; 중기저Bar[1] = 저Bar[k]; } } if 미완성사용 == 0 then { if 중기고Bar[1] > 중기저Bar[1] then { for j = 18 downto 1 { 중기고[j+1] = 중기고[j]; 중기고Bar[j+1] = 중기고Bar[j]; } } if 중기고Bar[1] > 중기저Bar[1] or 중기고[1] <= 고[2] then { 중기고[1] = 고[2]; 중기고Bar[1] = 고Bar[2]; 중기고점갱신 = True; } } 고점갱신 = False; 중기추세갱신 = 상단; } #------------------------------------------# # 중기저점 계산 #------------------------------------------# //단기 저점이 발생한 다음 꼭지점을 찾아 중기저점으로 설정 if 저점갱신 == True and 저[3] > 저[2] and 저[2] < 저[1] then { if 미완성사용 == 1 then { for j = 18 downto 1 { 중기저[j+1] = 중기저[j]; 중기저Bar[j+1] = 중기저Bar[j]; } 중기저[1] = 저[2]; 중기저Bar[1] = 저Bar[2]; 중기저점갱신 = True; if 중기고Bar[1] > 중기저Bar[2] then { for j = 18 downto 1 { 중기고[j+1] = 중기고[j]; 중기고Bar[j+1] = 중기고Bar[j]; } k = 2; for j = 3 to 19 { if 중기저Bar[2] > 고Bar[j] and 고[k] < 고[j] then { k = j; } } 중기고[1] = 고[k]; 중기고Bar[1] = 고Bar[k]; } } if 미완성사용 == 0 then { if 중기저Bar[1] > 중기고Bar[1] then { for j = 18 downto 1 { 중기저[j+1] = 중기저[j]; 중기저Bar[j+1] = 중기저Bar[j]; } } if 중기저Bar[1] > 중기고Bar[1] or 중기저[1] >= 저[2] then { 중기저[1] = 저[2]; 중기저Bar[1] = 저Bar[2]; 중기저점갱신 = True; } } 저점갱신 = False; 중기추세갱신 = 하단; } #==========================================# # 장기 파동선 계산 #==========================================# # 장기고점 계산 #------------------------------------------# //중기 고점이 발생한 다음 꼭지점을 찾아 장기고점으로 설정 if 중기고점갱신 == True and 중기고[3] < 중기고[2] and 중기고[2] > 중기고[1] then { if 미완성사용 == 1 then { for j = 18 downto 1 { 장기고[j+1] = 장기고[j]; 장기고Bar[j+1] = 장기고Bar[j]; } 장기고[1] = 중기고[2]; 장기고Bar[1] = 중기고Bar[2]; if 장기저Bar[1] > 장기고Bar[2] then { for j = 18 downto 1 { 장기저[j+1] = 장기저[j]; 장기저Bar[j+1] = 장기저Bar[j]; } k = 2; for j = 3 to 19 { if 장기고Bar[2] > 중기저Bar[j] and 중기저[k] > 중기저[j] then { k = j; } } 장기저[1] = 중기저[k]; 장기저Bar[1] = 중기저Bar[k]; } } if 미완성사용 == 0 then { if 장기고Bar[1] > 장기저Bar[1] then { for j = 18 downto 1 { 장기고[j+1] = 장기고[j]; 장기고Bar[j+1] = 장기고Bar[j]; } } if 장기고Bar[1] > 장기저Bar[1] or 장기고[1] <= 중기고[2] then { 장기고[1] = 중기고[2]; 장기고Bar[1] = 중기고Bar[2]; } } 중기고점갱신 = False; 장기추세갱신 = 상단; } #------------------------------------------# # 장기저점 계산 #------------------------------------------# //중기 저점이 발생한 다음 꼭지점을 찾아 장기저점으로 설정 if 중기저점갱신 == True and 중기저[3] > 중기저[2] and 중기저[2] < 중기저[1] then { if 미완성사용 == 1 then { for j = 18 downto 1 { 장기저[j+1] = 장기저[j]; 장기저Bar[j+1] = 장기저Bar[j]; } 장기저[1] = 중기저[2]; 장기저Bar[1] = 중기저Bar[2]; if 장기고Bar[1] > 장기저Bar[2] then { for j = 18 downto 1 { 장기고[j+1] = 장기고[j]; 장기고Bar[j+1] = 장기고Bar[j]; } k = 2; for j = 3 to 19 { if 장기저Bar[2] > 중기고Bar[j] and 중기고[k] < 중기고[j] then { k = j; } } 장기고[1] = 중기고[k]; 장기고Bar[1] = 중기고Bar[k]; } } if 미완성사용 == 0 then { if 장기저Bar[1] > 장기고Bar[1] then { for j = 18 downto 1 { 장기저[j+1] = 장기저[j]; 장기저Bar[j+1] = 장기저Bar[j]; } } if 장기저Bar[1] > 장기고Bar[1] or 장기저[1] >= 중기저[2] then { 장기저[1] = 중기저[2]; 장기저Bar[1] = 중기저Bar[2]; } } 중기저점갱신 = False; 장기추세갱신 = 하단; } #==========================================# # 자동추세선 계산 #==========================================# if 고Bar[1] == n then { 단기상단채널 = 0; 단기상단기울기 = 0; for j = 2 to 49 { if 고[1] < 고[j] and 단기상단기울기 == 0 then { 단기상단기울기 =((고[1]-고[j])/(고Bar[j]-고Bar[1])); 단기상단Bar = 고Bar[j]; 단기상단절편 = 고[j]; j = Exit; } else if 고[j] <= 0 then j = Exit; } } if 저Bar[1] == n then { 단기하단채널 = 0; 단기하단기울기 = 0; for j = 2 to 49 { if 저[1] > 저[j] and 단기하단기울기 == 0 then { 단기하단기울기 = ((저[1]-저[j])/(저Bar[j]-저Bar[1])); 단기하단Bar = 저Bar[j]; 단기하단절편 = 저[j]; j = Exit; } else if 저[j] <= 0 then j = Exit; } } if 중기추세갱신 == 상단 then { 중기상단채널 = 0; 중기상단기울기 = 0; for j = 2 to 19 { if 중기고[1] < 중기고[j] and 중기상단기울기 == 0 then { 중기상단기울기 = ((중기고[1]-중기고[j])/(중기고Bar[j]-중기고Bar[1])); 중기상단Bar = 중기고Bar[j]; 중기상단절편 = 중기고[j]; j = Exit; } else if 중기고[j] <= 0 then j = Exit; } 중기추세갱신 = 0; } if 중기추세갱신 == 하단 then { 중기하단채널 = 0; 중기하단기울기 = 0; for j = 2 to 19 { if 중기저[1] > 중기저[j] and 중기하단기울기 == 0 then { 중기하단기울기 = ((중기저[1]-중기저[j])/(중기저Bar[j]-중기저Bar[1])); 중기하단Bar = 중기저Bar[j]; 중기하단절편 = 중기저[j]; j = Exit; } else if 중기저[j] <= 0 then j = Exit; } 중기추세갱신 = 0; } if 장기추세갱신 == 상단 then { 장기상단채널 = 0; 장기상단기울기 = 0; for j = 2 to 19 { if 장기고[1] < 장기고[j] and 장기상단기울기 == 0 then { 장기상단기울기 = ((장기고[1]-장기고[j])/(장기고Bar[j]-장기고Bar[1])); 장기상단Bar = 장기고Bar[j]; 장기상단절편 = 장기고[j]; j = Exit; } else if 장기고[j] <= 0 then j = Exit; } 장기추세갱신 = 0; } if 장기추세갱신 == 하단 then { 장기하단채널 = 0; 장기하단기울기 = 0; for j = 2 to 19 { if 장기저[1] > 장기저[j] and 장기하단기울기 == 0 then { 장기하단기울기 = ((장기저[1]-장기저[j])/(장기저Bar[j]-장기저Bar[1])); 장기하단Bar = 장기저Bar[j]; 장기하단절편 = 장기저[j]; j = Exit; } else if 장기저[j] <= 0 then j = Exit; } 장기추세갱신 = 0; } if 단기상단기울기 < 0 then 단기상단채널 = 단기상단기울기 * 단기상단Bar + 단기상단절편; if 단기하단기울기 > 0 then 단기하단채널 = 단기하단기울기 * 단기하단Bar + 단기하단절편; if 중기상단기울기 < 0 then 중기상단채널 = 중기상단기울기 * 중기상단Bar + 중기상단절편; if 중기하단기울기 > 0 then 중기하단채널 = 중기하단기울기 * 중기하단Bar + 중기하단절편; if 장기상단기울기 < 0 then 장기상단채널 = 장기상단기울기 * 장기상단Bar + 장기상단절편; if 장기하단기울기 > 0 then 장기하단채널 = 장기하단기울기 * 장기하단Bar + 장기하단절편; if crossup(c,단기상단채널) Then buy(); if CrossDown(c,단기하단채널) Then exitlong();
프로필 이미지
회원
2015-04-05
247
글번호 84750
시스템
답변완료

식 변경 부탁드려요(data2)

수고하십니다.. 아래식을 이용해서 data2로 선물을 기준으로 해서 풋옵션을 거래할려고 하는데 작동이 잘 안되네요.. 식 변경 부탁드립니다.. --------------------------------------------------------------------------- Var : 기준선(0), 전환선(0),선행스팬1(0), 선행스팬2(0); var : 구름상단(0),구름하단(0),T(0),ADXV(0),ii(0); 전환선 = (Highest(High, 9) + Lowest(Low, 9)) / 2; 기준선 = (Highest(High, 26) + Lowest(Low, 26)) / 2; 선행스팬1 = (전환선 + 기준선) / 2 ; 선행스팬2 = (Highest(High, 52) + Lowest(Low, 52)) / 2; 구름상단 = max(선행스팬1[25],선행스팬2[25]); 구름하단 = min(선행스팬1[25],선행스팬2[25]); Adxv = ADX(14); if T <= 0 and crossup(C,구름상단) Then{ T = 1; ii = index; } if T == 1 and index > ii and crossup(c,구름상단) Then T = 2; if T >= 0 and crossdown(c,구름하단) Then{ T = -1; ii = index; } if T == -1 and index > ii and CrossDown(c,구름하단) Then T = -2; if stime >= 100000 and stime < 143000 Then{ #1 if T == -1 and ADXV > ADXv[1] and countif(crossdown(c,구름하단),5) >= 1 Then sell("S1"); #4 if T == -2 and ADXV > ADXv[1] and countif(crossup(c,구름상단),5) >= 1 Then Sell("S4"); } if MarketPosition == -1 Then{ if crossup(c,구름하단) Then ExitShort(); if ADXv < ADXV[1] Then ExitShort(); } SetStopEndofday(143000);
프로필 이미지
머니사이언스
2015-04-05
217
글번호 84749
시스템