커뮤니티
문의드립니다.
2016-10-03 21:11:57
156
글번호 102437
항상 친절하고 빠른 답변 고맙습니다.
아래식에 다음조건을 검토해 주시면 고맙겠습니다.
<설정 요청 조건>
당일수익이 5.0 이상이거나 당일손실이 -2.0이상이면 당일 거래중단
당일 연속손실이 2회이상 이면 거래중단
당일 수익후 2.0하락시 거래중단
진입회수 3회이내 설정
input : P(80), len(40),PRO(5.0), DLOSS(1.5),당일손실(-2.0), N(3);
var : count(0), CNTNO(0), cnt(0), losscnt(0);
var : NP(0),PreNP(0),DayPL(0),loss(0),DayPLHigh(0),Diff(0);
##################################################################
# 당일 Loss Cut 횟수 카운트
losscnt = 0;
for cnt = 1 to 10{
if ExitDate(cnt) == sdate and IsExitName("setStopLoss",losscnt) == true Then
losscnt = losscnt+1;
}
##################################################################
# 당일 진입횟수 카운트
count = 0;
for CNTNO = 0 to 10 {
if EntryDate(CNTNO) == sDate Then
count = count+1;}
##################################################################
# 당일 수익후 2.0하락시
NP = NetProfit;
loss = ((2.0/PointValue)*PriceScale); //
if date != date[1] Then{
PreNP = NP[1];
DayPLHigh = 0;
}
#당일 누적수익
DayPL = NP-PreNP;
#당일 최대 누적수익
if dayPL > DayPLHigh Then
DayPLHigh = DAyPL;
#최대누적수익과 현재 누적값의 차이(최고누적에서 감소된 수치)
Diff = DayPL-DayPLHigh;
##################################################################
Condition1 = ExitDate(1) == sdate
and ((IsExitName("bx0",1)==True or IsExitName("sx0",1)==True or IsExitName("bx",1)==True or IsExitName("sx",1)==True or
IsExitName("bx1",1)==True or IsExitName("sx1",1)==True or IsExitName("bx2",1)==True or IsExitName("sx2",1)==True or IsExitName("bx3",1)==True or IsExitName("sx3",1)==True
or IsExitName("bx4",1)==True or IsExitName("sx4",1)==True or IsExitName("bx5",1)==True or IsExitName("sx5",1)==True or IsExitName("bx6",1)==True or IsExitName("sx6",1)==True
or IsExitName("bx7",1)==True or IsExitName("sx7",1)==True or IsExitName("SetStopProfittarget",1)==True or IsExitName("SetStopLoss",1)==True or IsExitName("StopLoss",losscnt)==True));
##################################################################
# 매매시간 설정
If (stime >= 090000 and stime < 153000) and Count < N and losscnt < 2 Then {
if Condition1 == false Then {
# 매매식
###################################################################################
# 매매식
if 조건식 Then {
Buy("매수 B1",AtMarket);
count = count + 1;
}
Else If 조건식 Then {
Sell("매도",AtMarket);
count = count + 1;
}
}
###################################################################################
SetStopProfittarget(PRO,PointStop); // 5.0
SetStopLoss(DLOSS,PointStop); // 2.0
###################################################################################
if MarketPosition == 1 Then{
ExitLong("bx1",AtStop,EntryPrice+(당일손실-dayPL));
ExitLong("bx2",AtStop,C-ATR(10)*3); // YoYo Stop
ExitLong("bx3",AtLimit,EntryPrice+PriceScale*95);
If Highest(H, BarsSinceEntry) >= EntryPrice+50 Then {
ExitLong("bx4",AtStop,Highest(H, BarsSinceEntry) - 20);
}
If Highest(H, BarsSinceEntry) >= EntryPrice+10 Then {
ExitLong("bx5",AtStop,EntryPrice);
}
If Highest(H, BarsSinceEntry) >= EntryPrice*(1+10/100) Then {
ExitLong("bx6",AtStop,Highest(H, BarsSinceEntry)*(1-3/100));
}
If Highest(H, BarsSinceEntry) >= EntryPrice + (PriceScale*140) Then {
ExitLong("bx7",AtStop,Lowest(L,2));
}
}
if MarketPosition == -1 Then{
ExitShort("sx1",AtStop,EntryPrice-(당일손실-dayPL));
ExitShort("sx2",AtStop,C+ATR(10)*3);
ExitShort("sx3",AtLimit,EntryPrice-PriceScale*95);
If Lowest(L, BarsSinceEntry) <= EntryPrice-50 Then {
ExitShort("sx4",AtStop,Lowest(L, BarsSinceEntry) + 20);
}
If Lowest(L, BarsSinceEntry) <= EntryPrice-10 Then {
ExitShort("sx5",AtStop,EntryPrice);
}
If Lowest(L, BarsSinceEntry) <= EntryPrice*(1-10/100) Then {
ExitShort("sx6",AtStop,Lowest(L, BarsSinceEntry)*(1+3/100));
}
If Lowest(L, BarsSinceEntry) <= EntryPrice-(PriceScale*140) Then {
ExitShort("sx7",AtStop,Highest(H,2));
}
}
}
#####################################################################################
답변 1
예스스탁 예스스탁 답변
2016-10-04 17:37:53
안녕하세요
예스스탁입니다.
input : P(80), len(40),당일수익(5.0),당일손실(2.0),당일최대진입횟수(3),당일연속손절횟수(2);
var : count(0), CNTNO(0), cnt(0), losscnt(0);
var : NP(0),PreNP(0),DayPL(0),loss(0),DayPLHigh(0),Diff(0),Xcond(false);
##################################################################
#당일 연속손절횟수
losscnt = 0;
for cnt = 10 DownTo 1{
if ExitDate(cnt) == sdate and IsExitName("StopLoss",cnt) == true Then
losscnt = losscnt+1;
Else
losscnt = 0;
}
##################################################################
# 당일 진입횟수 카운트
count = 0;
for CNTNO = 0 to 10 {
if EntryDate(CNTNO) == sDate Then
count = count+1;
}
##################################################################
# 당일 수익후 2.0하락시
NP = NetProfit;
loss = ((2.0/PointValue)*PriceScale); //
if date != date[1] Then{
PreNP = NP[1];
DayPLHigh = 0;
Xcond = false;#날짜 변경시 초기화
}
#당일 수익이 5포인트 이상이나 손실이 2.0으로 청산이 발생하면
#Xcond는 true
if TotalTrades > TotalTrades[1] and (IsExitName("bp",1) or IsExitName("bl",1) or IsExitName("sp",1) or IsExitName("sl",1)) Then
Xcond = true;
#당일 누적수익
DayPL = NP-PreNP;
#당일 최대 누적수익
if dayPL > DayPLHigh Then
DayPLHigh = DAyPL;
##################################################################
Condition1 = ExitDate(1) == sdate
and ((IsExitName("bx0",1)==True or IsExitName("sx0",1)==True or IsExitName("bx",1)==True or IsExitName("sx",1)==True or
IsExitName("bx1",1)==True or IsExitName("sx1",1)==True or IsExitName("bx2",1)==True or IsExitName("sx2",1)==True or IsExitName("bx3",1)==True or IsExitName("sx3",1)==True
or IsExitName("bx4",1)==True or IsExitName("sx4",1)==True or IsExitName("bx5",1)==True or IsExitName("sx5",1)==True or IsExitName("bx6",1)==True or IsExitName("sx6",1)==True
or IsExitName("bx7",1)==True or IsExitName("sx7",1)==True or IsExitName("StopProfittarget",1)==True or IsExitName("StopLoss",1)==True or IsExitName("StopLoss",losscnt)==True));
##################################################################
# 매매시간 설정
If (stime >= 090000 and stime < 153000) Then {
if Condition1 == false and
Count < 당일최대진입횟수 and
losscnt < 당일연속손절횟수 and
Xcond == false and
dayPL < DayPLHigh-2 and DayPLHigh > 0 Then {
# 매매식
if 조건식 Then {
Buy("매수 B1",AtMarket);
}
else If 조건식 Then {
Sell("매도",AtMarket);
}
}
###################################################################################
if MarketPosition == 1 Then{
ExitLong("bp",AtLimit,EntryPrice+당일수익-dayPL);
ExitLong("bl",AtStop,EntryPrice-당일손실-dayPL);
ExitLong("bx2",AtStop,C-ATR(10)*3); // YoYo Stop
ExitLong("bx3",AtLimit,EntryPrice+PriceScale*95);
If Highest(H, BarsSinceEntry) >= EntryPrice+50 Then {
ExitLong("bx4",AtStop,Highest(H, BarsSinceEntry) - 20);
}
If Highest(H, BarsSinceEntry) >= EntryPrice+10 Then {
ExitLong("bx5",AtStop,EntryPrice);
}
If Highest(H, BarsSinceEntry) >= EntryPrice*(1+10/100) Then {
ExitLong("bx6",AtStop,Highest(H, BarsSinceEntry)*(1-3/100));
}
If Highest(H, BarsSinceEntry) >= EntryPrice + (PriceScale*140) Then {
ExitLong("bx7",AtStop,Lowest(L,2));
}
}
if MarketPosition == -1 Then{
ExitShort("sp",AtLimit,EntryPrice-당일수익+dayPL);
ExitShort("sl",AtStop,EntryPrice+당일손실+dayPL);
ExitShort("sx3",AtLimit,EntryPrice-PriceScale*95);
If Lowest(L, BarsSinceEntry) <= EntryPrice-50 Then {
ExitShort("sx4",AtStop,Lowest(L, BarsSinceEntry) + 20);
}
If Lowest(L, BarsSinceEntry) <= EntryPrice-10 Then {
ExitShort("sx5",AtStop,EntryPrice);
}
If Lowest(L, BarsSinceEntry) <= EntryPrice*(1-10/100) Then {
ExitShort("sx6",AtStop,Lowest(L, BarsSinceEntry)*(1+3/100));
}
If Lowest(L, BarsSinceEntry) <= EntryPrice-(PriceScale*140) Then {
ExitShort("sx7",AtStop,Highest(H,2));
}
}
}
#####################################################################################
즐거운 하루되세요
> 민기삼촌 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 항상 친절하고 빠른 답변 고맙습니다.
아래식에 다음조건을 검토해 주시면 고맙겠습니다.
<설정 요청 조건>
당일수익이 5.0 이상이거나 당일손실이 -2.0이상이면 당일 거래중단
당일 연속손실이 2회이상 이면 거래중단
당일 수익후 2.0하락시 거래중단
진입회수 3회이내 설정
input : P(80), len(40),PRO(5.0), DLOSS(1.5),당일손실(-2.0), N(3);
var : count(0), CNTNO(0), cnt(0), losscnt(0);
var : NP(0),PreNP(0),DayPL(0),loss(0),DayPLHigh(0),Diff(0);
##################################################################
# 당일 Loss Cut 횟수 카운트
losscnt = 0;
for cnt = 1 to 10{
if ExitDate(cnt) == sdate and IsExitName("setStopLoss",losscnt) == true Then
losscnt = losscnt+1;
}
##################################################################
# 당일 진입횟수 카운트
count = 0;
for CNTNO = 0 to 10 {
if EntryDate(CNTNO) == sDate Then
count = count+1;}
##################################################################
# 당일 수익후 2.0하락시
NP = NetProfit;
loss = ((2.0/PointValue)*PriceScale); //
if date != date[1] Then{
PreNP = NP[1];
DayPLHigh = 0;
}
#당일 누적수익
DayPL = NP-PreNP;
#당일 최대 누적수익
if dayPL > DayPLHigh Then
DayPLHigh = DAyPL;
#최대누적수익과 현재 누적값의 차이(최고누적에서 감소된 수치)
Diff = DayPL-DayPLHigh;
##################################################################
Condition1 = ExitDate(1) == sdate
and ((IsExitName("bx0",1)==True or IsExitName("sx0",1)==True or IsExitName("bx",1)==True or IsExitName("sx",1)==True or
IsExitName("bx1",1)==True or IsExitName("sx1",1)==True or IsExitName("bx2",1)==True or IsExitName("sx2",1)==True or IsExitName("bx3",1)==True or IsExitName("sx3",1)==True
or IsExitName("bx4",1)==True or IsExitName("sx4",1)==True or IsExitName("bx5",1)==True or IsExitName("sx5",1)==True or IsExitName("bx6",1)==True or IsExitName("sx6",1)==True
or IsExitName("bx7",1)==True or IsExitName("sx7",1)==True or IsExitName("SetStopProfittarget",1)==True or IsExitName("SetStopLoss",1)==True or IsExitName("StopLoss",losscnt)==True));
##################################################################
# 매매시간 설정
If (stime >= 090000 and stime < 153000) and Count < N and losscnt < 2 Then {
if Condition1 == false Then {
# 매매식
###################################################################################
# 매매식
if 조건식 Then {
Buy("매수 B1",AtMarket);
count = count + 1;
}
Else If 조건식 Then {
Sell("매도",AtMarket);
count = count + 1;
}
}
###################################################################################
SetStopProfittarget(PRO,PointStop); // 5.0
SetStopLoss(DLOSS,PointStop); // 2.0
###################################################################################
if MarketPosition == 1 Then{
ExitLong("bx1",AtStop,EntryPrice+(당일손실-dayPL));
ExitLong("bx2",AtStop,C-ATR(10)*3); // YoYo Stop
ExitLong("bx3",AtLimit,EntryPrice+PriceScale*95);
If Highest(H, BarsSinceEntry) >= EntryPrice+50 Then {
ExitLong("bx4",AtStop,Highest(H, BarsSinceEntry) - 20);
}
If Highest(H, BarsSinceEntry) >= EntryPrice+10 Then {
ExitLong("bx5",AtStop,EntryPrice);
}
If Highest(H, BarsSinceEntry) >= EntryPrice*(1+10/100) Then {
ExitLong("bx6",AtStop,Highest(H, BarsSinceEntry)*(1-3/100));
}
If Highest(H, BarsSinceEntry) >= EntryPrice + (PriceScale*140) Then {
ExitLong("bx7",AtStop,Lowest(L,2));
}
}
if MarketPosition == -1 Then{
ExitShort("sx1",AtStop,EntryPrice-(당일손실-dayPL));
ExitShort("sx2",AtStop,C+ATR(10)*3);
ExitShort("sx3",AtLimit,EntryPrice-PriceScale*95);
If Lowest(L, BarsSinceEntry) <= EntryPrice-50 Then {
ExitShort("sx4",AtStop,Lowest(L, BarsSinceEntry) + 20);
}
If Lowest(L, BarsSinceEntry) <= EntryPrice-10 Then {
ExitShort("sx5",AtStop,EntryPrice);
}
If Lowest(L, BarsSinceEntry) <= EntryPrice*(1-10/100) Then {
ExitShort("sx6",AtStop,Lowest(L, BarsSinceEntry)*(1+3/100));
}
If Lowest(L, BarsSinceEntry) <= EntryPrice-(PriceScale*140) Then {
ExitShort("sx7",AtStop,Highest(H,2));
}
}
}
#####################################################################################