커뮤니티
안녕하세요
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;