커뮤니티

시스템 재질문 드립니다.

프로필 이미지
꿈돌이
2016-05-24 23:21:18
147
글번호 98442
답변완료

첨부 이미지

안녕하세요 [ 1.2번 캡쳐에 대한 문의 ] 지난주에 문의글 올렸었는데 캡쳐된 그래프에 표시된 부분이 다른식을 나타낸 것으로 보인다고 하셨었는데 제가 코드를 다른 부분을 붙여서 문의드렸었더군요.. 헌데 실제로 진입에 대한 조건 자체는 아래와 같이 이전에 문의드린부분과 동일합니다. 저 아래의 조건문 17일선 > 40일선 and CrossDown(C, 40일선) 이 부분을 통과하지 못하는 한 거래 진입이 되지 않을 것이기 때문에 상위단의 조건은 의미가 없다고 생각되는데요.. 저 코드반영해서 돌리게 되면 현재 생성되고 진행중인 차트에서는 문제가 발생하고 다 완성된 시스템 차트에서는 실제로 처음의 것만 진입한거로 나타나게 됩니다. 어떤부분이 문제인건지 문의드립니다. Input : shortPeriod(17), longPeriod(40); Var : Plus(1.25), Minus(1); value17 = ma(C, shortPeriod); value40 = ma(C, longPeriod); If((value17 > value40) and (CrossDown(C, value40))) Then { MessageLog("매도 기본 진입 현재가 : %.2f ", C); Sell("매도기본"); SetStopProfittarget(Plus, PointStop); SetStopLoss(Minus, PointStop); } [ 2,3번째 캡쳐에 대한 문의 ] 아래 있는 식은 위의 식과 비슷하게 반대로 17일선과 40일선을 기준으로 현재가가 CrossUp시에 매수 진입하도록 하는 식입니다. 헌데 2번과 3번 캡쳐에 동그라미 표시된 부분을 보시면.. 17일선(깜장)이 40일선(분홍)보다 밑에 있고 캔들이 CrossUp하는 시점이 여러번 있는것으로 판단되는데 실제 장이 진행되는동안에는 캡쳐와 같이 진입하지 못하는 경우가 발생합니다. 시스템모니터 상으로는 OnClose 표시로 깜빡깜빡 거리다가 결국 포지션을 챙겨가지 못하는데... 어떤 부분이 문제인가요?? 수식 문의 드립니다. 보다 더 원하는것은 OnClose로 포지션에 들어가게되면 해당 캔들이 완성되는 종가에 진입이 되는것으로 알고 있는데요. 원하는 수식은 현재 봉이 만들어져가고 있는 동안에 40일선을 넘어서는 순간 바로 진입하고 싶습니다. 현재봉의 종가 기준으로 동작하게 되기 때문에 지금 그림과 같이 진입못하는 시점이 생기는건지 의문도 있으면서... 40일선을 넘어가는 그 순간에 바로 시장가로 Buy 가 들어가게 하고싶은데요.. 수식 문의드립니다.. If((value17 < value40) and ( CrossUP(C, value40)))Then { MessageLog("매수 기본 진입 현재가 : %.2f ", C); Buy("매수기본"); SetStopProfittarget(Plus, PointStop); SetStopLoss(Minus, PointStop); } > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 시스템식 문의드립니다. > 안녕하세요 예스스탁입니다. 청산후 종가에 다시 조건이 충족하면 다시 진입을 할수는 있습니다. 다만 올려주신 식은 테스트결과 종가에 조건만족하지 않은 상태에서 진입은 나오지 않고 있고 첨부하신 그림에는 매도진입명이 매도기본인데 올려주신 식은 매도옵션1입니다. 해당 조건이 아닌 다른조건에 의해 발생되는 신호같습니다. 수식 전체를 올려주시거나 해당 상황발생시에 02-3453-1060으로 전화주시기 바랍니다. 즐거운 하루되세요 > 꿈돌이 님이 쓴 글입니다. > 제목 : 시스템식 문의드립니다. > 안녕하세요. 이평선을 기반으로 해서 시스템식을 구현하고 있는데 이상하게 거래되는 부분이 있어서 문의드립니다. 그림과 같이 기본 Sell() API를 사용하여 구현한 매도식에서 매도 진입 후 5틱 정상청산 직후 시스템에서 바로 다시 매도를 진입하는것을 확인하였습니다. 시스템 식은 아래와 같습니다. 17일선이 40일선보다 위에 있으면서 현재봉이 40일선을 뚫을때 매도진입하도록 한건데 그림에서 보면 처음 진입은 잘 하였으나 청산과 동시에 다시 매도 진입이 들어가는 걸 볼 수 있는데요. 차트상으로 전혀 들어갈수 없는 타이밍인데 청산과 동시에 다시 진입이 됩니다. 시스템 종료후에 다시 적용하면 처음 1회꺼만 진입과 청산을 잘 하였다는식으로 나오는데 어떤 문제인지 문의드립니다. Input : shortPeriod(17), longPeriod(40) value17 = ma(C, shortPeriod); value40 = ma(C, longPeriod); # 매도 및 청산 If((value17 > value40) and (CrossDown(C, value40))) Then { MessageLog("매도 옵션 진입 현재가 : %.2f", C); Sell("매도옵션1"); SetStopProfittarget(Plus, PointStop); SetStopLoss(Minus, PointStop); } 도움 부탁드립니다.
시스템
답변 2
프로필 이미지

예스스탁 예스스탁 답변

2016-05-25 10:37:54

안녕하세요 예스스탁입니다. 수식에 참조데이터를 이용하시면 수식의 모든 값이 어떤 데이터를 기준으로 이전값을 가져오고 봉수를 카운트 해야하는지를 지정해 주셔야 합니다. 1 변수선언 변수 선언시에 해당 변수가 어떤 데이터를 기준으로 이전값을 참조하는지 알수 있도록 선언시 데이터번호를 지정 2 수식의 값계산시 계산식 자체를 데이터변수로 묶어서 봉수등을 체크할때 어떤 데이터를 기준으로 봉수를 카운트하고 값을 가져오는지 지정 참조데이터를 이용하실때는 위 2가지만 주의하셔서 처리하시면 됩니다. 참조데이터를 이용할때는 변수에 데비터번호를 지정해야 하므로 내장변수외에 따로 만들어 사용하시길 권장합니다. Input : shortPeriod(17), longPeriod(40); Var : Plus(1.25), Minus(1); var : val17(0,data1),val40(0,data1); val17 = data1(ma(C, shortPeriod)); val40 = data1(ma(C, longPeriod)); If ((val17 > val40) and (CrossDown(C, val40))) Then { MessageLog("매도 기본 진입 현재가 : %.2f ", C); Sell("매도기본"); SetStopProfittarget(Plus, PointStop); SetStopLoss(Minus, PointStop); } 예스랭귀지 도움말에서 예스랭귀지 활용부분의 타종목/타주기에 관련된 내용 참고하시기 바랍니다. https://www.yesstock.com/YesTrader/YesLanguage/YesLanguage_help/4_4_2.htm 즐거운 하루되세요 > 꿈돌이 님이 쓴 글입니다. > 제목 : 시스템 재질문 드립니다. > 안녕하세요 [ 1.2번 캡쳐에 대한 문의 ] 지난주에 문의글 올렸었는데 캡쳐된 그래프에 표시된 부분이 다른식을 나타낸 것으로 보인다고 하셨었는데 제가 코드를 다른 부분을 붙여서 문의드렸었더군요.. 헌데 실제로 진입에 대한 조건 자체는 아래와 같이 이전에 문의드린부분과 동일합니다. 저 아래의 조건문 17일선 > 40일선 and CrossDown(C, 40일선) 이 부분을 통과하지 못하는 한 거래 진입이 되지 않을 것이기 때문에 상위단의 조건은 의미가 없다고 생각되는데요.. 저 코드반영해서 돌리게 되면 현재 생성되고 진행중인 차트에서는 문제가 발생하고 다 완성된 시스템 차트에서는 실제로 처음의 것만 진입한거로 나타나게 됩니다. 어떤부분이 문제인건지 문의드립니다. Input : shortPeriod(17), longPeriod(40); Var : Plus(1.25), Minus(1); value17 = ma(C, shortPeriod); value40 = ma(C, longPeriod); If((value17 > value40) and (CrossDown(C, value40))) Then { MessageLog("매도 기본 진입 현재가 : %.2f ", C); Sell("매도기본"); SetStopProfittarget(Plus, PointStop); SetStopLoss(Minus, PointStop); } [ 2,3번째 캡쳐에 대한 문의 ] 아래 있는 식은 위의 식과 비슷하게 반대로 17일선과 40일선을 기준으로 현재가가 CrossUp시에 매수 진입하도록 하는 식입니다. 헌데 2번과 3번 캡쳐에 동그라미 표시된 부분을 보시면.. 17일선(깜장)이 40일선(분홍)보다 밑에 있고 캔들이 CrossUp하는 시점이 여러번 있는것으로 판단되는데 실제 장이 진행되는동안에는 캡쳐와 같이 진입하지 못하는 경우가 발생합니다. 시스템모니터 상으로는 OnClose 표시로 깜빡깜빡 거리다가 결국 포지션을 챙겨가지 못하는데... 어떤 부분이 문제인가요?? 수식 문의 드립니다. 보다 더 원하는것은 OnClose로 포지션에 들어가게되면 해당 캔들이 완성되는 종가에 진입이 되는것으로 알고 있는데요. 원하는 수식은 현재 봉이 만들어져가고 있는 동안에 40일선을 넘어서는 순간 바로 진입하고 싶습니다. 현재봉의 종가 기준으로 동작하게 되기 때문에 지금 그림과 같이 진입못하는 시점이 생기는건지 의문도 있으면서... 40일선을 넘어가는 그 순간에 바로 시장가로 Buy 가 들어가게 하고싶은데요.. 수식 문의드립니다.. If((value17 < value40) and ( CrossUP(C, value40)))Then { MessageLog("매수 기본 진입 현재가 : %.2f ", C); Buy("매수기본"); SetStopProfittarget(Plus, PointStop); SetStopLoss(Minus, PointStop); } > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 시스템식 문의드립니다. > 안녕하세요 예스스탁입니다. 청산후 종가에 다시 조건이 충족하면 다시 진입을 할수는 있습니다. 다만 올려주신 식은 테스트결과 종가에 조건만족하지 않은 상태에서 진입은 나오지 않고 있고 첨부하신 그림에는 매도진입명이 매도기본인데 올려주신 식은 매도옵션1입니다. 해당 조건이 아닌 다른조건에 의해 발생되는 신호같습니다. 수식 전체를 올려주시거나 해당 상황발생시에 02-3453-1060으로 전화주시기 바랍니다. 즐거운 하루되세요 > 꿈돌이 님이 쓴 글입니다. > 제목 : 시스템식 문의드립니다. > 안녕하세요. 이평선을 기반으로 해서 시스템식을 구현하고 있는데 이상하게 거래되는 부분이 있어서 문의드립니다. 그림과 같이 기본 Sell() API를 사용하여 구현한 매도식에서 매도 진입 후 5틱 정상청산 직후 시스템에서 바로 다시 매도를 진입하는것을 확인하였습니다. 시스템 식은 아래와 같습니다. 17일선이 40일선보다 위에 있으면서 현재봉이 40일선을 뚫을때 매도진입하도록 한건데 그림에서 보면 처음 진입은 잘 하였으나 청산과 동시에 다시 매도 진입이 들어가는 걸 볼 수 있는데요. 차트상으로 전혀 들어갈수 없는 타이밍인데 청산과 동시에 다시 진입이 됩니다. 시스템 종료후에 다시 적용하면 처음 1회꺼만 진입과 청산을 잘 하였다는식으로 나오는데 어떤 문제인지 문의드립니다. Input : shortPeriod(17), longPeriod(40) value17 = ma(C, shortPeriod); value40 = ma(C, longPeriod); # 매도 및 청산 If((value17 > value40) and (CrossDown(C, value40))) Then { MessageLog("매도 옵션 진입 현재가 : %.2f", C); Sell("매도옵션1"); SetStopProfittarget(Plus, PointStop); SetStopLoss(Minus, PointStop); } 도움 부탁드립니다.
프로필 이미지

꿈돌이

2016-05-27 00:59:13

그림 확인해보시면 매수기본이 동작하여 수익 청산한 이후에 바로 매수옵션2로 진입이 이루어져서 뒤쪽에서 손절이 발생하였습니다. 말씀해주신데로 참조데이터 및 이평선에 대하여 Data를 지정하여 초기화 해준 뒤에 시스템을 동작하였는데... 이전과 비슷하게 CrossUp이 아닌 것으로 보이는 조건에서 수익청산과 동시에 진입이 되어서 손절이 발생하였습니다. 아래는 수식입니다. 수식에서 보기에 다른 조건들은 맞으나 CrossUp(C,val40) 조건이 맞지 않는 상태이기 때문에 진입이 안되야 할 것으로 보입니다만 바로 진입이 되었습니다. 수식에 어떤부분이 문제인지 문의드립니다. Input : shortPeriod(17), longPeriod(40), PeriodNine(60), PeriodTwoSix(60), PeriodTwoTen(10); Var : CurPrice(0), CurPosition(0), Period900(0, data2), Period240Six(0, data3), Period240Ten(0, data3), Plus(1.25), Minus(1); Var : val17(0, data1), val40(0, data1); val17 = data1(ma(C, shortPeriod)); val40 = data1(ma(C, longPeriod)); Period900 = data2(ma(C, PeriodNine)); Period240Six = data3(ma(C, PeriodTwoSix)); Period240Ten = data3(ma(C, PeriodTwoTen)); if (MarketPosition == 0) Then { //매수 관련 거래 if((C > Period900) and (C > Period240Six) and ( C > Period240Ten) ) Then { # 매수/매도청산 If((val17 < val40) and ( CrossUP(C, val40)))Then { Buy("매수기본"); CurPosition = 1; SetStopProfittarget(Plus, PointStop); SetStopLoss(Minus, PointStop); } Else If( (val17 > val40) and (CurPosition == 1) and (IsExitName("stoploss", 1) == False) and (MarketPosition == 0) and (CrossUp(C, val40)) ) Then { Buy("매수옵션2"); CurPosition = 1; SetStopProfittarget(Plus, PointStop); SetStopLoss(Minus, PointStop); } } } > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 시스템 재질문 드립니다. > 안녕하세요 예스스탁입니다. 수식에 참조데이터를 이용하시면 수식의 모든 값이 어떤 데이터를 기준으로 이전값을 가져오고 봉수를 카운트 해야하는지를 지정해 주셔야 합니다. 1 변수선언 변수 선언시에 해당 변수가 어떤 데이터를 기준으로 이전값을 참조하는지 알수 있도록 선언시 데이터번호를 지정 2 수식의 값계산시 계산식 자체를 데이터변수로 묶어서 봉수등을 체크할때 어떤 데이터를 기준으로 봉수를 카운트하고 값을 가져오는지 지정 참조데이터를 이용하실때는 위 2가지만 주의하셔서 처리하시면 됩니다. 참조데이터를 이용할때는 변수에 데비터번호를 지정해야 하므로 내장변수외에 따로 만들어 사용하시길 권장합니다. Input : shortPeriod(17), longPeriod(40); Var : Plus(1.25), Minus(1); var : val17(0,data1),val40(0,data1); val17 = data1(ma(C, shortPeriod)); val40 = data1(ma(C, longPeriod)); If ((val17 > val40) and (CrossDown(C, val40))) Then { MessageLog("매도 기본 진입 현재가 : %.2f ", C); Sell("매도기본"); SetStopProfittarget(Plus, PointStop); SetStopLoss(Minus, PointStop); } 예스랭귀지 도움말에서 예스랭귀지 활용부분의 타종목/타주기에 관련된 내용 참고하시기 바랍니다. https://www.yesstock.com/YesTrader/YesLanguage/YesLanguage_help/4_4_2.htm 즐거운 하루되세요 > 꿈돌이 님이 쓴 글입니다. > 제목 : 시스템 재질문 드립니다. > 안녕하세요 [ 1.2번 캡쳐에 대한 문의 ] 지난주에 문의글 올렸었는데 캡쳐된 그래프에 표시된 부분이 다른식을 나타낸 것으로 보인다고 하셨었는데 제가 코드를 다른 부분을 붙여서 문의드렸었더군요.. 헌데 실제로 진입에 대한 조건 자체는 아래와 같이 이전에 문의드린부분과 동일합니다. 저 아래의 조건문 17일선 > 40일선 and CrossDown(C, 40일선) 이 부분을 통과하지 못하는 한 거래 진입이 되지 않을 것이기 때문에 상위단의 조건은 의미가 없다고 생각되는데요.. 저 코드반영해서 돌리게 되면 현재 생성되고 진행중인 차트에서는 문제가 발생하고 다 완성된 시스템 차트에서는 실제로 처음의 것만 진입한거로 나타나게 됩니다. 어떤부분이 문제인건지 문의드립니다. Input : shortPeriod(17), longPeriod(40); Var : Plus(1.25), Minus(1); value17 = ma(C, shortPeriod); value40 = ma(C, longPeriod); If((value17 > value40) and (CrossDown(C, value40))) Then { MessageLog("매도 기본 진입 현재가 : %.2f ", C); Sell("매도기본"); SetStopProfittarget(Plus, PointStop); SetStopLoss(Minus, PointStop); } [ 2,3번째 캡쳐에 대한 문의 ] 아래 있는 식은 위의 식과 비슷하게 반대로 17일선과 40일선을 기준으로 현재가가 CrossUp시에 매수 진입하도록 하는 식입니다. 헌데 2번과 3번 캡쳐에 동그라미 표시된 부분을 보시면.. 17일선(깜장)이 40일선(분홍)보다 밑에 있고 캔들이 CrossUp하는 시점이 여러번 있는것으로 판단되는데 실제 장이 진행되는동안에는 캡쳐와 같이 진입하지 못하는 경우가 발생합니다. 시스템모니터 상으로는 OnClose 표시로 깜빡깜빡 거리다가 결국 포지션을 챙겨가지 못하는데... 어떤 부분이 문제인가요?? 수식 문의 드립니다. 보다 더 원하는것은 OnClose로 포지션에 들어가게되면 해당 캔들이 완성되는 종가에 진입이 되는것으로 알고 있는데요. 원하는 수식은 현재 봉이 만들어져가고 있는 동안에 40일선을 넘어서는 순간 바로 진입하고 싶습니다. 현재봉의 종가 기준으로 동작하게 되기 때문에 지금 그림과 같이 진입못하는 시점이 생기는건지 의문도 있으면서... 40일선을 넘어가는 그 순간에 바로 시장가로 Buy 가 들어가게 하고싶은데요.. 수식 문의드립니다.. If((value17 < value40) and ( CrossUP(C, value40)))Then { MessageLog("매수 기본 진입 현재가 : %.2f ", C); Buy("매수기본"); SetStopProfittarget(Plus, PointStop); SetStopLoss(Minus, PointStop); } > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 시스템식 문의드립니다. > 안녕하세요 예스스탁입니다. 청산후 종가에 다시 조건이 충족하면 다시 진입을 할수는 있습니다. 다만 올려주신 식은 테스트결과 종가에 조건만족하지 않은 상태에서 진입은 나오지 않고 있고 첨부하신 그림에는 매도진입명이 매도기본인데 올려주신 식은 매도옵션1입니다. 해당 조건이 아닌 다른조건에 의해 발생되는 신호같습니다. 수식 전체를 올려주시거나 해당 상황발생시에 02-3453-1060으로 전화주시기 바랍니다. 즐거운 하루되세요 > 꿈돌이 님이 쓴 글입니다. > 제목 : 시스템식 문의드립니다. > 안녕하세요. 이평선을 기반으로 해서 시스템식을 구현하고 있는데 이상하게 거래되는 부분이 있어서 문의드립니다. 그림과 같이 기본 Sell() API를 사용하여 구현한 매도식에서 매도 진입 후 5틱 정상청산 직후 시스템에서 바로 다시 매도를 진입하는것을 확인하였습니다. 시스템 식은 아래와 같습니다. 17일선이 40일선보다 위에 있으면서 현재봉이 40일선을 뚫을때 매도진입하도록 한건데 그림에서 보면 처음 진입은 잘 하였으나 청산과 동시에 다시 매도 진입이 들어가는 걸 볼 수 있는데요. 차트상으로 전혀 들어갈수 없는 타이밍인데 청산과 동시에 다시 진입이 됩니다. 시스템 종료후에 다시 적용하면 처음 1회꺼만 진입과 청산을 잘 하였다는식으로 나오는데 어떤 문제인지 문의드립니다. Input : shortPeriod(17), longPeriod(40) value17 = ma(C, shortPeriod); value40 = ma(C, longPeriod); # 매도 및 청산 If((value17 > value40) and (CrossDown(C, value40))) Then { MessageLog("매도 옵션 진입 현재가 : %.2f", C); Sell("매도옵션1"); SetStopProfittarget(Plus, PointStop); SetStopLoss(Minus, PointStop); } 도움 부탁드립니다.