커뮤니티
자꾸 문의 드려 죄송합니다
2013-03-12 00:33:03
207
글번호 60580
이식에서 보면 손절과 청산이 아마도 가장 마지막에 진입한 가격에 영향을 받는거
같습니다
손절과 청산 가격을 최초매수 가격에 영향을 받도록 하고 싶습니다
감사합니다
아 그리고 이 수식은 최초매수가 된후 청산선이나 손절이나 익절이 있기전까지
반복매수와 반복매수청산을 한번만 하게 되어 있는데
이식에서 어떻게 하면 반복매수와 반복매수청산 횟수를 정할수 있나요?
반복매수와 반복매수청산 묶었을때 횟수입니다
input : rsiPeriod(2), RSVValue(67),N(5),X(3);
input : maPeriod1(8),maPeriod2(16),maPeriod3(23), maPeriod4(47);
input : Vol(1110);
input : 간격(0.3);
input : LossPoint(0.65);
input : ProfitPoint(3.7);
input : MACDP1(12),MACDP2(26),MACDP3(9);
var : MAv1(0), MAv2(0), MAv3(0), MAv4(0);
var : RSV(0);
var : MACDO(0),cnt(0);
MAv1 = ma(C,maPeriod1);
MAv2 = ma(C,maPeriod2);
MAv3 = ma(C,maPeriod3);
MAv4 = ma(C,maPeriod4);
RSV = RSI(rsiPeriod);
MACDO = MACD_OSC(MACDP1,MACDP2,MACDP3);//MACD 오실레이터
if date != date[1] Then
Condition1 = false;
#최초 매수조건
if Condition1 == false
&& MarketPosition == 0
&& V > Vol
&& MAv1 > MAv2
&& MAv2 > MAv3
&& MAv3 > MAv4
&& RSV > RSVValue
&& MAv2 - MAv4 <= 간격
&& C > MAv4
&& MACDO > 0
Then
{
Buy("최초매수", OnClose, DEF);
Condition1 = true;
}
# 반복매수조건
if Condition1 == true
&& MarketPosition == 0
&& IsExitName("반복청산",1) == true
&& IsEntryName("최초매수",1) == true
&& EntryDate(1) == sdate
&& C >= mav4+PriceScale*X
&& (CrossUp(MACDO,0) or C <= ExitPrice(1)-PriceScale*N) Then{
buy("반복매수");
}
#반복매수청산조건
if MarketPosition == 1
&& CrossDown(MACDO,0)
&& IsEntryName("최초매수") == true Then
exitlong("반복청산");
//종가가 MAv4보다 작으면 매수청산
if C < MAv4 Then {
Exitlong("MAv4청산");
Condition1 = false;
}
//손절/목표청산
if MarketPosition == 1 Then{
Exitlong("손절",AtStop,EntryPrice-Losspoint);
Exitlong("목표",AtLimit,EntryPrice+Profitpoint);
}
if BarsSinceExit(1) == 1 and (
IsExitName("손절",1) == true or IsExitName("목표",1) == True) Then
Condition1 = false;
답변 1
예스스탁 예스스탁 답변
2013-03-12 10:04:13
안녕하세요
예스스탁입니다.
손절과 목표청산이 모두 현재 진입의 가격이 기준이 됩니다.
최초매수신호의 가격으로 변경했습니다.
반복매수와 반복청산도 각각 횟수를 지정하게 작성했습니다.
input : rsiPeriod(2), RSVValue(67),N(5),X(3);
input : maPeriod1(8),maPeriod2(16),maPeriod3(23), maPeriod4(47);
input : Vol(1110);
input : 간격(0.3);
input : LossPoint(0.65);
input : ProfitPoint(3.7);
input : MACDP1(12),MACDP2(26),MACDP3(9);
input : ReBcount(1),ReXcount(1);
var : MAv1(0), MAv2(0), MAv3(0), MAv4(0);
var : RSV(0);
var : MACDO(0),cnt(0);
MAv1 = ma(C,maPeriod1);
MAv2 = ma(C,maPeriod2);
MAv3 = ma(C,maPeriod3);
MAv4 = ma(C,maPeriod4);
RSV = RSI(rsiPeriod);
MACDO = MACD_OSC(MACDP1,MACDP2,MACDP3);//MACD 오실레이터
if date != date[1] Then
Condition1 = false;
#최초 매수조건
if Condition1 == false
&& MarketPosition == 0
&& V > Vol
&& MAv1 > MAv2
&& MAv2 > MAv3
&& MAv3 > MAv4
&& RSV > RSVValue
&& MAv2 - MAv4 <= 간격
&& C > MAv4
&& MACDO > 0
Then
{
Buy("최초매수", OnClose, DEF);
Condition1 = true;
value1 = 0;
value2 = 0;
}
if MarketPosition == 1 and IsEntryName("최초매수") == true Then
var1 = EntryPrice;
# 반복매수조건
if Condition1 == true
&& MarketPosition == 0
&& IsExitName("반복청산",1) == true
&& (IsEntryName("최초매수") == true or IsEntryName("반복매수") == true)
&& EntryDate(1) == sdate
&& C >= mav4+PriceScale*X
&& (CrossUp(MACDO,0) or C <= ExitPrice(1)-PriceScale*N)
&& value1 < ReBcount Then{
buy("반복매수");
value1 = value1+1;
}
#반복매수청산조건
if Condition1 == true
&& MarketPosition == 1
&& CrossDown(MACDO,0)
&& (IsEntryName("최초매수") == true or IsEntryName("반복매수") == true)
&& value2 < ReXcount Then{
exitlong("반복청산");
value2 = value2+1;
}
//종가가 MAv4보다 작으면 매수청산
if Condition1 == true
&& C < MAv4 Then {
Exitlong("MAv4청산");
Condition1 = false;
}
//손절/목표청산
if MarketPosition == 1 Then{
Exitlong("손절",AtStop,var1-Losspoint);
Exitlong("목표",AtLimit,var1+Profitpoint);
}
if BarsSinceExit(1) == 1 and (
IsExitName("손절",1) == true or IsExitName("목표",1) == True) Then
Condition1 = false;
즐거운 하루되세요
> 아라미스33 님이 쓴 글입니다.
> 제목 : 자꾸 문의 드려 죄송합니다
> 이식에서 보면 손절과 청산이 아마도 가장 마지막에 진입한 가격에 영향을 받는거
같습니다
손절과 청산 가격을 최초매수 가격에 영향을 받도록 하고 싶습니다
감사합니다
아 그리고 이 수식은 최초매수가 된후 청산선이나 손절이나 익절이 있기전까지
반복매수와 반복매수청산을 한번만 하게 되어 있는데
이식에서 어떻게 하면 반복매수와 반복매수청산 횟수를 정할수 있나요?
반복매수와 반복매수청산 묶었을때 횟수입니다
input : rsiPeriod(2), RSVValue(67),N(5),X(3);
input : maPeriod1(8),maPeriod2(16),maPeriod3(23), maPeriod4(47);
input : Vol(1110);
input : 간격(0.3);
input : LossPoint(0.65);
input : ProfitPoint(3.7);
input : MACDP1(12),MACDP2(26),MACDP3(9);
var : MAv1(0), MAv2(0), MAv3(0), MAv4(0);
var : RSV(0);
var : MACDO(0),cnt(0);
MAv1 = ma(C,maPeriod1);
MAv2 = ma(C,maPeriod2);
MAv3 = ma(C,maPeriod3);
MAv4 = ma(C,maPeriod4);
RSV = RSI(rsiPeriod);
MACDO = MACD_OSC(MACDP1,MACDP2,MACDP3);//MACD 오실레이터
if date != date[1] Then
Condition1 = false;
#최초 매수조건
if Condition1 == false
&& MarketPosition == 0
&& V > Vol
&& MAv1 > MAv2
&& MAv2 > MAv3
&& MAv3 > MAv4
&& RSV > RSVValue
&& MAv2 - MAv4 <= 간격
&& C > MAv4
&& MACDO > 0
Then
{
Buy("최초매수", OnClose, DEF);
Condition1 = true;
}
# 반복매수조건
if Condition1 == true
&& MarketPosition == 0
&& IsExitName("반복청산",1) == true
&& IsEntryName("최초매수",1) == true
&& EntryDate(1) == sdate
&& C >= mav4+PriceScale*X
&& (CrossUp(MACDO,0) or C <= ExitPrice(1)-PriceScale*N) Then{
buy("반복매수");
}
#반복매수청산조건
if MarketPosition == 1
&& CrossDown(MACDO,0)
&& IsEntryName("최초매수") == true Then
exitlong("반복청산");
//종가가 MAv4보다 작으면 매수청산
if C < MAv4 Then {
Exitlong("MAv4청산");
Condition1 = false;
}
//손절/목표청산
if MarketPosition == 1 Then{
Exitlong("손절",AtStop,EntryPrice-Losspoint);
Exitlong("목표",AtLimit,EntryPrice+Profitpoint);
}
if BarsSinceExit(1) == 1 and (
IsExitName("손절",1) == true or IsExitName("목표",1) == True) Then
Condition1 = false;