예스스탁
예스스탁 답변
2025-05-12 12:41:12
안녕하세요
예스스탁입니다.
1
각진입별고가-ATR이 각 진입가보다 크다라는 조건으로 되어 있어야 하는데
첫진입고가-ATR로 되어 있어 각 진입별 고가로 수정했습니다.
2
각진입최고가격대비 ATR만큼 하락시 청산하는데
갭으로 낮아지는 경우에는 시가가 진입가보다 낮으면 시가에 청산될 수 있어
시가가 각 청산가격보다 높은 상태에서 내려와서 터치할때만 청산되게 추가 수정했습니다.
3
var : HH1(0),HH2(0),HH3(0),HH4(0),HH5(0);
var : EP1(0),EP2(0),EP3(0),EP4(0),EP5(0);
if MarketPosition == 0 Then
{
if BuyCond == True Then Buy("Long1", AtMarket);
}
if MarketPosition == 1 Then
{
if CurrentContracts > CurrentContracts[1] Then
{
if MaxEntries == 1 Then
{
HH1 = LatestEntryPrice(0);
EP1 = LatestEntryPrice(0);
}
if MaxEntries == 2 Then
{
HH2 = LatestEntryPrice(0);
EP2 = LatestEntryPrice(0);
}
if MaxEntries == 3 Then
{
HH3 = LatestEntryPrice(0);
EP3 = LatestEntryPrice(0);
}
if MaxEntries == 4 Then
{
HH4 = LatestEntryPrice(0);
EP4 = LatestEntryPrice(0);
}
if MaxEntries == 5 Then
{
HH5 = LatestEntryPrice(0);
EP5 = LatestEntryPrice(0);
}
}
if MaxEntries >= 1 and H > HH1 Then
HH1 = H;
if MaxEntries >= 2 and H > HH2 Then
HH2 = H;
if MaxEntries >= 3 and H > HH3 Then
HH3 = H;
if MaxEntries >= 4 and H > HH4 Then
HH4 = H;
if MaxEntries >= 5 and H > HH5 Then
HH5 = H;
if MaxEntries == 1 and BuyCond == True Then Buy("Long2", AtMarket);
if MaxEntries == 2 and BuyCond == True Then Buy("Long3", AtMarket);
if MaxEntries == 3 and BuyCond == True Then Buy("Long4", AtMarket);
if MaxEntries == 4 and BuyCond == True Then Buy("Long5", AtMarket);
if MaxEntries >= 1 and HH1-ATR > EP1 and NextBarOpen >= HH1-ATR Then ExitLong("TStop1", Atstop, HH1 - ATR, "Long1");
if MaxEntries >= 2 and HH2-ATR > EP2 and NextBarOpen >= HH2-ATR Then ExitLong("TStop2", Atstop, HH2 - ATR, "Long2");
if MaxEntries >= 3 and HH3-ATR > EP3 and NextBarOpen >= HH3-ATR Then ExitLong("TStop3", Atstop, HH3 - ATR, "Long3");
if MaxEntries >= 4 and HH4-ATR > EP4 and NextBarOpen >= HH4-ATR Then ExitLong("TStop4", Atstop, HH4 - ATR, "Long4");
if MaxEntries >= 5 and HH5-ATR > EP5 and NextBarOpen >= HH5-ATR Then ExitLong("TStop5", Atstop, HH5 - ATR, "Long5");
}
Else
{
HH1 = 0;
HH2 = 0;
HH3 = 0;
HH4 = 0;
HH5 = 0;
EP1 = 0;
EP2 = 0;
EP3 = 0;
EP4 = 0;
EP5 = 0;
}
즐거운 하루되세요
> 착한이 님이 쓴 글입니다.
> 제목 : 수식 수정 부탁드립니다.
> 안녕하세요.
예전에 트레일링스탑 청산전략이 포함된 피라미딩 매매전략을 문의한 결과 아래와 같은 수식을 작성해 주셨습니다.
var : HH1(0),HH2(0),HH3(0),HH4(0),HH5(0);
var : EP1(0),EP2(0),EP3(0),EP4(0),EP5(0);
if MarketPosition == 0 Then
{
if BuyCond == True Then Buy("Long1", AtMarket);
}
if MarketPosition == 1 Then
{
if CurrentContracts > CurrentContracts[1] Then
{
if MaxEntries == 1 Then
{
HH1 = LatestEntryPrice(0);
EP1 = LatestEntryPrice(0);
}
if MaxEntries == 2 Then
{
HH2 = LatestEntryPrice(0);
EP2 = LatestEntryPrice(0);
}
if MaxEntries == 3 Then
{
HH3 = LatestEntryPrice(0);
EP3 = LatestEntryPrice(0);
}
if MaxEntries == 4 Then
{
HH4 = LatestEntryPrice(0);
EP4 = LatestEntryPrice(0);
}
if MaxEntries == 5 Then
{
HH5 = LatestEntryPrice(0);
EP5 = LatestEntryPrice(0);
}
}
if MaxEntries >= 1 and H > HH1 Then
HH1 = H;
if MaxEntries >= 2 and H > HH2 Then
HH2 = H;
if MaxEntries >= 3 and H > HH3 Then
HH3 = H;
if MaxEntries >= 4 and H > HH4 Then
HH4 = H;
if MaxEntries >= 5 and H > HH5 Then
HH5 = H;
if MaxEntries == 1 and BuyCond == True Then Buy("Long2", AtMarket);
if MaxEntries == 2 and BuyCond == True Then Buy("Long3", AtMarket);
if MaxEntries == 3 and BuyCond == True Then Buy("Long4", AtMarket);
if MaxEntries == 4 and BuyCond == True Then Buy("Long5", AtMarket);
if MaxEntries >= 1 and HH1-ATR > EP1 Then ExitLong("TStop1", Atstop, HH1 - ATR, "Long1");
if MaxEntries >= 2 and HH1-ATR > EP2 Then ExitLong("TStop2", Atstop, HH2 - ATR, "Long2");
if MaxEntries >= 3 and HH1-ATR > EP3 Then ExitLong("TStop3", Atstop, HH3 - ATR, "Long3");
if MaxEntries >= 4 and HH1-ATR > EP4 Then ExitLong("TStop4", Atstop, HH4 - ATR, "Long4");
if MaxEntries >= 5 and HH1-ATR > EP5 Then ExitLong("TStop5", Atstop, HH5 - ATR, "Long5");
}
Else
{
HH1 = 0;
HH2 = 0;
HH3 = 0;
HH4 = 0;
HH5 = 0;
EP1 = 0;
EP2 = 0;
EP3 = 0;
EP4 = 0;
EP5 = 0;
}
청산전략에서 트레일링 스탑을 적용하되, 반드시 청산가가 진입가보다 높은 경우에만
적용되도록 요청을 드렸는데, 간혹 진입가보다 더 낮은 가격에서 청산되는
경우가 발생하고 있습니다.
그래서, 아래와 같이 변경을 해보았으나, 그래도 진입가보다 더 낮은 가격에서 청산되는
경우가 있었습니다.
아래의 수식이 아닌 100% 진입가보다 높은 가격에서 청산되는 수식을 부탁드리겠습니다.
감사합니다.
if MaxEntries >= 1 and HH1-ATR > EP1*1.1 Then ExitLong("TStop1", Atstop, HH1 - ATR, "Long1");
if MaxEntries >= 2 and HH1-ATR > EP2*1.1 Then ExitLong("TStop2", Atstop, HH2 - ATR, "Long2");
if MaxEntries >= 3 and HH1-ATR > EP3*1.1 Then ExitLong("TStop3", Atstop, HH3 - ATR, "Long3");
if MaxEntries >= 4 and HH1-ATR > EP4*1.1 Then ExitLong("TStop4", Atstop, HH4 - ATR, "Long4");
if MaxEntries >= 5 and HH1-ATR > EP5*1.1 Then ExitLong("TStop5", Atstop, HH5 - ATR, "Long5");