커뮤니티
문의드립니다.
2018-01-03 07:49:59
163
글번호 115376
도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다.
1. 기타
손익비는 떨어 뜨리지만 승률은 떨어 뜨리지 않으면서 피라미딩을 하려고 하는데요.
그러러면
-(진입포지션 - 스탑지점)의 수익금(혹은 수익률)이
-2차 포지션의 손실금(2차 진입지점-스탑지점) + 설정 슬리피지(1틱)+수수료(0.004) +최소수익으로 설정해놓은 금액(2틱) 보다는 커야 할 듯 합니다.
-3차로 들어가려면 1차 2차까지 들어간 진입 포지션의 수익금이
-3차 진입포지션의 손실금(3차 진입지점-스탑지점)+설정 슬리피지(1틱)+수수료(0.004)+최소수익보다는 커야할 것이고 나머지 4차 5차도 같은 방식이어야 할 듯 합니다.
이걸 어떤 방식으로 구현할 수 있을까요?
청산지점은 아래 청산 수식을 쓰려고 합니다.
input: TsValue(1);
var: Hvalue(0),Lvalue(0);
If MarketPosition() == 1 Then {
Hvalue = Highest(H,BarsSinceEntry+1);
ExitLong("trailstop_EL", Atstop, Hvalue-TsValue*PriceScale);
}
If MarketPosition() == -1 Then {
Lvalue = Lowest(L,BarsSinceEntry+1);
ExitShort("trailStop_Es", Atstop, Lvalue + TsValue*PriceScale);
}
2. 기타
외부변수 진입금액, 제한 금액
-진입 전봉보다 0.5틱 더 크면 진입금액만큼 매수 진입(ATSTOP)
-전봉이 수익이면 진입수량*2 추가
-'' 손실이면 진입금액으로 돌아감
-진입금액은 제한금액이상으로 늘리지는 않음.
3. 아래와 같이 buysetup으로 고가 저장을 한 뒤 돌파로 수식을 짤 때 buysetup이 된 다음봉 이상 에서만(buysetup봉에서는 진입하지 않도록) 진입이 되도록 하려면 어떻게 고쳐야 하나요.
어느 부분을 고친건지 간단한 주석 부탁드립니다.
Inputs: rt(0.6),틱수(10);
var : ChUp(0), ChDn(0);
var : buybase(0),buysetup(false),Buyindex(0);
var : Sellbase(0),Sellsetup(false),Sellindex(0);
ChUp = dayopen + ((dayhigh(1) - daylow(1)) * rt);
ChDn = dayopen - ((dayhigh(1) - daylow(1)) * rt);
If crossup (Close, ChUp) then{
buysetup = true;
buybase = H;
Buyindex = index;
}
if C < CHDn Then
buySetup = false;
If crossdown (Close, ChDn) then{
Sellsetup = true;
Sellbase = L;
Sellindex = index;
}
if C > CHup Then
SellSetup = false;
if buysetup == true and MarketPosition == 0 then{
buy("매수",AtStop,buybase+PriceScale*틱수);
}
if Sellsetup == true and MarketPosition == 0 then{
sell("매도",AtStop,Sellbase-PriceScale*틱수);
}
}
4. 기타
답변해주신 것 듣고 시뮬레이션은 아래 식으로만 하는 중인데요. 이제 시뮬레이션 결과가 좋아서 실전에서 같은 봉에서도 발생할 수 있도록 하게 하려면 아래 수식을 어떻게 바꾸어야 하는지요.
input: TsValue(1);
var: Hvalue(0),Lvalue(0);
If MarketPosition() == 1 Then {
Hvalue = Highest(H,BarsSinceEntry+1);
ExitLong("trailstop_EL", Atstop, Hvalue-TsValue*PriceScale);
}
If MarketPosition() == -1 Then {
Lvalue = Lowest(L,BarsSinceEntry+1);
ExitShort("trailStop_Es", Atstop, Lvalue + TsValue*PriceScale);
}
5. 전에 짜주신 일정봉 지나서 손익라인 닿으면 즉시 청산 식인데요. 이걸 일정봉 지난 뒤 손익분기라인 아래(매수면 아래 매도면 위) 있으면 즉시 청산으로 수정 부탁드립니다. 혹시 이미 포함돼 있는 건가요?
input : 최소기다리는봉(10),슬리피지틱수(1),수수료율(0.01);
if MarketPosition == 1 and BarsSinceEntry >= 최소기다리는봉 Then{
var1 = EntryPrice+PriceScale*슬리피지틱수+EntryPrice*(수수료율/100);
if NextBarOpen <= var1 Then
exitlong("bx1",AtLimit,var1);
Else
exitlong("bx2",AtStop,var1);
}
if MarketPosition == -1 and BarsSinceEntry >= 최소기다리는봉 Then{
var1 = EntryPrice-PriceScale*슬리피지틱수-EntryPrice*(수수료율/100);
if NextBarOpen >= var1 Then
ExitShort("sx1",AtLimit,var1);
Else
ExitShort("sx2",AtStop,var1);
}
답변 1
예스스탁 예스스탁 답변
2018-01-03 14:00:41
안녕하세요
예스스탁입니다.
1.2
올려주신 부분은 내용판단이 되지 않습니다.
도움을 드리지 못해 죄송합니다.
3
기본적으로 셋업봉에서는 진입을 하지 않습니다.'
수식의 진입에 atstop이 기본타입니다.
atstop은 셋팅후 다음봉에서 신호가 발생하므로
셋업봉에서 진입이 발생할수 없습니다.
false가 되는 조건이 반대 조건발생시인데
각 선을 이탈하면 false가 되게 수정했습니다.
Inputs: rt(0.6),틱수(10);
var : ChUp(0), ChDn(0);
var : buybase(0),buysetup(false),Buyindex(0);
var : Sellbase(0),Sellsetup(false),Sellindex(0);
ChUp = dayopen + ((dayhigh(1) - daylow(1)) * rt);
ChDn = dayopen - ((dayhigh(1) - daylow(1)) * rt);
If crossup (Close, ChUp) then{
buysetup = true;
buybase = H;
Buyindex = index;
}
#종가가 상단하라이면 buySetup이 false가 되게 수정
if C < chup Then
buySetup = false;
If crossdown (Close, ChDn) then{
Sellsetup = true;
Sellbase = L;
Sellindex = index;
}
#종가가 하단보다 크면 SellSetup이 false가 되게 수정
if C > CHdn Then
SellSetup = false;
if buysetup == true and MarketPosition == 0 then{
buy("매수",AtStop,buybase+PriceScale*틱수);
}
if Sellsetup == true and MarketPosition == 0 then{
sell("매도",AtStop,Sellbase-PriceScale*틱수);
}
4
1틱이상 수익후 최고수익점 대비 1틱하락하면 청산입니다.
수익을 최소 1틱이상 지정해야 합니다
SetStopTrailing(PriceScale*1,PriceScale*1,PointStop);
5
input : 최소기다리는봉(10),슬리피지틱수(1),수수료율(0.01);
if MarketPosition == 1 and BarsSinceEntry >= 최소기다리는봉 Then{
var1 = EntryPrice+PriceScale*슬리피지틱수+EntryPrice*(수수료율/100);
exitlong("bx2",AtStop,var1);
}
if MarketPosition == -1 and BarsSinceEntry >= 최소기다리는봉 Then{
var1 = EntryPrice-PriceScale*슬리피지틱수-EntryPrice*(수수료율/100);
ExitShort("sx2",AtStop,var1);
}
즐거운 하루되세요
> 잡다백수 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 도움주시는 덕분에 도전하고 있습니다. 매번 감사합니다.
1. 기타
손익비는 떨어 뜨리지만 승률은 떨어 뜨리지 않으면서 피라미딩을 하려고 하는데요.
그러러면
-(진입포지션 - 스탑지점)의 수익금(혹은 수익률)이
-2차 포지션의 손실금(2차 진입지점-스탑지점) + 설정 슬리피지(1틱)+수수료(0.004) +최소수익으로 설정해놓은 금액(2틱) 보다는 커야 할 듯 합니다.
-3차로 들어가려면 1차 2차까지 들어간 진입 포지션의 수익금이
-3차 진입포지션의 손실금(3차 진입지점-스탑지점)+설정 슬리피지(1틱)+수수료(0.004)+최소수익보다는 커야할 것이고 나머지 4차 5차도 같은 방식이어야 할 듯 합니다.
이걸 어떤 방식으로 구현할 수 있을까요?
청산지점은 아래 청산 수식을 쓰려고 합니다.
input: TsValue(1);
var: Hvalue(0),Lvalue(0);
If MarketPosition() == 1 Then {
Hvalue = Highest(H,BarsSinceEntry+1);
ExitLong("trailstop_EL", Atstop, Hvalue-TsValue*PriceScale);
}
If MarketPosition() == -1 Then {
Lvalue = Lowest(L,BarsSinceEntry+1);
ExitShort("trailStop_Es", Atstop, Lvalue + TsValue*PriceScale);
}
2. 기타
외부변수 진입금액, 제한 금액
-진입 전봉보다 0.5틱 더 크면 진입금액만큼 매수 진입(ATSTOP)
-전봉이 수익이면 진입수량*2 추가
-'' 손실이면 진입금액으로 돌아감
-진입금액은 제한금액이상으로 늘리지는 않음.
3. 아래와 같이 buysetup으로 고가 저장을 한 뒤 돌파로 수식을 짤 때 buysetup이 된 다음봉 이상 에서만(buysetup봉에서는 진입하지 않도록) 진입이 되도록 하려면 어떻게 고쳐야 하나요.
어느 부분을 고친건지 간단한 주석 부탁드립니다.
Inputs: rt(0.6),틱수(10);
var : ChUp(0), ChDn(0);
var : buybase(0),buysetup(false),Buyindex(0);
var : Sellbase(0),Sellsetup(false),Sellindex(0);
ChUp = dayopen + ((dayhigh(1) - daylow(1)) * rt);
ChDn = dayopen - ((dayhigh(1) - daylow(1)) * rt);
If crossup (Close, ChUp) then{
buysetup = true;
buybase = H;
Buyindex = index;
}
if C < CHDn Then
buySetup = false;
If crossdown (Close, ChDn) then{
Sellsetup = true;
Sellbase = L;
Sellindex = index;
}
if C > CHup Then
SellSetup = false;
if buysetup == true and MarketPosition == 0 then{
buy("매수",AtStop,buybase+PriceScale*틱수);
}
if Sellsetup == true and MarketPosition == 0 then{
sell("매도",AtStop,Sellbase-PriceScale*틱수);
}
}
4. 기타
답변해주신 것 듣고 시뮬레이션은 아래 식으로만 하는 중인데요. 이제 시뮬레이션 결과가 좋아서 실전에서 같은 봉에서도 발생할 수 있도록 하게 하려면 아래 수식을 어떻게 바꾸어야 하는지요.
input: TsValue(1);
var: Hvalue(0),Lvalue(0);
If MarketPosition() == 1 Then {
Hvalue = Highest(H,BarsSinceEntry+1);
ExitLong("trailstop_EL", Atstop, Hvalue-TsValue*PriceScale);
}
If MarketPosition() == -1 Then {
Lvalue = Lowest(L,BarsSinceEntry+1);
ExitShort("trailStop_Es", Atstop, Lvalue + TsValue*PriceScale);
}
5. 전에 짜주신 일정봉 지나서 손익라인 닿으면 즉시 청산 식인데요. 이걸 일정봉 지난 뒤 손익분기라인 아래(매수면 아래 매도면 위) 있으면 즉시 청산으로 수정 부탁드립니다. 혹시 이미 포함돼 있는 건가요?
input : 최소기다리는봉(10),슬리피지틱수(1),수수료율(0.01);
if MarketPosition == 1 and BarsSinceEntry >= 최소기다리는봉 Then{
var1 = EntryPrice+PriceScale*슬리피지틱수+EntryPrice*(수수료율/100);
if NextBarOpen <= var1 Then
exitlong("bx1",AtLimit,var1);
Else
exitlong("bx2",AtStop,var1);
}
if MarketPosition == -1 and BarsSinceEntry >= 최소기다리는봉 Then{
var1 = EntryPrice-PriceScale*슬리피지틱수-EntryPrice*(수수료율/100);
if NextBarOpen >= var1 Then
ExitShort("sx1",AtLimit,var1);
Else
ExitShort("sx2",AtStop,var1);
}
이전글