커뮤니티

안녕하세요

프로필 이미지
아라미스33
2013-03-09 12:55:24
245
글번호 60504
답변완료
주말 잘 보내셨나요? 같은식을 변수값을 틀리게 해서 먼저 신호가 나온대로 진행할려고 합니다 한번 만들어 보았는데 안되는거 같아요 한번만 봐주세요 감사합니다 input : rsiPeriod(8), RSVValue(31),N(5),X(3); input : maPeriod1(9),maPeriod2(13),maPeriod3(18), maPeriod4(66); input : Vol(0); input : 간격(0.75); input : LossPoint(1); input : ProfitPoint(2.8); input : MACDP1(12),MACDP2(26),MACDP3(9); var : MAv1(0), MAv2(0), MAv3(0), MAv4(0); var : RSV(0); var : Energe1(0),Energe2(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 && MAv4 - MAv2 <= 간격 && C < MAv4 && MACDO < 0 Then { Sell("최초매도", OnClose, DEF); Condition1 = true; } if Condition1 == true && MarketPosition == 0 && IsExitName("반복청산",1) == true && IsEntryName("최초매도",1) == true && EntryDate(1) == sdate && C <= mav4-PriceScale*X && (CrossDown(MACDO,0) or C >= ExitPrice(1)+PriceScale*N) Then{ sell("반복매도"); } #반복매도청산조건 if MarketPosition == -1 && CrossUp(MACDO,0) && IsEntryName("최초매도") == true Then ExitShort("반복청산"); //종가가 MAv4보다 크면 매도청산 if C > MAv4 Then { ExitShort("MAv4청산"); Condition1 = false; } //손절/목표청산 if MarketPosition == -1 Then{ ExitShort("손절",AtStop,EntryPrice+Losspoint); ExitShort("목표",AtLimit,EntryPrice-Profitpoint); } if BarsSinceExit(1) == 1 and ( IsExitName("손절",1) == true or IsExitName("목표",1) == True) Then Condition1 = false; input : rsiPeriod1(8), RSVValue1(31),N1(5),X1(3); input : maPeriod11(9),maPeriod12(13),maPeriod13(18), maPeriod14(40); input : Vo1l(0); input : 간격1(0.75); input : LossPoint1(1); input : ProfitPoint1(2.8); input : MACDP11(12),MACDP12(26),MACDP13(9); var : MAv11(0), MAv12(0), MAv13(0), MAv14(0); var : RSV1(0); var : Energe11(0),Energe12(0); var : MACDO1(0),cnt1(0); MAv11 = ma(C,maPeriod11); MAv12 = ma(C,maPeriod12); MAv13 = ma(C,maPeriod13); MAv14 = ma(C,maPeriod14); RSV1 = RSI(rsiPeriod); MACDO1 = MACD_OSC(MACDP1,MACDP2,MACDP3);//MACD 오실레이터1 if date != date[1] Then Condition1 = false; #최초 매도조건 if Condition1 == false && MarketPosition == 0 && V > Vol && MAv11 < MAv12 && MAv12 < MAv13 && MAv13 < MAv14 && RSV1 < RSVValue1 && MAv14 - MAv12 <= 간격 && C < MAv14 && MACDO1 < 0 Then { Sell("최초매도2", OnClose, DEF); Condition1 = true; } if Condition1 == true && MarketPosition == 0 && IsExitName("반복청산2",1) == true && IsEntryName("최초매도2",1) == true && EntryDate(1) == sdate && C <= mav4-PriceScale*X && (CrossDown(MACDO,0) or C >= ExitPrice(1)+PriceScale*N) Then{ sell("반복매도2"); } #반복매도청산조건 if MarketPosition == -1 && CrossUp(MACDO1,0) && IsEntryName("최초매도2") == true Then ExitShort("반복청산2"); //종가가 MAv4보다 크면 매도청산 if C > MAv14 Then { ExitShort("MAv4청산2"); Condition1 = false; } //손절/목표청산 if MarketPosition == -1 Then{ ExitShort("손절2",AtStop,EntryPrice+Losspoint); ExitShort("목표2",AtLimit,EntryPrice-Profitpoint); } if BarsSinceExit(1) == 1 and ( IsExitName("손절2",1) == true or IsExitName("목표2",1) == True) Then Condition1 = false;
시스템
답변 3
프로필 이미지

예스스탁 예스스탁 답변

2013-03-11 10:03:05

안녕하세요 예스탁입니다. 변수와 진입,청산이름을 모두 다른 이름으로 변경해 주셔야 하며 2개 2평중 하나만 기준이 되므로 진입을 2개모두 false일때 진입하게 하셔야 합니다. input : rsiPeriod(8), RSVValue(31),N(5),X(3); input : maPeriod1(9),maPeriod2(13),maPeriod3(18), maPeriod4(66); input : Vol(0); input : 간격(0.75); input : LossPoint(1); input : ProfitPoint(2.8); input : MACDP1(12),MACDP2(26),MACDP3(9); var : MAv1(0), MAv2(0), MAv3(0), MAv4(0); var : RSV(0); var : Energe1(0),Energe2(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 && Condition11 == false && MarketPosition == 0 && V > Vol && MAv1 < MAv2 && MAv2 < MAv3 && MAv3 < MAv4 && RSV < RSVValue && MAv4 - MAv2 <= 간격 && C < MAv4 && MACDO < 0 Then { Sell("최초매도", OnClose, DEF); Condition1 = true; } if Condition1 == true && MarketPosition == 0 && IsExitName("반복청산",1) == true && IsEntryName("최초매도",1) == true && EntryDate(1) == sdate && C <= mav4-PriceScale*X && (CrossDown(MACDO,0) or C >= ExitPrice(1)+PriceScale*N) Then{ sell("반복매도"); } #반복매도청산조건 if MarketPosition == -1 && CrossUp(MACDO,0) && IsEntryName("최초매도") == true Then ExitShort("반복청산"); //종가가 MAv4보다 크면 매도청산 if C > MAv4 Then { ExitShort("MAv4청산"); Condition1 = false; } //손절/목표청산 if MarketPosition == -1 Then{ ExitShort("손절",AtStop,EntryPrice+Losspoint); ExitShort("목표",AtLimit,EntryPrice-Profitpoint); } if BarsSinceExit(1) == 1 and ( IsExitName("손절",1) == true or IsExitName("목표",1) == True) Then Condition1 = false; input : rsiPeriod1(8), RSVValue1(31),N1(5),X1(3); input : maPeriod11(9),maPeriod21(13),maPeriod31(18), maPeriod41(66); input : Vol1(0); input : 간격1(0.75); input : LossPoint1(1); input : ProfitPoint1(2.8); input : MACDP11(12),MACDP21(26),MACDP31(9); var : MAv11(0), MAv21(0), MAv31(0), MAv41(0); var : RSV1(0); var : Energe11(0),Energe21(0); var : MACDO1(0),cnt1(0); MAv11 = ma(C,maPeriod11); MAv21 = ma(C,maPeriod21); MAv31 = ma(C,maPeriod31); MAv41 = ma(C,maPeriod41); RSV1 = RSI(rsiPeriod1); MACDO1 = MACD_OSC(MACDP11,MACDP21,MACDP31);//MACD 오실레이터 if date != date[1] Then Condition11 = false; #최초 매도조건 if Condition11 == false && Condition1 == false && MarketPosition == 0 && V > Vol1 && MAv11 < MAv21 && MAv21 < MAv31 && MAv31 < MAv41 && RSV1 < RSVValue1 && MAv41 - MAv21 <= 간격1 && C < MAv41 && MACDO1 < 0 Then { Sell("최초매도1", OnClose, DEF); Condition11 = true; } if Condition11 == true && MarketPosition == 0 && IsExitName("반복청산1",1) == true && IsEntryName("최초매도1",1) == true && EntryDate(1) == sdate && C <= mav41-PriceScale*X1 && (CrossDown(MACDO1,0) or C >= ExitPrice(1)+PriceScale*N1) Then{ sell("반복매도1"); } #반복매도청산조건 if MarketPosition == -1 && CrossUp(MACDO1,0) && IsEntryName("최초매도") == true Then ExitShort("반복청산1"); //종가가 MAv4보다 크면 매도청산 if C > MAv41 Then { ExitShort("MAv4청산1"); Condition11 = false; } //손절/목표청산 if MarketPosition == -1 Then{ ExitShort("손절1",AtStop,EntryPrice+Losspoint1); ExitShort("목표1",AtLimit,EntryPrice-Profitpoint1); } if BarsSinceExit(1) == 1 and ( IsExitName("손절1",1) == true or IsExitName("목표1",1) == True) Then Condition11 = false; 즐거운 하루되세요 > 아라미스33 님이 쓴 글입니다. > 제목 : 안녕하세요 > 주말 잘 보내셨나요? 같은식을 변수값을 틀리게 해서 먼저 신호가 나온대로 진행할려고 합니다 한번 만들어 보았는데 안되는거 같아요 한번만 봐주세요 감사합니다 input : rsiPeriod(8), RSVValue(31),N(5),X(3); input : maPeriod1(9),maPeriod2(13),maPeriod3(18), maPeriod4(66); input : Vol(0); input : 간격(0.75); input : LossPoint(1); input : ProfitPoint(2.8); input : MACDP1(12),MACDP2(26),MACDP3(9); var : MAv1(0), MAv2(0), MAv3(0), MAv4(0); var : RSV(0); var : Energe1(0),Energe2(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 && MAv4 - MAv2 <= 간격 && C < MAv4 && MACDO < 0 Then { Sell("최초매도", OnClose, DEF); Condition1 = true; } if Condition1 == true && MarketPosition == 0 && IsExitName("반복청산",1) == true && IsEntryName("최초매도",1) == true && EntryDate(1) == sdate && C <= mav4-PriceScale*X && (CrossDown(MACDO,0) or C >= ExitPrice(1)+PriceScale*N) Then{ sell("반복매도"); } #반복매도청산조건 if MarketPosition == -1 && CrossUp(MACDO,0) && IsEntryName("최초매도") == true Then ExitShort("반복청산"); //종가가 MAv4보다 크면 매도청산 if C > MAv4 Then { ExitShort("MAv4청산"); Condition1 = false; } //손절/목표청산 if MarketPosition == -1 Then{ ExitShort("손절",AtStop,EntryPrice+Losspoint); ExitShort("목표",AtLimit,EntryPrice-Profitpoint); } if BarsSinceExit(1) == 1 and ( IsExitName("손절",1) == true or IsExitName("목표",1) == True) Then Condition1 = false; input : rsiPeriod1(8), RSVValue1(31),N1(5),X1(3); input : maPeriod11(9),maPeriod12(13),maPeriod13(18), maPeriod14(40); input : Vo1l(0); input : 간격1(0.75); input : LossPoint1(1); input : ProfitPoint1(2.8); input : MACDP11(12),MACDP12(26),MACDP13(9); var : MAv11(0), MAv12(0), MAv13(0), MAv14(0); var : RSV1(0); var : Energe11(0),Energe12(0); var : MACDO1(0),cnt1(0); MAv11 = ma(C,maPeriod11); MAv12 = ma(C,maPeriod12); MAv13 = ma(C,maPeriod13); MAv14 = ma(C,maPeriod14); RSV1 = RSI(rsiPeriod); MACDO1 = MACD_OSC(MACDP1,MACDP2,MACDP3);//MACD 오실레이터1 if date != date[1] Then Condition1 = false; #최초 매도조건 if Condition1 == false && MarketPosition == 0 && V > Vol && MAv11 < MAv12 && MAv12 < MAv13 && MAv13 < MAv14 && RSV1 < RSVValue1 && MAv14 - MAv12 <= 간격 && C < MAv14 && MACDO1 < 0 Then { Sell("최초매도2", OnClose, DEF); Condition1 = true; } if Condition1 == true && MarketPosition == 0 && IsExitName("반복청산2",1) == true && IsEntryName("최초매도2",1) == true && EntryDate(1) == sdate && C <= mav4-PriceScale*X && (CrossDown(MACDO,0) or C >= ExitPrice(1)+PriceScale*N) Then{ sell("반복매도2"); } #반복매도청산조건 if MarketPosition == -1 && CrossUp(MACDO1,0) && IsEntryName("최초매도2") == true Then ExitShort("반복청산2"); //종가가 MAv4보다 크면 매도청산 if C > MAv14 Then { ExitShort("MAv4청산2"); Condition1 = false; } //손절/목표청산 if MarketPosition == -1 Then{ ExitShort("손절2",AtStop,EntryPrice+Losspoint); ExitShort("목표2",AtLimit,EntryPrice-Profitpoint); } if BarsSinceExit(1) == 1 and ( IsExitName("손절2",1) == true or IsExitName("목표2",1) == True) Then Condition1 = false;
프로필 이미지

아라미스33

2013-03-11 15:40:12

변수값 맞추어서 오늘 그래프를 보니깐 2번에 매도 진입이 되었는데 반복청산과 반복매도는 이루어 지지 않았습니다 1번에 매도 진입 사인이 나오기 전이기 때문에 2번에 매도 진입후 반복청산과 반복매도가 되어야 하는데 그냥 이평선기준 청산까지 주욱 흘러 갑니다 1번에는 그 사이 매도도 나오고 진입후 반복청산과 반복매도도 나왔구요 두신호중에 먼저 나오는 신호값으로만 나오게 하면 되거든요 > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 안녕하세요 > 안녕하세요 예스탁입니다. 변수와 진입,청산이름을 모두 다른 이름으로 변경해 주셔야 하며 2개 2평중 하나만 기준이 되므로 진입을 2개모두 false일때 진입하게 하셔야 합니다. input : rsiPeriod(8), RSVValue(31),N(5),X(3); input : maPeriod1(9),maPeriod2(13),maPeriod3(18), maPeriod4(66); input : Vol(0); input : 간격(0.75); input : LossPoint(1); input : ProfitPoint(2.8); input : MACDP1(12),MACDP2(26),MACDP3(9); var : MAv1(0), MAv2(0), MAv3(0), MAv4(0); var : RSV(0); var : Energe1(0),Energe2(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 && Condition11 == false && MarketPosition == 0 && V > Vol && MAv1 < MAv2 && MAv2 < MAv3 && MAv3 < MAv4 && RSV < RSVValue && MAv4 - MAv2 <= 간격 && C < MAv4 && MACDO < 0 Then { Sell("최초매도", OnClose, DEF); Condition1 = true; } if Condition1 == true && MarketPosition == 0 && IsExitName("반복청산",1) == true && IsEntryName("최초매도",1) == true && EntryDate(1) == sdate && C <= mav4-PriceScale*X && (CrossDown(MACDO,0) or C >= ExitPrice(1)+PriceScale*N) Then{ sell("반복매도"); } #반복매도청산조건 if MarketPosition == -1 && CrossUp(MACDO,0) && IsEntryName("최초매도") == true Then ExitShort("반복청산"); //종가가 MAv4보다 크면 매도청산 if C > MAv4 Then { ExitShort("MAv4청산"); Condition1 = false; } //손절/목표청산 if MarketPosition == -1 Then{ ExitShort("손절",AtStop,EntryPrice+Losspoint); ExitShort("목표",AtLimit,EntryPrice-Profitpoint); } if BarsSinceExit(1) == 1 and ( IsExitName("손절",1) == true or IsExitName("목표",1) == True) Then Condition1 = false; input : rsiPeriod1(8), RSVValue1(31),N1(5),X1(3); input : maPeriod11(9),maPeriod21(13),maPeriod31(18), maPeriod41(66); input : Vol1(0); input : 간격1(0.75); input : LossPoint1(1); input : ProfitPoint1(2.8); input : MACDP11(12),MACDP21(26),MACDP31(9); var : MAv11(0), MAv21(0), MAv31(0), MAv41(0); var : RSV1(0); var : Energe11(0),Energe21(0); var : MACDO1(0),cnt1(0); MAv11 = ma(C,maPeriod11); MAv21 = ma(C,maPeriod21); MAv31 = ma(C,maPeriod31); MAv41 = ma(C,maPeriod41); RSV1 = RSI(rsiPeriod1); MACDO1 = MACD_OSC(MACDP11,MACDP21,MACDP31);//MACD 오실레이터 if date != date[1] Then Condition11 = false; #최초 매도조건 if Condition11 == false && Condition1 == false && MarketPosition == 0 && V > Vol1 && MAv11 < MAv21 && MAv21 < MAv31 && MAv31 < MAv41 && RSV1 < RSVValue1 && MAv41 - MAv21 <= 간격1 && C < MAv41 && MACDO1 < 0 Then { Sell("최초매도1", OnClose, DEF); Condition11 = true; } if Condition11 == true && MarketPosition == 0 && IsExitName("반복청산1",1) == true && IsEntryName("최초매도1",1) == true && EntryDate(1) == sdate && C <= mav41-PriceScale*X1 && (CrossDown(MACDO1,0) or C >= ExitPrice(1)+PriceScale*N1) Then{ sell("반복매도1"); } #반복매도청산조건 if MarketPosition == -1 && CrossUp(MACDO1,0) && IsEntryName("최초매도") == true Then ExitShort("반복청산1"); //종가가 MAv4보다 크면 매도청산 if C > MAv41 Then { ExitShort("MAv4청산1"); Condition11 = false; } //손절/목표청산 if MarketPosition == -1 Then{ ExitShort("손절1",AtStop,EntryPrice+Losspoint1); ExitShort("목표1",AtLimit,EntryPrice-Profitpoint1); } if BarsSinceExit(1) == 1 and ( IsExitName("손절1",1) == true or IsExitName("목표1",1) == True) Then Condition11 = false; 즐거운 하루되세요 > 아라미스33 님이 쓴 글입니다. > 제목 : 안녕하세요 > 주말 잘 보내셨나요? 같은식을 변수값을 틀리게 해서 먼저 신호가 나온대로 진행할려고 합니다 한번 만들어 보았는데 안되는거 같아요 한번만 봐주세요 감사합니다 input : rsiPeriod(8), RSVValue(31),N(5),X(3); input : maPeriod1(9),maPeriod2(13),maPeriod3(18), maPeriod4(66); input : Vol(0); input : 간격(0.75); input : LossPoint(1); input : ProfitPoint(2.8); input : MACDP1(12),MACDP2(26),MACDP3(9); var : MAv1(0), MAv2(0), MAv3(0), MAv4(0); var : RSV(0); var : Energe1(0),Energe2(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 && MAv4 - MAv2 <= 간격 && C < MAv4 && MACDO < 0 Then { Sell("최초매도", OnClose, DEF); Condition1 = true; } if Condition1 == true && MarketPosition == 0 && IsExitName("반복청산",1) == true && IsEntryName("최초매도",1) == true && EntryDate(1) == sdate && C <= mav4-PriceScale*X && (CrossDown(MACDO,0) or C >= ExitPrice(1)+PriceScale*N) Then{ sell("반복매도"); } #반복매도청산조건 if MarketPosition == -1 && CrossUp(MACDO,0) && IsEntryName("최초매도") == true Then ExitShort("반복청산"); //종가가 MAv4보다 크면 매도청산 if C > MAv4 Then { ExitShort("MAv4청산"); Condition1 = false; } //손절/목표청산 if MarketPosition == -1 Then{ ExitShort("손절",AtStop,EntryPrice+Losspoint); ExitShort("목표",AtLimit,EntryPrice-Profitpoint); } if BarsSinceExit(1) == 1 and ( IsExitName("손절",1) == true or IsExitName("목표",1) == True) Then Condition1 = false; input : rsiPeriod1(8), RSVValue1(31),N1(5),X1(3); input : maPeriod11(9),maPeriod12(13),maPeriod13(18), maPeriod14(40); input : Vo1l(0); input : 간격1(0.75); input : LossPoint1(1); input : ProfitPoint1(2.8); input : MACDP11(12),MACDP12(26),MACDP13(9); var : MAv11(0), MAv12(0), MAv13(0), MAv14(0); var : RSV1(0); var : Energe11(0),Energe12(0); var : MACDO1(0),cnt1(0); MAv11 = ma(C,maPeriod11); MAv12 = ma(C,maPeriod12); MAv13 = ma(C,maPeriod13); MAv14 = ma(C,maPeriod14); RSV1 = RSI(rsiPeriod); MACDO1 = MACD_OSC(MACDP1,MACDP2,MACDP3);//MACD 오실레이터1 if date != date[1] Then Condition1 = false; #최초 매도조건 if Condition1 == false && MarketPosition == 0 && V > Vol && MAv11 < MAv12 && MAv12 < MAv13 && MAv13 < MAv14 && RSV1 < RSVValue1 && MAv14 - MAv12 <= 간격 && C < MAv14 && MACDO1 < 0 Then { Sell("최초매도2", OnClose, DEF); Condition1 = true; } if Condition1 == true && MarketPosition == 0 && IsExitName("반복청산2",1) == true && IsEntryName("최초매도2",1) == true && EntryDate(1) == sdate && C <= mav4-PriceScale*X && (CrossDown(MACDO,0) or C >= ExitPrice(1)+PriceScale*N) Then{ sell("반복매도2"); } #반복매도청산조건 if MarketPosition == -1 && CrossUp(MACDO1,0) && IsEntryName("최초매도2") == true Then ExitShort("반복청산2"); //종가가 MAv4보다 크면 매도청산 if C > MAv14 Then { ExitShort("MAv4청산2"); Condition1 = false; } //손절/목표청산 if MarketPosition == -1 Then{ ExitShort("손절2",AtStop,EntryPrice+Losspoint); ExitShort("목표2",AtLimit,EntryPrice-Profitpoint); } if BarsSinceExit(1) == 1 and ( IsExitName("손절2",1) == true or IsExitName("목표2",1) == True) Then Condition1 = false;
프로필 이미지

예스스탁 예스스탁 답변

2013-03-11 19:53:28

안녕하세요 예스스탁입니다. 식을 수정했습니다. 반복청산1에 이름이 잘못지정되어 있었습니다. 아래 적용해 보시고 의도와 다른 부분 있으시면 다시 올려주시기 바랍니다. input : rsiPeriod(8), RSVValue(31),N(5),X(3); input : maPeriod1(9),maPeriod2(13),maPeriod3(18), maPeriod4(66); input : Vol(0); input : 간격(0.75); input : LossPoint(1); input : ProfitPoint(2.8); input : MACDP1(12),MACDP2(26),MACDP3(9); var : MAv1(0), MAv2(0), MAv3(0), MAv4(0); var : RSV(0); var : Energe1(0),Energe2(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 && Condition11 == false && MarketPosition == 0 && V > Vol && MAv1 < MAv2 && MAv2 < MAv3 && MAv3 < MAv4 && RSV < RSVValue && MAv4 - MAv2 <= 간격 && C < MAv4 && MACDO < 0 Then { Sell("최초매도", OnClose, DEF); Condition1 = true; } if Condition1 == true && MarketPosition == 0 && IsExitName("반복청산",1) == true && IsEntryName("최초매도",1) == true && EntryDate(1) == sdate && C <= mav4-PriceScale*X && (CrossDown(MACDO,0) or C >= ExitPrice(1)+PriceScale*N) Then{ sell("반복매도"); } #반복매도청산조건 if MarketPosition == -1 && CrossUp(MACDO,0) && IsEntryName("최초매도") == true Then ExitShort("반복청산"); //종가가 MAv4보다 크면 매도청산 if Condition1 == True && C > MAv4 Then { ExitShort("MAv4청산"); Condition1 = false; } //손절/목표청산 if MarketPosition == -1 and (IsEntryName("최초매도") or IsEntryName("반복매도")) Then{ ExitShort("손절",AtStop,EntryPrice+Losspoint); ExitShort("목표",AtLimit,EntryPrice-Profitpoint); } if BarsSinceExit(1) == 1 and ( IsExitName("손절",1) == true or IsExitName("목표",1) == True) Then Condition1 = false; input : rsiPeriod1(8), RSVValue1(31),N1(5),X1(3); input : maPeriod11(9),maPeriod21(13),maPeriod31(18), maPeriod41(66); input : Vol1(0); input : 간격1(0.75); input : LossPoint1(1); input : ProfitPoint1(2.8); input : MACDP11(12),MACDP21(26),MACDP31(9); var : MAv11(0), MAv21(0), MAv31(0), MAv41(0); var : RSV1(0); var : Energe11(0),Energe21(0); var : MACDO1(0),cnt1(0); MAv11 = ma(C,maPeriod11); MAv21 = ma(C,maPeriod21); MAv31 = ma(C,maPeriod31); MAv41 = ma(C,maPeriod41); RSV1 = RSI(rsiPeriod1); MACDO1 = MACD_OSC(MACDP11,MACDP21,MACDP31);//MACD 오실레이터 if date != date[1] Then Condition11 = false; #최초 매도조건 if Condition11 == false && Condition1 == false && MarketPosition == 0 && V > Vol1 && MAv11 < MAv21 && MAv21 < MAv31 && MAv31 < MAv41 && RSV1 < RSVValue1 && MAv41 - MAv21 <= 간격1 && C < MAv41 && MACDO1 < 0 Then { Sell("최초매도1", OnClose, DEF); Condition11 = true; } if Condition11 == true && MarketPosition == 0 && IsExitName("반복청산1",1) == true && IsEntryName("최초매도1",1) == true && EntryDate(1) == sdate && C <= mav41-PriceScale*X1 && (CrossDown(MACDO1,0) or C >= ExitPrice(1)+PriceScale*N1) Then{ sell("반복매도1"); } #반복매도청산조건 if MarketPosition == -1 && CrossUp(MACDO1,0) && IsEntryName("최초매도1") == true Then ExitShort("반복청산1"); //종가가 MAv4보다 크면 매도청산 if Condition11 == true && C > MAv41 Then { ExitShort("MAv4청산1"); Condition11 = false; } //손절/목표청산 if MarketPosition == -1 and (IsEntryName("최초매도1") or IsEntryName("반복매도1")) Then{ ExitShort("손절1",AtStop,EntryPrice+Losspoint1); ExitShort("목표1",AtLimit,EntryPrice-Profitpoint1); } if BarsSinceExit(1) == 1 and ( IsExitName("손절1",1) == true or IsExitName("목표1",1) == True) Then Condition11 = false; 즐거운 하루되세요 > 아라미스33 님이 쓴 글입니다. > 제목 : Re : Re : 안녕하세요 > 변수값 맞추어서 오늘 그래프를 보니깐 2번에 매도 진입이 되었는데 반복청산과 반복매도는 이루어 지지 않았습니다 1번에 매도 진입 사인이 나오기 전이기 때문에 2번에 매도 진입후 반복청산과 반복매도가 되어야 하는데 그냥 이평선기준 청산까지 주욱 흘러 갑니다 1번에는 그 사이 매도도 나오고 진입후 반복청산과 반복매도도 나왔구요 두신호중에 먼저 나오는 신호값으로만 나오게 하면 되거든요 > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 안녕하세요 > 안녕하세요 예스탁입니다. 변수와 진입,청산이름을 모두 다른 이름으로 변경해 주셔야 하며 2개 2평중 하나만 기준이 되므로 진입을 2개모두 false일때 진입하게 하셔야 합니다. input : rsiPeriod(8), RSVValue(31),N(5),X(3); input : maPeriod1(9),maPeriod2(13),maPeriod3(18), maPeriod4(66); input : Vol(0); input : 간격(0.75); input : LossPoint(1); input : ProfitPoint(2.8); input : MACDP1(12),MACDP2(26),MACDP3(9); var : MAv1(0), MAv2(0), MAv3(0), MAv4(0); var : RSV(0); var : Energe1(0),Energe2(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 && Condition11 == false && MarketPosition == 0 && V > Vol && MAv1 < MAv2 && MAv2 < MAv3 && MAv3 < MAv4 && RSV < RSVValue && MAv4 - MAv2 <= 간격 && C < MAv4 && MACDO < 0 Then { Sell("최초매도", OnClose, DEF); Condition1 = true; } if Condition1 == true && MarketPosition == 0 && IsExitName("반복청산",1) == true && IsEntryName("최초매도",1) == true && EntryDate(1) == sdate && C <= mav4-PriceScale*X && (CrossDown(MACDO,0) or C >= ExitPrice(1)+PriceScale*N) Then{ sell("반복매도"); } #반복매도청산조건 if MarketPosition == -1 && CrossUp(MACDO,0) && IsEntryName("최초매도") == true Then ExitShort("반복청산"); //종가가 MAv4보다 크면 매도청산 if C > MAv4 Then { ExitShort("MAv4청산"); Condition1 = false; } //손절/목표청산 if MarketPosition == -1 Then{ ExitShort("손절",AtStop,EntryPrice+Losspoint); ExitShort("목표",AtLimit,EntryPrice-Profitpoint); } if BarsSinceExit(1) == 1 and ( IsExitName("손절",1) == true or IsExitName("목표",1) == True) Then Condition1 = false; input : rsiPeriod1(8), RSVValue1(31),N1(5),X1(3); input : maPeriod11(9),maPeriod21(13),maPeriod31(18), maPeriod41(66); input : Vol1(0); input : 간격1(0.75); input : LossPoint1(1); input : ProfitPoint1(2.8); input : MACDP11(12),MACDP21(26),MACDP31(9); var : MAv11(0), MAv21(0), MAv31(0), MAv41(0); var : RSV1(0); var : Energe11(0),Energe21(0); var : MACDO1(0),cnt1(0); MAv11 = ma(C,maPeriod11); MAv21 = ma(C,maPeriod21); MAv31 = ma(C,maPeriod31); MAv41 = ma(C,maPeriod41); RSV1 = RSI(rsiPeriod1); MACDO1 = MACD_OSC(MACDP11,MACDP21,MACDP31);//MACD 오실레이터 if date != date[1] Then Condition11 = false; #최초 매도조건 if Condition11 == false && Condition1 == false && MarketPosition == 0 && V > Vol1 && MAv11 < MAv21 && MAv21 < MAv31 && MAv31 < MAv41 && RSV1 < RSVValue1 && MAv41 - MAv21 <= 간격1 && C < MAv41 && MACDO1 < 0 Then { Sell("최초매도1", OnClose, DEF); Condition11 = true; } if Condition11 == true && MarketPosition == 0 && IsExitName("반복청산1",1) == true && IsEntryName("최초매도1",1) == true && EntryDate(1) == sdate && C <= mav41-PriceScale*X1 && (CrossDown(MACDO1,0) or C >= ExitPrice(1)+PriceScale*N1) Then{ sell("반복매도1"); } #반복매도청산조건 if MarketPosition == -1 && CrossUp(MACDO1,0) && IsEntryName("최초매도") == true Then ExitShort("반복청산1"); //종가가 MAv4보다 크면 매도청산 if C > MAv41 Then { ExitShort("MAv4청산1"); Condition11 = false; } //손절/목표청산 if MarketPosition == -1 Then{ ExitShort("손절1",AtStop,EntryPrice+Losspoint1); ExitShort("목표1",AtLimit,EntryPrice-Profitpoint1); } if BarsSinceExit(1) == 1 and ( IsExitName("손절1",1) == true or IsExitName("목표1",1) == True) Then Condition11 = false; 즐거운 하루되세요 > 아라미스33 님이 쓴 글입니다. > 제목 : 안녕하세요 > 주말 잘 보내셨나요? 같은식을 변수값을 틀리게 해서 먼저 신호가 나온대로 진행할려고 합니다 한번 만들어 보았는데 안되는거 같아요 한번만 봐주세요 감사합니다 input : rsiPeriod(8), RSVValue(31),N(5),X(3); input : maPeriod1(9),maPeriod2(13),maPeriod3(18), maPeriod4(66); input : Vol(0); input : 간격(0.75); input : LossPoint(1); input : ProfitPoint(2.8); input : MACDP1(12),MACDP2(26),MACDP3(9); var : MAv1(0), MAv2(0), MAv3(0), MAv4(0); var : RSV(0); var : Energe1(0),Energe2(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 && MAv4 - MAv2 <= 간격 && C < MAv4 && MACDO < 0 Then { Sell("최초매도", OnClose, DEF); Condition1 = true; } if Condition1 == true && MarketPosition == 0 && IsExitName("반복청산",1) == true && IsEntryName("최초매도",1) == true && EntryDate(1) == sdate && C <= mav4-PriceScale*X && (CrossDown(MACDO,0) or C >= ExitPrice(1)+PriceScale*N) Then{ sell("반복매도"); } #반복매도청산조건 if MarketPosition == -1 && CrossUp(MACDO,0) && IsEntryName("최초매도") == true Then ExitShort("반복청산"); //종가가 MAv4보다 크면 매도청산 if C > MAv4 Then { ExitShort("MAv4청산"); Condition1 = false; } //손절/목표청산 if MarketPosition == -1 Then{ ExitShort("손절",AtStop,EntryPrice+Losspoint); ExitShort("목표",AtLimit,EntryPrice-Profitpoint); } if BarsSinceExit(1) == 1 and ( IsExitName("손절",1) == true or IsExitName("목표",1) == True) Then Condition1 = false; input : rsiPeriod1(8), RSVValue1(31),N1(5),X1(3); input : maPeriod11(9),maPeriod12(13),maPeriod13(18), maPeriod14(40); input : Vo1l(0); input : 간격1(0.75); input : LossPoint1(1); input : ProfitPoint1(2.8); input : MACDP11(12),MACDP12(26),MACDP13(9); var : MAv11(0), MAv12(0), MAv13(0), MAv14(0); var : RSV1(0); var : Energe11(0),Energe12(0); var : MACDO1(0),cnt1(0); MAv11 = ma(C,maPeriod11); MAv12 = ma(C,maPeriod12); MAv13 = ma(C,maPeriod13); MAv14 = ma(C,maPeriod14); RSV1 = RSI(rsiPeriod); MACDO1 = MACD_OSC(MACDP1,MACDP2,MACDP3);//MACD 오실레이터1 if date != date[1] Then Condition1 = false; #최초 매도조건 if Condition1 == false && MarketPosition == 0 && V > Vol && MAv11 < MAv12 && MAv12 < MAv13 && MAv13 < MAv14 && RSV1 < RSVValue1 && MAv14 - MAv12 <= 간격 && C < MAv14 && MACDO1 < 0 Then { Sell("최초매도2", OnClose, DEF); Condition1 = true; } if Condition1 == true && MarketPosition == 0 && IsExitName("반복청산2",1) == true && IsEntryName("최초매도2",1) == true && EntryDate(1) == sdate && C <= mav4-PriceScale*X && (CrossDown(MACDO,0) or C >= ExitPrice(1)+PriceScale*N) Then{ sell("반복매도2"); } #반복매도청산조건 if MarketPosition == -1 && CrossUp(MACDO1,0) && IsEntryName("최초매도2") == true Then ExitShort("반복청산2"); //종가가 MAv4보다 크면 매도청산 if C > MAv14 Then { ExitShort("MAv4청산2"); Condition1 = false; } //손절/목표청산 if MarketPosition == -1 Then{ ExitShort("손절2",AtStop,EntryPrice+Losspoint); ExitShort("목표2",AtLimit,EntryPrice-Profitpoint); } if BarsSinceExit(1) == 1 and ( IsExitName("손절2",1) == true or IsExitName("목표2",1) == True) Then Condition1 = false;