커뮤니티
문의드림니다
2016-01-27 22:20:20
116
글번호 94883
다음수식 문의 드림니다
A매수전략,B매수전략,C매수전략 의 3가지 전략을 합해서 하나의매수시스템을 만든경우
피라미딩허용 안한 경우는 3가지 전략이 동일봉 동시점에 신호가 발생하더라도 하나만
신호가 나옴니다
그러나 피라미딩을 허용으로 적용하면 3가지 전략이 동일봉 동시점에 신호가 발생한 경우
3개의 신호가 발생하여 3계약이 체결되게 됨니다
피라미딩을 적용하고 매매하고 싶은데 3가지 전략이 동일봉 동시점에 신호가 발생하더라도
하나의 신호만 발생하도록 아래의 수식을 예로들어 작성부탁드림니다
If MarketPosition== 0 and c>ma(c,5) ------ A전략
Then{ Buy("매수1", AtMarket); }
If MarketPosition== 0 and c>ma(c,10) ------ B전략
Then{ Buy("매수2", AtMarket); }
If MarketPosition== 0 and c>ma(c,20) ------ C전략
Then{ Buy("매수1", AtMarket); }
참고) 위 문제의 검색결과 marketposition 함수의 특성으로 인하여 발생하는것 같습니다
아래 사항을 참고하시어 아래의 방법대로 작성부탁드림니다
제가 너무 프로그램언어에 대해 잘 몰라 아래의 방법대로 해 볼려니 잘 안됨니다
아래의 참고사항의 방법대로 구현하여 주시고
에제수식의 전략내용 일부만 고쳐서 바로 사용가능 하도록 작성 부탁드림니다
--------- 참고사항 ----------------------------------
예스트레이더 함수를 사용할때 주의해야할 사항이 있습니다.
예스랭귀지 특성인 것 같은데
예스에서 제공하는 함수는 발생시점 다음 루틴이 돌아야
값을 가지게 됩니다.
예를 들어 MarketPosition 함수 사용경우
진입1 = MarketPosition;
if MarketPosition == 0 then { buy("매수1"); 진입확인1 = 1}
진입2 = MarketPosition;
if MarketPosition == 0 then { buy("매수2"); 진입확인2 = 1}
진입3 = MarketPosition; //시점3
피라미딩(중복진입) 허용을 선택했을 경우
위와같이 로직이 구성되어 있고 매수1과 매수2 두개 조건이 다 만족할 경우
원하는 로직은 매수1이 진입되면 매수2는 진입되지 말야야하는데
그 결과는 매수1, 매수2 두개다 진입이 됩니다.
그 원인은 매수1이 발생하고 나서
아직 끝까지 진행이 안되어 MarketPosition은 0 으로 남아 있습니다.
해당 로직 끝까지 진행 후 다음 번 부터 적용이 되더라구요.
즉, 변수 값들은 아래와 같습니다.
1번째 루틴
진입1 : 0
진입확인1 : 1
진입2 : 0
진입확인2 : 1
진입3 : 0
2번째 루틴
진입1 : 1
진입확인1 : 1
진입2 : 1
진입확인2 : 1
진입3 : 1
이렇게 되기 때문에
원하지 않는 재진입이 될수 있으니 주의 하셔야 합니다. ^^
대책은 각 매수 진입시 별도의 변수를 선언해서 재진입을 방지하는 방법입니다.
if 진입확인 == 0 then { buy("매수1"); 진입확인 = 1}
진입2 = MarketPosition;
if 진입확인 == 0 then { buy("매수2"); 진입확인 = 1}
진입3 = MarketPosition; //시점3
즉, MarketPosition은 위 개념을 잘 이해하시고 제한적으로 사용하시는 것이 유익할 듯합니다
답변 1
예스스탁 예스스탁 답변
2016-01-28 10:56:02
안녕하세요
예스스탁입니다.
아래와 같이 작성하시면
매봉 조건이 종복되도 하나의 신호만 발생합니다.
var : 진입확인(0);
진입확인 = 0;
If 진입확인 == 0 and c>ma(c,5) Then{
진입확인 = 1;
Buy("매수1", AtMarket);
}
If 진입확인 == 0 and c>ma(c,10) Then{
진입확인 = 1;
Buy("매수2", AtMarket);
}
If 진입확인 == 0 and c>ma(c,20) Then{
진입확인 = 1;
Buy("매수3", AtMarket);
}
즐거운 하루되세요
> mao 님이 쓴 글입니다.
> 제목 : 문의드림니다
> 다음수식 문의 드림니다
A매수전략,B매수전략,C매수전략 의 3가지 전략을 합해서 하나의매수시스템을 만든경우
피라미딩허용 안한 경우는 3가지 전략이 동일봉 동시점에 신호가 발생하더라도 하나만
신호가 나옴니다
그러나 피라미딩을 허용으로 적용하면 3가지 전략이 동일봉 동시점에 신호가 발생한 경우
3개의 신호가 발생하여 3계약이 체결되게 됨니다
피라미딩을 적용하고 매매하고 싶은데 3가지 전략이 동일봉 동시점에 신호가 발생하더라도
하나의 신호만 발생하도록 아래의 수식을 예로들어 작성부탁드림니다
If MarketPosition== 0 and c>ma(c,5) ------ A전략
Then{ Buy("매수1", AtMarket); }
If MarketPosition== 0 and c>ma(c,10) ------ B전략
Then{ Buy("매수2", AtMarket); }
If MarketPosition== 0 and c>ma(c,20) ------ C전략
Then{ Buy("매수1", AtMarket); }
참고) 위 문제의 검색결과 marketposition 함수의 특성으로 인하여 발생하는것 같습니다
아래 사항을 참고하시어 아래의 방법대로 작성부탁드림니다
제가 너무 프로그램언어에 대해 잘 몰라 아래의 방법대로 해 볼려니 잘 안됨니다
아래의 참고사항의 방법대로 구현하여 주시고
에제수식의 전략내용 일부만 고쳐서 바로 사용가능 하도록 작성 부탁드림니다
--------- 참고사항 ----------------------------------
예스트레이더 함수를 사용할때 주의해야할 사항이 있습니다.
예스랭귀지 특성인 것 같은데
예스에서 제공하는 함수는 발생시점 다음 루틴이 돌아야
값을 가지게 됩니다.
예를 들어 MarketPosition 함수 사용경우
진입1 = MarketPosition;
if MarketPosition == 0 then { buy("매수1"); 진입확인1 = 1}
진입2 = MarketPosition;
if MarketPosition == 0 then { buy("매수2"); 진입확인2 = 1}
진입3 = MarketPosition; //시점3
피라미딩(중복진입) 허용을 선택했을 경우
위와같이 로직이 구성되어 있고 매수1과 매수2 두개 조건이 다 만족할 경우
원하는 로직은 매수1이 진입되면 매수2는 진입되지 말야야하는데
그 결과는 매수1, 매수2 두개다 진입이 됩니다.
그 원인은 매수1이 발생하고 나서
아직 끝까지 진행이 안되어 MarketPosition은 0 으로 남아 있습니다.
해당 로직 끝까지 진행 후 다음 번 부터 적용이 되더라구요.
즉, 변수 값들은 아래와 같습니다.
1번째 루틴
진입1 : 0
진입확인1 : 1
진입2 : 0
진입확인2 : 1
진입3 : 0
2번째 루틴
진입1 : 1
진입확인1 : 1
진입2 : 1
진입확인2 : 1
진입3 : 1
이렇게 되기 때문에
원하지 않는 재진입이 될수 있으니 주의 하셔야 합니다. ^^
대책은 각 매수 진입시 별도의 변수를 선언해서 재진입을 방지하는 방법입니다.
if 진입확인 == 0 then { buy("매수1"); 진입확인 = 1}
진입2 = MarketPosition;
if 진입확인 == 0 then { buy("매수2"); 진입확인 = 1}
진입3 = MarketPosition; //시점3
즉, MarketPosition은 위 개념을 잘 이해하시고 제한적으로 사용하시는 것이 유익할 듯합니다
다음글
이전글