예스스탁
예스스탁 답변
2022-04-07 09:49:03
안녕하세요
예스스탁입니다.
1
​
올리신 수식에 알수없는 내용들이 있습니다
아래수식에서 해당 부분제거했습니다.
2
해당수식에 WeekHigh,WeekLow와 같이 별도의 사용자함수가 사용되어 있습니다.
함수를 첨부파일로 올려드립니다.
프로그램 설치폴더의 yeslang폴더안에 functions폴더에 다운받아 사용하시면 됩니다.
3
var : 고가채널(0), 저가채널(0), 고가채널2(0), 저가채널2(0), ii(0),cnt(0);
var : position(0), BuyP(0), SellP(0), elP(0), esP(0), PL(0);
if DayOfWeek(sDate) < DayOfWeek(sDate)[1] Then
{
고가채널 = 0;
저가채널 = 999999999;
고가채널2 = 0;
저가채널2 = 999999999;
For ii = 1 to 4
{
IF WeekHigh(ii) >= 고가채널 Then
고가채널 = WeekHigh(ii);
if WeekLow(ii) <= 저가채널 Then
저가채널 = WeekLow(ii);
if ii <= 2 Then
{
IF WeekHigh(ii) >= 고가채널2 Then
고가채널2 = WeekHigh(ii);
if WeekLow(ii) <= 저가채널2 Then
저가채널2 = WeekLow(ii);
}
}
}
if TotalTrades < 1 Then {
Buy("B0", AtStop, 고가채널);
Sell("S0",AtStop, 저가채널);
}
if DayOfWeek(sDate) < DayOfWeek(sDate)[1] Then
cnt = cnt + 1;
if cnt > 4 Then {
if H >= 고가채널[1] Then
position = 1;
if L <= 저가채널[1] Then
position = -1;
if position == 1 and L <= 저가채널2[1] Then
position = 0;
if position == -1 and H >= 고가채널2[1] Then
position = 0;
if position == 1 and position[1] <> 1 Then
BuyP = 고가채널;
if position == -1 and position[1] <> -1 Then
SellP = 저가채널;
if position == 1 Then
PL = C - BuyP;
if position <> 1 and position[1] == 1 Then
PL = 저가채널2 - BuyP;
if position == -1 Then
PL = SellP - C;
if position <> -1 and position[1] == -1 Then
PL = SellP-고가채널2;
}
if PL < 0 Then {
if position <> 1 Then
Buy("B1", AtStop, 고가채널);
if position <> -1 Then
Sell("S1",AtStop, 저가채널);
}
if MarketPosition == 1 Then
ExitLong("EL", AtStop, 저가채널2);
if MarketPosition == -1 Then
ExitShort("ES", AtStop, 고가채널2);
즐거운 하루되세요
> 늘푸른강물 님이 쓴 글입니다.
> 제목 : 시스템 수식 요청 드립니다.
> 터틀 4주 매매 전략으로 아래 전략을 박상우님 블로그에서 보고 적용하려고 하니 자꾸 에러가 납니다. 어디를 수정해야 할까요?
//출처 : 추세매매 절대지식 p375
//타임프레임 : 일봉
//매수 : 직전 4주 고가 채널을 상향돌파 시(직전 거래가 손실인 경우만 매매)
//매수청산 : 직전 2주 저가 채널을 하항이탈 시
//매도 : 직전 4주 저가 채널을 하향이탈 시(직전 거래가 손실인 경우만 매매)
//매도청산 : 직전 2주 고가 채널을 상향돌파 시
// * 직전 거래가 손실인 경우 : 가상으로 거래를 했을때 직전 포지션에서 손실을 보았다면
// 실제매매에서 4주 고가나 저가를 돌파하더라도 이번 매매는 하지 않음
// 주식처럼 매수 거래만 가능한 경우라도 모든 방향 포지션의 직전 가상 거래 손익을 고려해야 함
​
var : 고가채널(0), 저가채널(0), 고가채널2(0), 저가채널2(0), ii(0),cnt(0);
var : position(0), BuyP(0), SellP(0), elP(0), esP(0), PL(0);
if DayOfWeek(sDate) < DayOfWeek(sDate)[1] Then {
고가채널 = 0;
저가채널 = 999999999;
고가채널2 = 0;
저가채널2 = 999999999;
For ii = 1 to 4 {
IF WeekHigh(ii) >= 고가채널 Then
고가채널 = WeekHigh(ii);
if WeekLow(ii) <= 저가채널 Then
저가채널 = WeekLow(ii);
if ii <= 2 Then {
IF WeekHigh(ii) >= 고가채널2 Then
고가채널2 = WeekHigh(ii);
if WeekLow(ii) <= 저가채널2 Then
저가채널2 = WeekLow(ii);
}
}
}
​
if TotalTrades < 1 Then {
Buy("B0", AtStop, 고가채널);
Sell("S0",AtStop, 저가채널);
}
if DayOfWeek(sDate) < DayOfWeek(sDate)[1] Then
cnt = cnt + 1;
​
if cnt > 4 Then {
if H >= 고가채널[1] Then
position = 1;
if L <= 저가채널[1] Then
position = -1;
if position == 1 and L <= 저가채널2[1] Then
position = 0;
if position == -1 and H >= 고가채널2[1] Then
position = 0;
​
if position == 1 and position[1] <> 1 Then
BuyP = 고가채널;
​
if position == -1 and position[1] <> -1 Then
SellP = 저가채널;
​
if position == 1 Then
PL = C - BuyP;
if position <> 1 and position[1] == 1 Then
PL = 저가채널2 - BuyP;
if position == -1 Then
PL = SellP - C;
if position <> -1 and position[1] == -1 Then
PL = SellP-고가채널2;
}
​
if PL < 0 Then {
if position <> 1 Then
Buy("B1", AtStop, 고가채널);
if position <> -1 Then
Sell("S1",AtStop, 저가채널);
}
​
if MarketPosition == 1 Then
ExitLong("EL", AtStop, 저가채널2);
​
if MarketPosition == -1 Then
ExitShort("ES", AtStop, 고가채널2);