커뮤니티

수식 등 문의

프로필 이미지
에구머니
2020-12-21 01:23:06
1078
글번호 144811
답변완료
안녕하세요? 몇가지 수식 등에 대한 질문 입니다. 1. 2020년 12월 1일 13시 30분과 2020년 12월 8일 10시 20분을 기준으로 12월 1일 13시 30분 이전에는 var1 = 1; 그 이후부터 12월 8일 10시 20분까지는 var1 = 2; 그 이후로는 계속 var1 = 3; 이걸 어떻게 구현하나요? sdate, stime 의 문법과 용법은 어디 나와 있나요? https://www.yesstock.com/YesTrader/YesLanguage/YesLanguage_help.html 요기에서 못 찾겠습니다. 2. 일봉차트와 분봉차트를 각각 띄어놓고, 일봉차트에서 매수 신호가 나오면 분봉차트에서는 매수신호만 유효하고, 매도신호는 무시하는 이런 스타일이 예스나 예스스팟에서 가능한가요? 3. 이건 위의 2번의 대답이 부정적일 경우의 질문입니다: 일봉차트와 분봉차트가 모두 각각 10개 정도의 참조데이터들을 사용하기에, 메모리 부족 우려가 있는데(집 데스크탑 말고, 예스 프로그램 자체의 메모리 문제...), 일봉과 분봉을 각각 켜두는 것보다 그냥 분봉차트에 일봉차트도 다 참조데이터로 끼워넣으면 (이 경우 11+11= 22, 즉 data22 까지 필요하겠네요...) 메모리 부족이 더 심화되나요? 그러니까 제 질문은 참조데이터 20개짜리 하나 돌리는 것(일봉 10개 + 분봉 10개) vs. 참조데이터 각각 10개짜리 일봉과 분봉 돌리는 것의 차이(메모리 또는 시스템 부하)가 궁금합니다. 이런 식으로 돌릴 경우 예상되는 문제점들이 뭐가 있을까요? 집 데스크탑은 최신으로 램도 32기가...충분히 했는데, 예스프로그램 자체의 메모리 부족에 대한 질문 입니다. 제가 12개의 참조데이터가 있는 5000봉짜리를 시뮬레이션으로 돌리면 오케이인데, 라이브로 돌리면 메모리 부족이라고 나오면서 바로 꺼집니다. 그래서, 라이브를 1500~2000봉으로 돌리면 안꺼지기는 합니다. 그래서 제 질문은 예스 프로그램이 메모리 부족을 느끼는 지름길을 알고 싶습니다. 예상되는 보기는 아래와 같습니다. 1) 참조 데이터를 많이 사용할 때 2) 로직이 복잡하고 길 때, 3) 사용자 함수를 많이 사용할 때 4) 사용자 함수를 사용하는데, 그 함수가 또다른 사용자 함수를 사용할 때 .......... 메모리 부족을 유발하는 가장 나쁜 것부터 순서가 어떻게 되는지 궁금합니다. 4. 찾아보니: if CurrentEntries < MaxEntries Then → 현재 거래의 누적 진입횟수가 최대 누적 진입횟수보다 작다 → 일부 청산이 있었음을 의미 라고 나와 있던데, 제가 input 에서 howmany(5)라는 변수를 통해 물타기를 최대 5번까지만 허용한 시스템에서는 MaxEntries == 5가 되나요? 그런데, 그렇다면 MaxEntries == 5라는 것을 컴퓨터는 어떻게 아나요? 그러니까, 물타기를 최대 5번까지만 허용한 시스템이라고 해도, 상황에 따라서는 차트상 현재까지 1~2번의 물타기만 진행되었을 수 있어서 드리는 질문 입니다. 그러면, 이 때까지는 MaxEntries는 5가 아닌 1~2 또는 2~3 이 되는 건가요? 5. if CurrentContracts > CurrentContracts[1] or (MarketPosition != MarketPosition(0)[1]) Then { HC = C; EP1 = LatestEntryPrice(0); EP2 = EP1[1]; EP3 = EP2[1]; EP4 = EP3[1]; } 이 말의 뜻풀이 좀 부탁드립니다. 여기서 특히, EP1[1] = LatestEntryPrice(0)[1] = 가장 최근 진입한 가격에 [1] 이 붙었는데, 이게 무슨 뜻일까요? 감사합니다.
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2020-12-21 13:11:14

안녕하세요 예스스탁입니다. 1 var : var1(1); if sDate == 20201201 and sTime >= 133000 Then var1 = 2; if var1 == 1 and sDate == 20201208 and sTime > 102000 Then var1 = 3; sdate와 stime은 데이타입니다. 예스랭귀지 --> 예스랭귀지문법 --> 데이타에 설명이 있습니다.2 2 예스랭귀지로는 구현하시려면분봉차트 일봉데이타를 참조데이타로 추가하고 참조데이타에서 특정조건(매수조건) 충족시에 분봉차트에서 조건만족시 진입하게 시스템식을 구현하셔야 합니다. 예스랭귀지는 다른 차트의 값을 알수 없어 차트간 연계는 되지 않습니다. 혹은 예스스팟으로 구현하셔도 됩니다. 3 데이타의 갯수가 동일하면 부하도 동일합니다. 그러므로 참조데이터 20개짜리 하나 돌리는 것과 10개짜리로 2개 돌리는 것은 동일하게 됩니다. 메모리 부족의 우선순위를 지정하기는 어렵습니다. 사용하는 데이타가 많을수록 수식이 복잡성이 높을 수록 메모리를 많이사용하고 부하가 더 걸리게 됩니다. 일반적으로 데이타는 필요에 의해 사용되므로 데이타 갯수는 줄일수 없으므로 필요한데이타와 적당한 봉갯수로 설정해서 사용한다면 실제로 수식의 복잡성이 메모리를 많이 사용하게 됩니다. 수식에서 동일한 내용을 계산을 하는 함수를 반복적으로 사용하거나 하면 동일계산을 위해 불필요한 메모리와 부하를 주게 되므로 수식의 내용중에 이런 부분이 없는지 개선하는게 중요하게 됩니다. 사용자함수사용이나 사용자함수안에 사용자함수를 사용하는 것은 관계가 없습니다. 4 MaxEntries은 진행중인 포지션의 현재까지의 최대진입횟수를 카운트 하는 함수입니다. 차트에서 진입신호가 발생하면 카운트해서 리턴하게 됩니다. 현재 진입신호가 1회발생하면 MaxEntries는 1 현재 진입신호가 2회발생하면 MaxEntries는 2 현재 진입신호가 3회발생하면 MaxEntries는 3이 됩니다. 5 CurrentContracts는 진입수량입니다. 진행중인 포지션에서 현재봉까지 청산되지 않고 남은 수량을 리턴하게 됩니다. 그러므로 CurrentContracts > CurrentContracts[1]은 현재봉수량이 1봉전 수량보다 크다라는 내용이므로 진입이 발생했다는 의미입니다. 하지만 수량의 증가만으로는 진입을 체크하지 못하는 경우가 있습니다. 예를 들어 매수포지션 진행중에 sell신호를 만나거나 매도포지션 진행중에 buy 신호를 만나 스위칭이 되면 전봉과 현재봉이 수량이 같거나 혹은 수량이 감소하는 경우도 있습니다. 이렇게 스위칭이 되면 진입으로 인식하게 하는 내용이 MarketPosition != MarketPosition(0)[1]입니다. 현재봉의 포지션방향과 전봉의 포지션방향이 다르다라는 내용으로 새로운 진입이 발생한것을 의미합니다. #진입발생 if CurrentContracts > CurrentContracts[1] or (MarketPosition != MarketPosition(0)[1]) Then { HC = C; #종가저장 EP1 = LatestEntryPrice(0); #현재진입의 진입가 EP2 = EP1[1]; #전진입의 진입가 EP3 = EP2[1]; #전전진입의 진입가 EP4 = EP3[1]; #전전전진입의 진입가 } 즐거운 하루되세요 > 에구머니 님이 쓴 글입니다. > 제목 : 수식 등 문의 > 안녕하세요? 몇가지 수식 등에 대한 질문 입니다. 1. 2020년 12월 1일 13시 30분과 2020년 12월 8일 10시 20분을 기준으로 12월 1일 13시 30분 이전에는 var1 = 1; 그 이후부터 12월 8일 10시 20분까지는 var1 = 2; 그 이후로는 계속 var1 = 3; 이걸 어떻게 구현하나요? sdate, stime 의 문법과 용법은 어디 나와 있나요? https://www.yesstock.com/YesTrader/YesLanguage/YesLanguage_help.html 요기에서 못 찾겠습니다. 2. 일봉차트와 분봉차트를 각각 띄어놓고, 일봉차트에서 매수 신호가 나오면 분봉차트에서는 매수신호만 유효하고, 매도신호는 무시하는 이런 스타일이 예스나 예스스팟에서 가능한가요? 3. 이건 위의 2번의 대답이 부정적일 경우의 질문입니다: 일봉차트와 분봉차트가 모두 각각 10개 정도의 참조데이터들을 사용하기에, 메모리 부족 우려가 있는데(집 데스크탑 말고, 예스 프로그램 자체의 메모리 문제...), 일봉과 분봉을 각각 켜두는 것보다 그냥 분봉차트에 일봉차트도 다 참조데이터로 끼워넣으면 (이 경우 11+11= 22, 즉 data22 까지 필요하겠네요...) 메모리 부족이 더 심화되나요? 그러니까 제 질문은 참조데이터 20개짜리 하나 돌리는 것(일봉 10개 + 분봉 10개) vs. 참조데이터 각각 10개짜리 일봉과 분봉 돌리는 것의 차이(메모리 또는 시스템 부하)가 궁금합니다. 이런 식으로 돌릴 경우 예상되는 문제점들이 뭐가 있을까요? 집 데스크탑은 최신으로 램도 32기가...충분히 했는데, 예스프로그램 자체의 메모리 부족에 대한 질문 입니다. 제가 12개의 참조데이터가 있는 5000봉짜리를 시뮬레이션으로 돌리면 오케이인데, 라이브로 돌리면 메모리 부족이라고 나오면서 바로 꺼집니다. 그래서, 라이브를 1500~2000봉으로 돌리면 안꺼지기는 합니다. 그래서 제 질문은 예스 프로그램이 메모리 부족을 느끼는 지름길을 알고 싶습니다. 예상되는 보기는 아래와 같습니다. 1) 참조 데이터를 많이 사용할 때 2) 로직이 복잡하고 길 때, 3) 사용자 함수를 많이 사용할 때 4) 사용자 함수를 사용하는데, 그 함수가 또다른 사용자 함수를 사용할 때 .......... 메모리 부족을 유발하는 가장 나쁜 것부터 순서가 어떻게 되는지 궁금합니다. 4. 찾아보니: if CurrentEntries < MaxEntries Then → 현재 거래의 누적 진입횟수가 최대 누적 진입횟수보다 작다 → 일부 청산이 있었음을 의미 라고 나와 있던데, 제가 input 에서 howmany(5)라는 변수를 통해 물타기를 최대 5번까지만 허용한 시스템에서는 MaxEntries == 5가 되나요? 그런데, 그렇다면 MaxEntries == 5라는 것을 컴퓨터는 어떻게 아나요? 그러니까, 물타기를 최대 5번까지만 허용한 시스템이라고 해도, 상황에 따라서는 차트상 현재까지 1~2번의 물타기만 진행되었을 수 있어서 드리는 질문 입니다. 그러면, 이 때까지는 MaxEntries는 5가 아닌 1~2 또는 2~3 이 되는 건가요? 5. if CurrentContracts > CurrentContracts[1] or (MarketPosition != MarketPosition(0)[1]) Then { HC = C; EP1 = LatestEntryPrice(0); EP2 = EP1[1]; EP3 = EP2[1]; EP4 = EP3[1]; } 이 말의 뜻풀이 좀 부탁드립니다. 여기서 특히, EP1[1] = LatestEntryPrice(0)[1] = 가장 최근 진입한 가격에 [1] 이 붙었는데, 이게 무슨 뜻일까요? 감사합니다.