답변완료
수식 부탁드립니다
Input : Period1(5), Period2(20), Period3(40), Period4(60), Period5(80), Period6(120);
var1 = wma(C,Period1);
var2 = wma(C,Period2);
var3 = wma(C,Period3);
var4 = wma(C,Period4);
var5 = wma(C,Period5);
var6 = wma(C,Period6);
Plot1(var1, "가중이동평균1");
Plot2(var2, "가중이동평균2");
Plot3(var3, "가중이동평균3");
Plot4(var4, "가중이동평균4");
Plot5(var5, "가중이동평균5");
Plot6(var6, "가중이동평균6");
이수식을 정배열 좀목검색 수식 으로 부탁드립니다
2021-03-08
603
글번호 146891
종목검색
답변완료
트레일링 스탑에 관해
안녕하세요
지표 작성 중에 그리고 백테스팅 시에 트레일링 스탑에 관해 궁금한 사항 여쭤봅니다.
30 포인트 올랐다가 10포인트 빠지면 트레일링 스탑, 타겟 프로핏은 50포인트라고 가정해볼게요. 해당 트레일링 스탑은 봉 완성이 아니라 조건 만족 즉시 발동이라고 가정해볼게요.
매수 시그널이 발생해서 나스닥 만포인트에 매수 포지션을 들어갔다치고, 다음 봉에 10070까지 올라가서 양봉 마감했을 경우, 백테스팅 시에 타겟 프로핏을 만족했고 뜨는데, 실제로는 위아래 변동성이 워낙커서 트레일링 스탑으로 마감 할 때가 많아 보입니다.그럼에도 불구하고 프로핏 타겟 만족이라고 뜨더라고요.
즉, 백테스팅이 정확하지 않다는건데요, 이 문제를 해결하기 위해서는 어떻게해야하나요?
간단하게 위의 전략이 1시간 봉 기준으로 작동한다면, 세부적인 차트(1분봉)에서 해당 전략이 작동하게 하면 해결 될 것같은데, 도움 좀 부탁드립니다.
2021-03-08
790
글번호 146890
시스템
답변완료
부탁좀 드립니다
var : T(0),L1(0),L2(0),H1(0),H2(0);
var : BL1(0),SH1(0);
var1 = ma(C,10);
#--------------------------------------------------- 조건 1 아래로
if T <= 0 and
dayindex > 0
and countif(C<O or (C==O),2) == 2
Then
#-----------------------------------------------------조건 1 위로
{
T = 1;
L1 = l;
L2 = L1[1];
if H1 <= H2 and H2 > 0 Then
Sell("매도2");
}
#-------------------------------------------------------------- 조건 2 아래로
if T >= 0 and
dayindex > 0
and countif(C>O or (C==O),2) == 2
Then
#--------------------------------------------------------------- 조건 2 위로
{
T = -1;
H1 = H;
H2 = H1[1];
if L1 >= L2 and L2 > 0 Then
buy("매수2");
}
if T == 1 Then
{
if L < L1 Then
L1 = L;
}
if T == -1 Then
{
if H > H1 Then
H1 = H;
}
안녕하세요
위에 식을 수정좀 부탁합니다
매수 매수청산 매도 매도청산 색상을 사용합니다
당일 최고점 최저점에서 매도 매수를 할 생각입니다
매도1 조건 -- 당일 최고점을 찍고 매도(h2) 나오고 다음으로 매도(h1) 나오고
다음으로 매도(h) 가 나올때 진짜로 매도가 들어갑니다
즉 최고점을 찍고 저점무시
고점이(h2) 기준 같거나 낮아지는 신호가 세번나오면 -- 매도1
매도손절1 조전 --- 당일 최고점을 몸통(꼬리말고요) 양봉으로 돌파하면 손절1
매도2 조건 -- 매수1 진입하고 손절 조건이 맞아서 손절이 나가고
다음봉이 손절봉의 고가를 돌파하지 않으면 -- 매도2
매도손절2 조건 --- 당일 최저점을 몸통(꼬리말고요) 양봉으로 돌파하면 손절2
반대
매수1 조건 -- 당일 최저점을 찍고 매도(L2) 나오고 다음으로 매도(L1) 나오고
다음으로 매도(L) 가 나올때 진짜로 매도가 들어갑니다
즉 최저점을 찍고 고점무시
저점이(L2) 기준 같거나 높아지는 신호가 세번나오면 -- 매수1
매수손절1 조전 --- 당일 최저점을 몸통(꼬리말고요) 음봉으로 이탈하면 손절1
매수2 조건 -- 매도1 진입하고 손절 조건이 맞아서 손절이 나가고
다음봉이 손절봉의 저가를 이탈하지 않으면 -- 매수2
매수손절2 조건 --- 당일 최고점을 몸통(꼬리말고요) 음봉으로 이탈하면 손절2
매수 매도 진입후 진입봉 이전 10봉전 고가 -- 매도시 돌파시 손절3
저가 -- 매수시 이팔시 손절3
매수 매도 진입후 수익 최고가 봉의 10봉전 고가 -- 매도시 돌파시 청산
저가 -- 매수시 이탈시 정산
진입해서 수익최고가 대비 2/1 이하 내려오면 완청
진입해서 수익최고가 대비 3/1 이하 내려오면 완청
진입해서 최고 300틱 이상 수익나고 20일 이평선 골드 데드시 완청
2021-03-09
598
글번호 146889
시스템
답변완료
재문의 드립니다~
안녕하세요?
지난달에 시그널메이커에서 만든 전략을 예스로 옮기는 작업을 부탁드렷었습니다.
원글 : 71328
그리고 알려주신방법으로 테스트해보니 XAverage 함수 에러가 나서 다시 수정요청을 드렸습니다.
원글 : 71356
최종 수정해주신 수식으로 적용을 해보니 매매신호가 나와서 점검을 해보았으나
시그널메이커에서 나오는 신호와 완전히 다르게 나옵니다.
비슷하거나 유사한게 아니라 완전히 다릅니다.
다시한번 아래의 시그널메이커를 예스로 정상변환하신건지 확인한번 더 부탁드립니다.
코드 아래에 추가로 주석을 추가하였습니다.
주석 참고부탁드립니다.
input : Exit_PT(200),Exit_LPT(200),BuyProfit(150),SellProfit(150),StopTick(100);
//괄호안의 숫자는 틱수이며 각각
//하루최대수익틱수(매매시간내에 200틱에 도달하면 자동청산 후 종료), 하루최대손실 틱수(매매시간내에 200틱 도달하면 자동청산 후 종료), 매수진입시 익절틱수, 매도진입시 익절틱수, 매수 또는 매도진입시 손절틱수
var :SP(0);
Params : TradingStartTime1(090000),TradingEndTime1(045400);
//오전 9시부터 익일 새벽 4시 54분가지 매매진행하며 매매종료시간이 되면 자동청산합니다.
var : Today_P( 0 ), Pre_NetProfit( 0 ), ProfitPoint( 0 ),LossPoint(0), myOpenProfit(0),TickPoint(0);
Params : FastPeriod(92), SlowPeriod(109), SignalPeriod(85);
SP = SignalPosition;
TickPoint = OneTick * PriceScale;
V0 = MACD(C, FastPeriod, SlowPeriod);
V1 = XAverage(V0, SignalPeriod);
if Time = 090000 Or (Time >= 090000 And (Time[1] < 090000 Or Date<>date[1])) Then
Begin
ProfitPoint = 0;
Today_P = 0;
Pre_NetProfit = NetProfit[1];
condition99 = false;
condition88 = false;
End;
Today_P = NetProfit - Pre_NetProfit; // 하루 누적 수익
myOpenProfit = OpenPositionProfit;
If (Today_P + myOpenProfit) >= (Exit_PT * TickPoint ) Then
condition99 = true;
If (Today_P + myOpenProfit) <= (-Exit_LPT * TickPoint) Then
condition88 = true;
if TradingStartTime1 < TradingEndTime1 Then
Begin
If TradingStartTIME1 <= TIME And TIME <= TradingEndTIME1 Then COND44 = True
Else COND44 = False;
End
Else
Begin
If TradingStartTIME1 <= TIME Or TIME <= TradingEndTIME1 Then COND44 = True
Else COND44 = False;
End;
If Cond44 = False Then
Begin
if SP <> 0 Then
Begin
ExitLong("마감 매수 청산",OnClose,def,def,CurrentContracts);
ExitShort("마감 매도 청산",OnClose,def,def,CurrentContracts);
End;
Cond44 = False;
End;
ProfitPoint = Exit_PT * TickPoint - Today_P - myOpenProfit;
LossPoint = Exit_LPT * TickPoint + Today_P + myOpenProfit;
if 1 = Sp then
Begin
ExitLong("매수 익절마감", Atlimit, close + ProfitPoint);
ExitLong("매수 손절마감", AtStop, close - LossPoint);
ExitLong("매수 청산", Atlimit, EntryPrice + BuyProfit * TickPoint );
End
Else if -1 = Sp then
Begin
ExitShort("매도 익절마감", Atlimit, close - ProfitPoint);
ExitShort("매도 손절마감", AtStop, close + LossPoint);
ExitShort("매도 청산", Atlimit, EntryPrice - SellProfit * TickPoint );
End;
//지정한 시간대에만 거래
if Cond44 And false = condition99 And false = condition88 Then
Begin
if CrossUp(V0,V1) Then
Buy("매수")
Else if CrossDown(V0,V1) Then
Sell("매도");
End;
SetStopLoss(StopTick * TickPoint * currentcontracts ,pointstop);
//TrailingStop 적용하기
Params : up_price1(135), dn_price1(100), up_price2(100), dn_price2(80),up_price3(50), dn_price3(1);
//135틱 이상 수익중이다가 100틱으로 떨어질때 트레일링스탑 적용, 참고로 시그널메이커에서는 위와 같이 세팅했을 경우 135틱 이상 수익중일때만 트레일링스탑이 적용되었습니다.
//그러니까 135틱 이상 수익이 발생하지 않으면 2단계(100틱 => 80틱) 3단계(50틱 => 1틱) 트레일링 스탑이 적용되지 않았습니다.
var : TickSize(0);
TickSize = OneTick * PriceScale;
If MaxContractProfit < TickSize * (up_price1 + 10) Then SetStopTrailing(TickSize * dn_price1, TickSize * up_price1)
Else if MaxContractProfit < TickSize * (up_price2 + 10) Then setstopTrailing(TickSize * dn_price2, TickSize * up_price2)
Else SetStopTrailing(TickSize * dn_price3, TickSize * up_price3);
2021-03-08
556
글번호 146878
시스템