커뮤니티
수식부탁드립니다.
2016-07-05 11:51:20
146
글번호 99745
안녕하세요.
연결선물 당일청산 피라미딩진입 아래수식에서 당일손실제한 청산이후 재진입할경우에는
1회만 진입되고 피라미딩 진입이 누적진입횟수까지 진입이 안됨니다. 수정부탁드립니다.
(제가 수정해도 잘안되네요. 수정 후 시뮬레이션 차트에 적용 검증 부탁 드립니다.)
감사합니다.
input : N(1),PN(2),,PPN(3),당일손실(1.5),i증감(0.2),진입수량(1),누적진입횟수(5);
var : cnt(0),BCount(0),SCount(0);
var : NP(0),PreNP(0),DayPL(0),loss(0),v1(0);
var : mav1(0),mav2(0),mav3(0),mav4(0),mav5(0),mav6(0);
var : Bxcond(false),SxCond(false);
var : Xcond(false);
var : TT(0),KK(0),DD(0);
NP = NetProfit;
if date != date[1] Then{
preNP = NP[1];
Condition1 = false;
v1 = 0;
Xcond = false;
}
dayPL = NP-PreNP;
BCount = 0 ;
SCount = 0 ;
for cnt = 0 to 10 {
if EntryDate(cnt) == sdate and MarketPosition(cnt) == 1 then
BCount = BCount + 1;
if EntryDate(cnt) == sdate and MarketPosition(cnt) == -1 then
SCount = SCount + 1;
}
if Condition1 == false and TotalTrades > TotalTrades[1] Then{
Condition1 = true;
if PositionProfit(1) > 0 Then
v1 = PositionProfit(1);
}
//------------------------------------------------------------------------------------------------------
#추가진입인 BB가 아닐때만 발동
if MarketPosition == 1 and IsEntryName("BB") == false Then{
ExitLong("당일손실제한bx3",AtStop,avgEntryPrice-(당일손실+(dayPL-v1))/CurrentContracts);
}
#추가진입인 SS가 아닐때만 발동
if MarketPosition == -1 and IsEntryName("SS") == false Then{
ExitShort("당일손실제한sx3",AtStop,avgEntryPrice+(당일손실+(dayPL-v1))/CurrentContracts);
}
//------------------------------------------------------------------------------------------------------
#피라미딩진입
if MarketPosition == 1 and MaxEntries < 누적진입횟수 and Bxcond == false and Xcond == false Then
Buy("PBB",atlimit,LatestEntryPrice(0)+i증감,진입수량);
if MarketPosition == -1 and MaxEntries < 누적진입횟수 and Sxcond == false and XCond == false Then
sell("PSS",atlimit,LatestEntryPrice(0)-i증감,진입수량);
//-----------------------------------------------------------------------------------------------------
#당일손실제한 청산이 발생하면 Xcond는 true로 변경
if MarketPosition == 0 and
TotalTrades > TotalTrades[1] and
(IsExitName("당일손실제한sx3",1) == true or IsExitName("당일손실제한bx3",1) == true) Then
Xcond = true;
#추가진입
#무포지션이고 Xcond가 true이고
#직전청산이 당일손실제한일때만 발생
if MarketPosition == 0 and Xcond == true and
(IsExitName("당일손실제한sx3",1) == true or IsExitName("당일손실제한bx3",1) == true) Then{
if Crossup(ma(c,10),ma(C,20)) Then
Buy("BB",AtMarket);
if CrossDown(ma(C,10),ma(C,20)) Then
Sell("SS",AtMarket);
}
#BB진입에 대한 청산
if MarketPosition == 1 and IsEntryName("BB") == true Then{
ExitLong("BL1",AtStop,avgEntryPrice-0.9);
ExitLong("BP1",AtLimit,avgEntryPrice+1.5);
}
#SS진입에 대한 청산
if MarketPosition == -1 and IsEntryName("SS") == true Then{
ExitShort("SL1",AtStop,avgEntryPrice+0.9);
ExitShort("SP1",AtLimit,avgEntryPrice-1.5);
}
//======================================================================================================
#진입수식(예제)
Input : Period(20);
value1 = TRIX(Period);
# 매수/매도청산
If CrossUP(value1, 0) and BCount+SCount < N and dayPL > -당일손실 Then{
Buy("TRIXB");
}
# 매도/매수청산
If CrossDown(value1, 0) and BCount+SCount < N and dayPL > -당일손실 Then{
Sell("TRIXS");
}
//------------------------------------------------------------------------------------------------------
SetStopEndofday(150000);
//------------------------------------------------------------------------------------------------------
답변 1
예스스탁 예스스탁 답변
2016-07-05 11:51:31
안녕하세요
예스스탁입니다.
//------------------------------------------------------------------------------------------------------
#피라미딩진입
if MarketPosition == 1 and MaxEntries < 누적진입횟수 and Bxcond == false and Xcond == false Then
Buy("PBB",atlimit,LatestEntryPrice(0)+i증감,진입수량);
if MarketPosition == -1 and MaxEntries < 누적진입횟수 and Sxcond == false and XCond == false Then
sell("PSS",atlimit,LatestEntryPrice(0)-i증감,진입수량);
//-----------------------------------------------------------------------------------------------------
위 내용이 파라미딩 되는 내용입니다.
당일손실제한 청산이 발생하면
Xcond가 true가 되므로 Xcond == false를 삭제하시면 됩니다.
또한 피라미딩 진입에 Bxcond == false,Sxcond == false가 각각 있는데
어떤 내용인지 모르겠습니다.
해당 변수들은 수식내에서 따로 확인하셔야 합니다.
즐거운 하루되세요
> dandy 님이 쓴 글입니다.
> 제목 : 수식부탁드립니다.
> 안녕하세요.
연결선물 당일청산 피라미딩진입 아래수식에서 당일손실제한 청산이후 재진입할경우에는
1회만 진입되고 피라미딩 진입이 누적진입횟수까지 진입이 안됨니다. 수정부탁드립니다.
(제가 수정해도 잘안되네요. 수정 후 시뮬레이션 차트에 적용 검증 부탁 드립니다.)
감사합니다.
input : N(1),PN(2),,PPN(3),당일손실(1.5),i증감(0.2),진입수량(1),누적진입횟수(5);
var : cnt(0),BCount(0),SCount(0);
var : NP(0),PreNP(0),DayPL(0),loss(0),v1(0);
var : mav1(0),mav2(0),mav3(0),mav4(0),mav5(0),mav6(0);
var : Bxcond(false),SxCond(false);
var : Xcond(false);
var : TT(0),KK(0),DD(0);
NP = NetProfit;
if date != date[1] Then{
preNP = NP[1];
Condition1 = false;
v1 = 0;
Xcond = false;
}
dayPL = NP-PreNP;
BCount = 0 ;
SCount = 0 ;
for cnt = 0 to 10 {
if EntryDate(cnt) == sdate and MarketPosition(cnt) == 1 then
BCount = BCount + 1;
if EntryDate(cnt) == sdate and MarketPosition(cnt) == -1 then
SCount = SCount + 1;
}
if Condition1 == false and TotalTrades > TotalTrades[1] Then{
Condition1 = true;
if PositionProfit(1) > 0 Then
v1 = PositionProfit(1);
}
//------------------------------------------------------------------------------------------------------
#추가진입인 BB가 아닐때만 발동
if MarketPosition == 1 and IsEntryName("BB") == false Then{
ExitLong("당일손실제한bx3",AtStop,avgEntryPrice-(당일손실+(dayPL-v1))/CurrentContracts);
}
#추가진입인 SS가 아닐때만 발동
if MarketPosition == -1 and IsEntryName("SS") == false Then{
ExitShort("당일손실제한sx3",AtStop,avgEntryPrice+(당일손실+(dayPL-v1))/CurrentContracts);
}
//------------------------------------------------------------------------------------------------------
#피라미딩진입
if MarketPosition == 1 and MaxEntries < 누적진입횟수 and Bxcond == false and Xcond == false Then
Buy("PBB",atlimit,LatestEntryPrice(0)+i증감,진입수량);
if MarketPosition == -1 and MaxEntries < 누적진입횟수 and Sxcond == false and XCond == false Then
sell("PSS",atlimit,LatestEntryPrice(0)-i증감,진입수량);
//-----------------------------------------------------------------------------------------------------
#당일손실제한 청산이 발생하면 Xcond는 true로 변경
if MarketPosition == 0 and
TotalTrades > TotalTrades[1] and
(IsExitName("당일손실제한sx3",1) == true or IsExitName("당일손실제한bx3",1) == true) Then
Xcond = true;
#추가진입
#무포지션이고 Xcond가 true이고
#직전청산이 당일손실제한일때만 발생
if MarketPosition == 0 and Xcond == true and
(IsExitName("당일손실제한sx3",1) == true or IsExitName("당일손실제한bx3",1) == true) Then{
if Crossup(ma(c,10),ma(C,20)) Then
Buy("BB",AtMarket);
if CrossDown(ma(C,10),ma(C,20)) Then
Sell("SS",AtMarket);
}
#BB진입에 대한 청산
if MarketPosition == 1 and IsEntryName("BB") == true Then{
ExitLong("BL1",AtStop,avgEntryPrice-0.9);
ExitLong("BP1",AtLimit,avgEntryPrice+1.5);
}
#SS진입에 대한 청산
if MarketPosition == -1 and IsEntryName("SS") == true Then{
ExitShort("SL1",AtStop,avgEntryPrice+0.9);
ExitShort("SP1",AtLimit,avgEntryPrice-1.5);
}
//======================================================================================================
#진입수식(예제)
Input : Period(20);
value1 = TRIX(Period);
# 매수/매도청산
If CrossUP(value1, 0) and BCount+SCount < N and dayPL > -당일손실 Then{
Buy("TRIXB");
}
# 매도/매수청산
If CrossDown(value1, 0) and BCount+SCount < N and dayPL > -당일손실 Then{
Sell("TRIXS");
}
//------------------------------------------------------------------------------------------------------
SetStopEndofday(150000);
//------------------------------------------------------------------------------------------------------
다음글
이전글