커뮤니티

다시 부탁 드립니다

프로필 이미지
아라미스33
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");