답변완료
수식 좀 부탁드립니다.
* 많은 도움에 고맙습니다.
* 아래 수식에서 점 이 안찍히는데 무엇이 잘못되엇는지 수정 좀 요청 드립니다.
즉 CrossUp(MA(C,5), MA(C,20) ) 신호가 발생할때 최고,최저점을 찾아서 점을
직을려고 합니다
## 아래 수식
var : TX33(0) , Tx03(0),TX51(0),TX57(0) ;
Condition41 = CrossUp(MA(C,5), MA(C,20) ) ;
if Condition41 == true Then value51 = H ; value52 = L;
if CrossDown( L , value52-PriceScale*5 ) Then
{TX33 = Text_New(sdate,stime,C ,"◆"); Text_SetStyle(TX33,0,0); Text_SetColor(TX33, RGB(0,0,255) ); Text_SetSize(TX33,35);
}
# 아래지표 10이평선 중간선이 60 이평 중간선 50봉중 최저점 상향 돌파시 수평선 좀 부탁 드립니다
즉 10이평 CENTLINE 라인선이
60이평 CENTLINE 라인중 최저점 크로스업 하면 수평선좀 부탁 드립니다
##INPUT: MALEN(10),CONST(0.8),ATRs(0);
VAR: CENTLINE(0), AVGRANGE(0), UPPER(0), LOWER(0);
CENTLINE=KeltnerChannel(Close, MALEN, ATRs);
AVGRANGE=Ma(TRUERANGE(),MALEN);
UPPER=CENTLINE+(AVGRANGE*CONST);
LOWER=CENTLINE-(AVGRANGE*CONST);
PLOT1(CENTLINE,"CENTLINE");
PLOT2(UPPER,"UPPER");
PLOT3(LOWER,"LOWER");
* 고맙습니다 수고하십시요.
2022-04-19
1492
글번호 158122
지표
답변완료
CT를 YT로 변환 오류 검토 부탁드립니다.
항상 감사 드립니다.
아래 수식 두 개 검토 부탁드립니다.
/*
#======================================================#
# YT <수식 3-21> 분차트를 이용한 단기매매전략
# SS_RangeBreak(v 0.2)
# 10분봉, 2000/01/04 ~ 2003/09/30
#======================================================#
의문점
방향성 청산에 Var1 이 사용되었는데, Var1은 아래 식으로 한정이 되어 있다. 값을 가져 올 수 없다.
If method == 0 then Var1=dayhigh(1)-daylow(1) ; // 전일 range
미작동
매수 진입/청산만 작동하고 , 매도 진입/청산은 작동하지 않는다.
청산식이 매수추적스탑만 나온다 . 매도진입이 없으니 매도추적스탑은 당근 없고
시가청산, 당일청산loss 가 작동하지 않는다.
그러면,
원 수식의 블록{ } 지정 오류인 것인가
컨버젼의 블록{ } 지정 오류인 것인가
#======================================================#
# YT <수식 3-22> 일간차트를 이용한 단기매매 전략
# 이름: S_Rangebreak(v 0.2)
# 체크 대상 : Setbarback, open[-1], I_MarketPosition, i_Entryprice
#======================================================#
/*
# 체크 대상 : Setbarback, open[-1], I_MarketPosition, i_Entryprice
SetBarBack : [설명] 실시간에서 현재 봉 시가를 이용해 현재 봉에 주문실행이 가능하도록 설정
예문 : 미래값 참조(open(-1))
실시간 실전매매에서 일봉상의 금일저가보다 내일시가가 100원 떨어져서 시작하면 매수하라는 예
Setbarback
If low >= open(-1) + 100 Then
Call buy("매수", Atmarket)
End If
CT 에서는 Setbarback 함수가 있는데, YT에서는 없는 것 같다. 대체를 할 수 있는 함수나 문법스킬은 무엇인가,
1일봉전 참조하면 되지 않는가? (DATA2)
open[-1] : YT에서 미래봉 참조가 가능한가?
I_MarketPosition CT는 전체 수식 영역에서 사용가능하나, YT는 전략식에서는 사용불가 , 대체방법은?
전략식에서 MarketPosition 으로 충분하지 않은가, I_MarketPosition을 사용하는 이유는?
i_Entryprice
*/
/*
#======================================================#
# CT <수식 3-21> 분차트를 이용한 단기매매전략
# SS_RangeBreak(v 0.2)
# 10분봉, 2000/01/04 ~ 2003/09/30
#======================================================#
<수식 3-21> 분차트를 이용한 단기매매전략
영역: 전략
이름: SS_RangeBreak(v 0.2)
Input: len(0.37), atrlen(20), len1(3.2), entrystart(920), entrylimit(1430), dayin(3), method(0)
‘기본식-------------------------------------------------------------
Ifmethod=0 then
Var1=highd(1)-lowd(1)
Cond1=exitname(1)="매수추적스탑"Andtdate=exitdate(1)Andtdate=Entrydate(1)_ Andexitprice(1)>opend+Var1*len
Cond2=exitname(1)="매도추적스탑"Andtdate=exitdate(1)Andtdate=Entrydate(1)_ Andexitprice(1)<opend-Var1*len
Cond3=exitname(1)="매수추적스탑"Andtdate=exitdate(1)Andtdate<>Entrydate(1)_ Andexitprice(1)>opend+Var1*len
Cond4=exitname(1)="매도추적스탑"Andtdate=exitdate(1)Andtdate<>Entrydate(1)_ Andexitprice(1)<opend-Var1*len
If ttime>Entrystart And ttime<Entrylimit Then
IfCond1=False And Cond3=False Then
Callbuy("매수",Atstop,Def,opend+Var1*len) EndIf
IfCond2=False And Cond4=False Then
Callsell("매도",Atstop,Def,opend-Var1*len) EndIf
EndIf
If position<>0 Then
Callexitlong("매수추적스탑",Atstop,hhv(1,high,barnumsinceEntry+1)-atr(atrlen)*len1)
Callexitshort("매도추적스탑",Atstop,llv(1,low,barnumsinceEntry+1)+atr(atrlen)*len1)
EndIf
‘손실발생당일청산-----------------------------------------------------
Elseif method=1 or method=2 or method=3 then
If ttime =1450 And position<>0 Then ‘2시50분에포지션이 있다면
If position=1 And Entryprice > close Then ‘진입가격보다종가가낮다면
Callexitlong("당일청산",Atmarket) EndIf
Ifposition=-1 And Entryprice<close Then
Callexitshort("당일청산",Atmarket) EndIf
EndIf
‘방향성청산----------------------------------------------------------
Elseif method=2 or method=3 then
If ttime=1450 And position<>0 Then
Ifposition=1 And (opend-Var1*len>lowdOrEntryprice>close) Then
Callexitlong("당일청산",Atmarket)
EndIf
Ifposition=-1 and (opend+var1*len<highdorEntryprice<close)Then
Callexitshort("당일청산",Atmarket)
EndIf
EndIf
‘ProfitableOpenStop---------------------------------------------------
Elseif method=3 then
If position=0 Then ‘날짜변경을카운트하기위한식
Var50=0 ‘초기화
EndIf
If tdate<>tdate(1) And position<>0 Then ‘포지션이있으면서날짜가변경되면
Var50=Var50 +1 ‘카운트를 1씩증가시킨다.
EndIf
If Var50=dayin And tdate<>tdate(1) And position<>0 Then ‘카운트가 지정한숫자가 되면
If Entryprice < opend Then ‘진입가격보다시가가크면
Callexitlong("시가청산",Atmarket) ‘청산
EndIf
If Entryprice>opend Then
Callexitshort("시가청산",Atmarket)
EndIf
EndIf
EndIf
*/
#======================================================#
# YT <수식 3-21> 분차트를 이용한 단기매매전략
# SS_RangeBreak(v 0.2)
# 10분봉, 2000/01/04 ~ 2003/09/30
#======================================================#
Input: len(0.37), atrlen(20), len1(3.2), entrystart(092000), entrylimit(143000), dayin(3), method(0) ;
//'기본식-------------------------------------------------------------
//If method == 0 then
Var1=dayhigh(1)-daylow(1) ; // 전일 range
Condition1= exitname(1) == "매수추적스탑" And date == exitdate(1) And date == Entrydate(1) And exitprice(1)>dayopen+Var1*len ;
Condition2= exitname(1) == "매도추적스탑" And date == exitdate(1) And date == Entrydate(1) And exitprice(1)<dayopen-Var1*len ;
Condition3= exitname(1) == "매수추적스탑" And date == exitdate(1) And date <> Entrydate(1) And exitprice(1)>dayopen+Var1*len ;
Condition4= exitname(1) == "매도추적스탑" And date == exitdate(1) And date <> Entrydate(1) And exitprice(1)<dayopen-Var1*len ;
If Entrystart < time And time < Entrylimit Then {
If Condition1 == False And Condition3==False Then buy("매수",Atstop,dayopen+Var1*len) ;
If Condition2 == False And Condition4==False Then sell("매도",Atstop,dayopen-Var1*len) ;
}
If MarketPosition<>0 Then {
exitlong("매수추적스탑",Atstop,NthHighest(1,high,BarsSinceEntry+1)-atr(atrlen)*len1) ;
exitshort("매도추적스탑",Atstop,NthLowest(1,low,BarsSinceEntry+1)+atr(atrlen)*len1) ;
}
//'손실발생당일청산-----------------------------------------------------
//Else if method == 1 Or method == 2 Or method == 3 then {
if method == 1 Or method == 2 Or method == 3 then {
If time ==145000 And MarketPosition<>0 Then { //'2시50분에포지션이 있다면
If MarketPosition==1 And Entryprice > close Then //'진입가격보다종가가낮다면
exitlong("당일청산lloss",Atmarket) ;
If MarketPosition == -1 And Entryprice<close Then
exitshort("당일청산sloss",Atmarket) ;
}
}
//'방향성청산----------------------------------------------------------
Else if method == 2 Or method == 3 then {
If time==145000 And MarketPosition<>0 Then {
If MarketPosition == 1 And (dayopen-Var1*len>daylow Or Entryprice>close) Then exitlong("당일청산ldirection",Atmarket) ;
If MarketPosition == -1 And (dayopen+var1*len<dayhigh Or Entryprice<close) Then exitshort("당일청산sdirection",Atmarket) ;
}
}
//'ProfitableOpenStop---------------------------------------------------
Else if method == 3 then {
If MarketPosition==0 Then //'날짜변경을 카운트하기 위한 식
Var50=0 ; //'초기화
If date<>date[1] And MarketPosition<>0 Then //'포지션이 있으면서 날짜가 변경되면
Var50=Var50 +1 ; //'카운트를 1씩증가시킨다.
If Var50==dayin And date<>date[1] And MarketPosition<>0 Then { //'카운트가 지정한숫자가 되면
If Entryprice < dayopen Then //'진입가격보다 시가가 크면
exitlong("시가청산l",Atmarket) ; //'청산
If Entryprice > dayopen Then
exitshort("시가청산s",Atmarket) ;
}
}
/*
#======================================================##======================================================#
#======================================================#
# CT <수식 3-22> 일간차트를 이용한 단기매매 전략
# 이름: S_Rangebreak(v 0.2)
# 일봉, 2000/01/04 ~ 2003/09/30
#======================================================#
Input: len(0.4), atrlen(3), profitlen(2), stoplen(4), len1(21), method(0)
‘진입전략------------------------------------------------------------
Var1=high-low ‘시가고가의 거리= range
Setbarback ‘ 주문발생시점 한봉전으로
If open(-1)<=open then ‘내일시가가오늘 시가보다적거나같으면
Callbuy("매수",Atstop,Def,open(-1)+var1*len)
Endif
If open(-1)>open then ‘내일 시가가오늘시가보다크면
Callsell("매도",Atstop,Def,open(-1)-var1*len)
Endif
Ifmethod=1then
‘시가청산조건식-------------------------------------------------------
Ifi_position<>i_position(1)Then
Var10=0‘초기화
Var11=0‘초기화
EndIf
Ifi_position=1Andopen(-1)>=i_Entryprice+atr(atrlen)Then ‘현재매수상태이며진입이후 시가가진입가보다일정수준 이상이면
Var10=var10+1 ‘var10을1씩증가
ElseIfi_position=-1Andopen(-1)<=i_Entryprice-atr(atrlen)Then ‘현재매도상태이며진입이후 시가가진입가 보다일정수준 이하이면
Var10=var10+1 ‘var10을1씩증가
EndIf
Ifi_position=1Andopen(-1)<=i_Entryprice Then
‘현재매수상태이며진입이후 시가가진입가 보다일정수준 이하이면
Var11=var11+1 ‘var11을1씩증가
elseIfi_position=-1Andopen(-1)>=i_EntrypriceThen
‘현재매도상태이며진입이후 시가가진입가 보다일정수준 이상이면
Var11=var11+1 ‘var11을1씩증가
EndIf
‘수익발생시가청산-----------------------------------------------------
Ifposition=1Then
IfVar10=profitlenThen
Callexitlong("시가청산",Atmarket)
EndIf
Elseifposition=-1Then
IfVar10=profitlenThen
Callexitshort("시가청산",Atmarket)
EndIf
EndIf
‘손실발생시가청산-----------------------------------------------------
Ifposition=1Then
IfVar11=stoplenThen
Callexitlong("손실청산",Atmarket)
EndIf
Elseifposition=-1Then
IfVar11=stoplenThen
Callexitshort("손실청산",Atmarket)
EndIf
EndIf
‘ATR추적스탑--------------------------------------------------------
Ifposition=1Then
Callexitlong("추적스탑",Atstop,hhv(1,high,i_barnumsinceEntry+1)-atr(atrlen)*len1)
Elseifposition=-1Then
Callexitshort("추적스탑",Atstop,llv(1,low,i_barnumsinceEntry+1)+atr(atrlen)*len1)
EndIf
EndIf
*/
#======================================================#
# YT <수식 3-22> 일간차트를 이용한 단기매매 전략
# 이름: S_Rangebreak(v 0.2)
# 일봉, 2000/01/04 ~ 2003/09/30
# 체크 대상 : Setbarback, open[-1], I_MarketPosition, i_Entryprice
#======================================================#
Input: len(0.4), atrlen(3), profitlen(2), stoplen(4), len1(21), method(0) ;
//‘진입전략------------------------------------------------------------
Var1=high-low ; //‘시가고가의 거리= range
#Setbarback ; //‘ 주문발생시점 한 봉전으로
#Setbarback ; // YT에서 대체할 수 있는 방법은? 왜 쓰는가? 참조나 index로 제어가 안되는가?
### open[-1] YT에서 내일시가란 개념이 없는것 같은데
If open[-1] <= open then //‘내일시가가 오늘시가보다 적거나 같으면
buy("매수", Atstop, open[-1]+var1*len) ;
If open[-1] > open then //‘내일시가가 오늘시가보다 크면
sell("매도",Atstop, open[-1]-var1*len) ;
If method == 1 Then
{
//‘시가청산조건식-------------------------------------------------------
// If I_MarketPosition <> I_MarketPosition(1) Then {
If MarketPosition <> MarketPosition(1) Then {
Var10=0 ; //‘초기화
Var11=0 ; //‘초기화
}
/*
If I_MarketPosition == 1 And open[-1] >= i_Entryprice+atr(atrlen) Then //‘현재매수상태이며진입이후 시가가진입가보다일정수준 이상이면
Var10=var10+1 ; //‘var10을1씩증가
Else If I_MarketPosition ==-1 And open[-1] <= i_Entryprice-atr(atrlen) Then //‘현재매도상태이며진입이후 시가가진입가 보다일정수준 이하이면
Var10=var10+1 ; //‘var10을1씩증가
If I_MarketPosition == 1 And open[-1] <= i_Entryprice Then //‘현재매수상태이며진입이후 시가가진입가 보다일정수준 이하이면
Var11=var11+1 ; //‘var11을1씩증가
Else If I_MarketPosition ==-1 And open[-1] >= i_Entryprice Then //‘현재매도상태이며진입이후 시가가진입가 보다일정수준 이상이면
Var11=var11+1 ; //‘var11을1씩증가
*/
If MarketPosition == 1 And open[-1] >= Entryprice+atr(atrlen) Then //‘현재매수상태이며진입이후 시가가진입가보다일정수준 이상이면
Var10=var10+1 ; //‘var10을1씩증가
Else If MarketPosition ==-1 And open[-1] <= Entryprice-atr(atrlen) Then //‘현재매도상태이며진입이후 시가가진입가 보다일정수준 이하이면
Var10=var10+1 ; //‘var10을1씩증가
If MarketPosition == 1 And open[-1] <= Entryprice Then //‘현재매수상태이며진입이후 시가가진입가 보다일정수준 이하이면
Var11=var11+1 ; //‘var11을1씩증가
Else If MarketPosition ==-1 And open[-1] >= Entryprice Then //‘현재매도상태이며진입이후 시가가진입가 보다일정수준 이상이면
Var11=var11+1 ; //‘var11을1씩증가
//‘수익발생시가청산-----------------------------------------------------
If MarketPosition == 1 Then
If Var10 == profitlen Then exitlong("시가청산L",Atmarket) ;
Else If MarketPosition == -1 Then
If Var10 == profitlen Then exitshort("시가청산S",Atmarket) ;
//‘손실발생시가청산-----------------------------------------------------
If MarketPosition == 1 Then
If Var11 == stoplen Then exitlong("손실청산L",Atmarket) ;
Else If MarketPosition == -1 Then
If Var11 == stoplen Then exitshort("손실청산S",Atmarket) ;
//‘ATR추적스탑--------------------------------------------------------
If MarketPosition == 1 Then
exitlong("추적스탑L",Atstop,NthHighest(1,high,BarsSinceEntry+1)-atr(atrlen)*len1) ;
Else If MarketPosition == -1 Then
exitshort("추적스탑S",Atstop,NthLowest(1,low,BarsSinceEntry+1)+atr(atrlen)*len1) ;
}
2022-04-18
1290
글번호 158107
시스템