커뮤니티
요청드립니다.
2018-11-25 23:04:32
207
글번호 123818
아래 식에서
Price Channel 4개의 모든 Channel이 [1]대비 같거나 상승중 일때 조건에 따라 매수
Price Channel 4개의 모든 Channel이 [1]대비 같거나 하락중 일때 조건에 따라 매도
를 하고 싶은데 Price Channel 4개를 지표로 나타내고 보니 지표상 하락중인데 매수가 나타납니다.(그림참조) 수정좀 부탁드립니다.
SetStopProfittarget(Target) 목표청산에 도달하면 최고값대비 10% 하락하면 청산
해선 PriceScale을 고려하여 청산 수식 포함요청드립니다.
###매수 매도 수식###
input : 손절(80),Target(0.4);
var : BH(0),SL(0),HE(0),LE(0);
var : T(0), S(0);
##Price Chanel
INPUT : Length51(50), Length52(200) ;
VAR : Tchan51(0), Bchan52(0),Tchan53(0), Bchan54(0);;
Tchan51 = Highest(High, Length51);
Bchan52 = Lowest(Low, Length51);
Tchan53 = Highest(High, Length52);
Bchan54 = Lowest(Low, Length52);
input : P31(30), P82(280);
var31 = wma(C,P31);
var82 = wma(C,P82);
##M Price Chanel
// Tchan53 = Highest(High, Length52)[1]; # Highest Length52(200)
// Tchan51 = Highest(High, Length51)[1]; # Highest Length51(50)
// Bchan52 = Lowest(Low, Length51)[1]; # Lowest Length51(50)
// Bchan54 = Lowest(Low, Length52)[1]; # Lowest Length52(200)
## Price Chanel 4개 모두 상승 중이면 S = 1
if Tchan53[1] < Tchan53
and Tchan51[1] < Tchan51
and Bchan52[1] < Bchan52
and Bchan54[1] < Bchan54
then {
S = 1;
}
## Price Chanel 4개 모두 하락 중이면 S = -1
if Tchan53[1] > Tchan53
and Tchan51[1] > Tchan51
and Bchan52[1] > Bchan52
and Bchan54[1] > Bchan54
Then {
S = -1;
}
if S == 1 and Crossup(var31, var82)
Then buy("B2");
if S == -1 and Crossdown(var31, var82)
Then sell("S2");
### 청산
if MarketPosition == 1 Then{
BH = highest(H,BarsSinceEntry);
if MaxEntries == 1 Then
HE = LatestEntryPrice(0);
if MaxEntries >= 2 and LatestEntryPrice(0) > HE Then
HE = LatestEntryPrice(0);
SetStopProfittarget(Target);
ExitLong("B손절",AtStop,HE-PriceScale*손절);
}
if MarketPosition == -1 Then{
SL = Lowest(L,BarsSinceEntry);
if MaxEntries == 1 Then
LE = LatestEntryPrice(0);
if MaxEntries >= 2 and LatestEntryPrice(0) < LE Then
LE = LatestEntryPrice(0);
SetStopProfittarget(Target);
ExitShort("S손절",AtStop,LE+PriceScale*손절);
}
/*
#### 지표
INPUT : Length51(50), Length52(200) ;
VAR : Tchan51(0), Bchan52(0),Tchan53(0), Bchan54(0);
Tchan51 = Highest(High, Length51);
Bchan52 = Lowest(Low, Length51);
Tchan53 = Highest(High, Length52);
Bchan54 = Lowest(Low, Length52);
Plot51(Tchan51, "TOP50");
Plot52(Bchan52, "BOT50");
Plot53(Tchan53, "TOP200");
Plot54(Bchan54, "BOT200");
- 1. 확인.jpg (0.01 MB)
답변 1
예스스탁 예스스탁 답변
2018-11-26 15:40:40
안녕하세요? 예스스탁입니다.
Tchan53[1] 의 경우 한 봉전의 Tchan53 값을 의미합니다. 그런데, 의도하시는 내용은 한봉전이 아니라 과거 유동적인 N봉전에 상승이나 하락을 했는지를 판단하시려는 것으로 생각이 됩니다.
진입식은 아래와 같이 작성하시면 됩니다.
###매수 매도 수식###
input : 손절(80),Target(0.4);
var : BH(0),SL(0),HE(0),LE(0);
var : T(0), S(0);
##Price Chanel
INPUT : Length51(50), Length52(200) ;
VAR : Tchan51(0), Bchan52(0),Tchan53(0), Bchan54(0);;
Tchan51 = Highest(High, Length51);
Bchan52 = Lowest(Low, Length51);
Tchan53 = Highest(High, Length52);
Bchan54 = Lowest(Low, Length52);
input : P31(30), P82(280);
var31 = wma(C,P31);
var82 = wma(C,P82);
if Tchan51 > tchan51[1] Then
value1 = 1;
if Tchan51 < tchan51[1] Then
value1 = -1;
if Bchan52 > Bchan52[1] Then
value2 = 1;
if Bchan52 < Bchan52[1] Then
value2 = -1;
if Tchan53 > tchan53[1] Then
value3 = 1;
if Tchan53 < tchan53[1] Then
value4 = -1;
if Bchan54 > Bchan54[1] Then
value4 = 1;
if Bchan54 < Bchan54[1] Then
value4 = -1;
## Price Chanel 4개 모두 상승 중이면 S = 1
if value1 + value2 + value3 + value4 == 4
then {
S = 1;
}
## Price Chanel 4개 모두 하락 중이면 S = -1
if value1 + value2 + value3 + value4 == -4
Then {
S = -1;
}
if S == 1 and Crossup(var31, var82)
Then buy("B2");
if S == -1 and Crossdown(var31, var82)
Then sell("S2");
청산의 경우 목표수익 도달후 10% 반대로 움직이면 청산한다고 하셨는데,
setstopprofit의 조건을 만족하게 되면 바로 청산되므로 setstopprofittarget을 사용할 수는 없고 진이 이후의 최고가나 최저가를 계산해서 일정값 반대로 움직이면 청산하는 것으로 작성하셔야 할것 같습니다.
# 진입후 최고가(최저가)가 진입가+20틱(진입가-20틱) 이상(이하)면 최고가(최저가)에서 10틱 하락시 청산
if highest(H, BarsSinceEntry+1) > EntryPrice + PriceScale*20 Then
exitlong("EL", atstop, highest(H, BarsSinceEntry+1)- PriceScale*10);
if lowest(L, BarsSinceEntry+1) > EntryPrice - PriceScale*20 Then
exitshort("ES", atstop, Lowest(L, BarsSinceEntry+1)+ PriceScale*10);
감사합니다.
> 라떼처럼 님이 쓴 글입니다.
> 제목 : 요청드립니다.
> 아래 식에서
Price Channel 4개의 모든 Channel이 [1]대비 같거나 상승중 일때 조건에 따라 매수
Price Channel 4개의 모든 Channel이 [1]대비 같거나 하락중 일때 조건에 따라 매도
를 하고 싶은데 Price Channel 4개를 지표로 나타내고 보니 지표상 하락중인데 매수가 나타납니다.(그림참조) 수정좀 부탁드립니다.
SetStopProfittarget(Target) 목표청산에 도달하면 최고값대비 10% 하락하면 청산
해선 PriceScale을 고려하여 청산 수식 포함요청드립니다.
###매수 매도 수식###
input : 손절(80),Target(0.4);
var : BH(0),SL(0),HE(0),LE(0);
var : T(0), S(0);
##Price Chanel
INPUT : Length51(50), Length52(200) ;
VAR : Tchan51(0), Bchan52(0),Tchan53(0), Bchan54(0);;
Tchan51 = Highest(High, Length51);
Bchan52 = Lowest(Low, Length51);
Tchan53 = Highest(High, Length52);
Bchan54 = Lowest(Low, Length52);
input : P31(30), P82(280);
var31 = wma(C,P31);
var82 = wma(C,P82);
##M Price Chanel
// Tchan53 = Highest(High, Length52)[1]; # Highest Length52(200)
// Tchan51 = Highest(High, Length51)[1]; # Highest Length51(50)
// Bchan52 = Lowest(Low, Length51)[1]; # Lowest Length51(50)
// Bchan54 = Lowest(Low, Length52)[1]; # Lowest Length52(200)
## Price Chanel 4개 모두 상승 중이면 S = 1
if Tchan53[1] < Tchan53
and Tchan51[1] < Tchan51
and Bchan52[1] < Bchan52
and Bchan54[1] < Bchan54
then {
S = 1;
}
## Price Chanel 4개 모두 하락 중이면 S = -1
if Tchan53[1] > Tchan53
and Tchan51[1] > Tchan51
and Bchan52[1] > Bchan52
and Bchan54[1] > Bchan54
Then {
S = -1;
}
if S == 1 and Crossup(var31, var82)
Then buy("B2");
if S == -1 and Crossdown(var31, var82)
Then sell("S2");
### 청산
if MarketPosition == 1 Then{
BH = highest(H,BarsSinceEntry);
if MaxEntries == 1 Then
HE = LatestEntryPrice(0);
if MaxEntries >= 2 and LatestEntryPrice(0) > HE Then
HE = LatestEntryPrice(0);
SetStopProfittarget(Target);
ExitLong("B손절",AtStop,HE-PriceScale*손절);
}
if MarketPosition == -1 Then{
SL = Lowest(L,BarsSinceEntry);
if MaxEntries == 1 Then
LE = LatestEntryPrice(0);
if MaxEntries >= 2 and LatestEntryPrice(0) < LE Then
LE = LatestEntryPrice(0);
SetStopProfittarget(Target);
ExitShort("S손절",AtStop,LE+PriceScale*손절);
}
/*
#### 지표
INPUT : Length51(50), Length52(200) ;
VAR : Tchan51(0), Bchan52(0),Tchan53(0), Bchan54(0);
Tchan51 = Highest(High, Length51);
Bchan52 = Lowest(Low, Length51);
Tchan53 = Highest(High, Length52);
Bchan54 = Lowest(Low, Length52);
Plot51(Tchan51, "TOP50");
Plot52(Bchan52, "BOT50");
Plot53(Tchan53, "TOP200");
Plot54(Bchan54, "BOT200");