커뮤니티
다시 부탁 드립니다
2013-02-28 16:24:14
280
글번호 60102
아래와 같이 해보니깐 이 수식은 그냥 청산신호가 하나 추가 된거 같습니다
제가 만든 수식에는 처음 진입하고 다음 청산신호까지
rsi값이 계속 유지 되지 않기 때문에 macd값으로 청산이 되고 나면
재매수가 되질 않습니다
제가 하고 싶은건
원래 신호 매수 진입후 청산신호가 나오는 지점까지
매수진입후 청산이 50봉 후에 나온다고 가정하면
매수 진입하고 나면 이제는 다른값은 필요없고원 청산 신호 전까지는
macd값으로만 매수 매도가 이루어
져야 합니다 다시 한번 부탁 드립니다
안녕하세요
예스스탁입니다.
매수청산2와 매수청산3으로 추가했습니다.
input : RSVValue(56);
input : Vol(970);
input : 간격(0.15);
input : LossPoint(1.05);
input : ProfitPoint(2.35);
input : MACDP1(12),MACDP2(26),MACDP3(9);
var : MACDO(0);
Input : N(20);
var : Energe1(0),Energe2(0);
//에너지
if MarketPosition == 1 Then{
ExitLong("청산2",AtStop,EntryPrice-Losspoint);
ExitLong("청산3",AtLimit,EntryPrice+Profitpoint);
}
//ma1
input : maPeriod1(21);
var : MAv1(0);
MAv1 = ma(C,maPeriod1);
//ma2
input : maPeriod2(25);
var : MAv2(0);
MAv2 = ma(C,maPeriod2);
//ma3
input : maPeriod3(31);
var : MAv3(0);
MAv3 = ma(C,maPeriod3);
//ma4
input : maPeriod4(57);
var : MAv4(0);
MAv4 = ma(C,maPeriod4);
//RSI
input : rsiPeriod(4);
var : RSV(0);
RSV = RSI(rsiPeriod);
if MarketPosition == 0 and
V > Vol
&& MAv1 > MAv2
&& MAv2 > MAv3
&& MAv3 > MAv4
&& RSV > RSVValue
&& MAv2 - MAv4 <= 간격
&& C > MAv4
Then
{
Buy("매수", OnClose, DEF);
}
//매수청산1
if MarketPosition == 1 and
C < MAv4
Then
Exitlong("청산1");
//매수청산2
//MACD 오실레이터
MACDO = MACD_OSC(MACDP1,MACDP2,MACDP3);
if MarketPosition == 1 and CrossDown(MACDO,0) Then
exitlong("매수청산2");
//매수청산3
//에너지
Energe1 = accumN(H-O,N)/accumN(O-L,N)*100;
Energe2 = accumN(H-C,N)/accumN(C-L,N)*100;
if MarketPosition == 1 and CrossDown(Energe1,Energe2) Then
exitlong("매수청산3");
답변 1
예스스탁 예스스탁 답변
2013-03-04 11:42:46
안녕하세요? 예스스탁입니다.
수정해서 작성해 보았습니다.
수정한 식은 최초매수조건이 발생할 경우 매수되며 동시에 매수 가능한 상태로 셋팅(condition1 = true) 됩니다.
매수가 발생한 이후에 종가가 MAv4보다 작은 경우, 에너지 지표 하향이탈, 손절/목표청산의 경우의 조건이 발생하면 매수했던 포지션을 청산합니다. 동시에 매수 가능한 상태가 해제 됩니다.(condition = false)
위 4가지 매수청산 조건이 발생하지 않은 동안에는
macd오실레이터 조건에 의해서 매수-매수청산이 반복됩니다.
만일 위 4가지 청산조건에 해당되어서 청산되었다면 최초매수조건이 만족되어야 매수가 발생됩니다.
input : rsiPeriod(4), RSVValue(56);
input : maPeriod1(21),maPeriod2(25),maPeriod3(31), maPeriod4(57);
input : Vol(970);
input : 간격(0.15);
input : LossPoint(1.05);
input : ProfitPoint(2.35);
input : MACDP1(12),MACDP2(26),MACDP3(9);
Input : N(20);
var : MAv1(0), MAv2(0), MAv3(0), MAv4(0);
var : RSV(0);
var : Energe1(0),Energe2(0);
var : MACDO(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 오실레이터
Energe1 = accumN(H-O,N)/accumN(O-L,N)*100; //에너지1
Energe2 = accumN(H-C,N)/accumN(C-L,N)*100; //에너지2
#최초 매수조건
if MarketPosition == 0 and
V > Vol
&& MAv1 > MAv2
&& MAv2 > MAv3
&& MAv3 > MAv4
&& RSV > RSVValue
&& MAv2 - MAv4 <= 간격
&& C > MAv4
Then
{
Buy("최초매수", OnClose, DEF);
Condition1 = true;
}
# 반복매수조건
if Condition1 == true and CrossUp(MACDO,0) Then
buy("반복매수");
#반복매수청산조건
if CrossDown(MACDO,0) Then
exitlong("반복청산");
//종가가 MAv4보다 작으면 매수청산
if C < MAv4 Then {
Exitlong("MAv4청산");
Condition1 = false;
}
//에너지 지표 하향이탈시 매수청산
if CrossDown(Energe1,Energe2) Then {
exitlong("Energe청산");
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;
> 아라미스33 님이 쓴 글입니다.
> 제목 : 다시 부탁 드립니다
>
아래와 같이 해보니깐 이 수식은 그냥 청산신호가 하나 추가 된거 같습니다
제가 만든 수식에는 처음 진입하고 다음 청산신호까지
rsi값이 계속 유지 되지 않기 때문에 macd값으로 청산이 되고 나면
재매수가 되질 않습니다
제가 하고 싶은건
원래 신호 매수 진입후 청산신호가 나오는 지점까지
매수진입후 청산이 50봉 후에 나온다고 가정하면
매수 진입하고 나면 이제는 다른값은 필요없고원 청산 신호 전까지는
macd값으로만 매수 매도가 이루어
져야 합니다 다시 한번 부탁 드립니다
안녕하세요
예스스탁입니다.
매수청산2와 매수청산3으로 추가했습니다.
input : RSVValue(56);
input : Vol(970);
input : 간격(0.15);
input : LossPoint(1.05);
input : ProfitPoint(2.35);
input : MACDP1(12),MACDP2(26),MACDP3(9);
var : MACDO(0);
Input : N(20);
var : Energe1(0),Energe2(0);
//에너지
if MarketPosition == 1 Then{
ExitLong("청산2",AtStop,EntryPrice-Losspoint);
ExitLong("청산3",AtLimit,EntryPrice+Profitpoint);
}
//ma1
input : maPeriod1(21);
var : MAv1(0);
MAv1 = ma(C,maPeriod1);
//ma2
input : maPeriod2(25);
var : MAv2(0);
MAv2 = ma(C,maPeriod2);
//ma3
input : maPeriod3(31);
var : MAv3(0);
MAv3 = ma(C,maPeriod3);
//ma4
input : maPeriod4(57);
var : MAv4(0);
MAv4 = ma(C,maPeriod4);
//RSI
input : rsiPeriod(4);
var : RSV(0);
RSV = RSI(rsiPeriod);
if MarketPosition == 0 and
V > Vol
&& MAv1 > MAv2
&& MAv2 > MAv3
&& MAv3 > MAv4
&& RSV > RSVValue
&& MAv2 - MAv4 <= 간격
&& C > MAv4
Then
{
Buy("매수", OnClose, DEF);
}
//매수청산1
if MarketPosition == 1 and
C < MAv4
Then
Exitlong("청산1");
//매수청산2
//MACD 오실레이터
MACDO = MACD_OSC(MACDP1,MACDP2,MACDP3);
if MarketPosition == 1 and CrossDown(MACDO,0) Then
exitlong("매수청산2");
//매수청산3
//에너지
Energe1 = accumN(H-O,N)/accumN(O-L,N)*100;
Energe2 = accumN(H-C,N)/accumN(C-L,N)*100;
if MarketPosition == 1 and CrossDown(Energe1,Energe2) Then
exitlong("매수청산3");