첨부 이미지
그림1
그림2
안녕하세요! 예스트레이더 참 잘 이용하고 있습니다. 간단한 터틀 트레이딩에 자금관리와 피라미딩을 적용했는데, 피라미딩에서 문제가 있습니다. 매수,매도 최초진입 바로 다음 봉에서 피라미딩 조건이 발생하는 경우에는 피라미딩이 적용되지 않는 것 같습니다. 진입 바로 다음봉이 아닌 상황에서는 피라미딩이 올바르게 적용되는데 말이죠.. 수식은 아래와 같습니다.
항상 도움 주셔서 감사드립니다.
input : capital(1000000000),ATRperiod(20),num(3),ABC(0.01);
Var : Nprice(0),E_num(0),N(0);
N=ATR(ATRperiod);
Nprice=(ATR(ATRperiod)*2)*bigpointvalue;
E_num=Int((capital+(NetProfit*bigpointvalue)*ABC)/Nprice);
/////////////////////////////////////////////////////////
input : period(20),period1(20);
Var1=Highest(H,period);
Var2=Lowest(L,period);
if MarketPosition == 0 And CrossUp(C,Var1[1]) Then
Begin
buy("매수",Def,Def,E_num);
Var30=Index;
End;
If MarketPosition == 1 and crossup(c,latestEntryPrice+N[Index-Var30]) and CurrentEntries<num Then
Begin
buy("매수 피라미딩",Def,Def,E_num);
Var30=Index;
End;
if MarketPosition == 1 Then
Begin
ExitLong("매수청산",AtStop,Lowest(L,period1));
ExitLong("매수 손절",Atstop,entryprice-N[BarsSinceEntry]*2);
ExitLong("매수 피라미딩 손절",AtStop,LatestEntryPrice-(2*N[Index-Var30]));
End;
/////////////////////////////////////////////////////////
If MarketPosition == 0 And CrossDown(C,Var2[1]) Then
Begin
Sell("매도",Def,Def,E_num);
Var40=Index;
End;
If MarketPosition == -1 and CrossDown(C,LatestEntryPrice-N[Index-Var40]) and CurrentEntries<num Then
Begin
Sell("매도 피라미딩",Def,Def,E_num);
Var40=Index;
End;
If MarketPosition == -1 Then
Begin
ExitShort("매도청산",Atstop,Highest(H,period1));
ExitShort("매도 손절",Atstop,entryprice+N[BarsSinceEntry]*2);
ExitShort("매도 피라미딩 손절",AtStop,LatestEntryPrice+(2*N[Index-Var40]));
End;
MessageLog("%.2f %.2f %.2f",LatestEntryPrice-N[Index-Var40],CurrentEntries,LatestEntryPrice);
답변 1
예스스탁
예스스탁 답변
2022-06-27 13:58:44
안녕하세요
예스스탁입니다.
피라미딩은 첫진입 다음봉에도 발생할 수 있습니다.
수식상 두번째 봉에 신호가 발생하지 않게 작성된 내용도 없습니다.
랭귀지의 if문은 봉완성시가 기준입니다.
작성하신 내용은 봉완성시 종가가 최고가나 최저가 갱신시 진입이고
이후 추가진입도 종가가 최근 진입가+-atr보다 크거나 같아야 합니다.
즐거운 하루되세요
> 히익 님이 쓴 글입니다.
> 제목 : 피라미딩 관련 질문
> 안녕하세요! 예스트레이더 참 잘 이용하고 있습니다. 간단한 터틀 트레이딩에 자금관리와 피라미딩을 적용했는데, 피라미딩에서 문제가 있습니다. 매수,매도 최초진입 바로 다음 봉에서 피라미딩 조건이 발생하는 경우에는 피라미딩이 적용되지 않는 것 같습니다. 진입 바로 다음봉이 아닌 상황에서는 피라미딩이 올바르게 적용되는데 말이죠.. 수식은 아래와 같습니다.
항상 도움 주셔서 감사드립니다.
input : capital(1000000000),ATRperiod(20),num(3),ABC(0.01);
Var : Nprice(0),E_num(0),N(0);
N=ATR(ATRperiod);
Nprice=(ATR(ATRperiod)*2)*bigpointvalue;
E_num=Int((capital+(NetProfit*bigpointvalue)*ABC)/Nprice);
/////////////////////////////////////////////////////////
input : period(20),period1(20);
Var1=Highest(H,period);
Var2=Lowest(L,period);
if MarketPosition == 0 And CrossUp(C,Var1[1]) Then
Begin
buy("매수",Def,Def,E_num);
Var30=Index;
End;
If MarketPosition == 1 and crossup(c,latestEntryPrice+N[Index-Var30]) and CurrentEntries<num Then
Begin
buy("매수 피라미딩",Def,Def,E_num);
Var30=Index;
End;
if MarketPosition == 1 Then
Begin
ExitLong("매수청산",AtStop,Lowest(L,period1));
ExitLong("매수 손절",Atstop,entryprice-N[BarsSinceEntry]*2);
ExitLong("매수 피라미딩 손절",AtStop,LatestEntryPrice-(2*N[Index-Var30]));
End;
/////////////////////////////////////////////////////////
If MarketPosition == 0 And CrossDown(C,Var2[1]) Then
Begin
Sell("매도",Def,Def,E_num);
Var40=Index;
End;
If MarketPosition == -1 and CrossDown(C,LatestEntryPrice-N[Index-Var40]) and CurrentEntries<num Then
Begin
Sell("매도 피라미딩",Def,Def,E_num);
Var40=Index;
End;
If MarketPosition == -1 Then
Begin
ExitShort("매도청산",Atstop,Highest(H,period1));
ExitShort("매도 손절",Atstop,entryprice+N[BarsSinceEntry]*2);
ExitShort("매도 피라미딩 손절",AtStop,LatestEntryPrice+(2*N[Index-Var40]));
End;
MessageLog("%.2f %.2f %.2f",LatestEntryPrice-N[Index-Var40],CurrentEntries,LatestEntryPrice);