커뮤니티
사용하고 있는 수식에서 하루에 1회만 거래될수 있는 수식 추가 부탁드림니다.
2019-04-08 10:59:38
226
글번호 127695
쿠르드 오일입니다. 분봉 매매입니다. (30분봉)
아래수식에 하루에 매수-매도든 상관없이 1일 1회진입 하는 수식이 추가될수 있도록
부탁드릴께요~~
이것저것 변수를 부치다보니 저도 수식이 관리가 안되네요.ㅠㅠ
지금 식은 하루에 많을때는 4-6번도 더 진입이 되네요~~
input : p1(3),p2(1),af(0.02), maxAF(0.2);
input : 즉시익절1(85),봉완성익절1(58),올랐다본전틱수1(38),본전청산1(-32),즉시손절1(72),봉완성손절1(70);
input : 즉시익절2(61),봉완성익절2(54),올랐다본전틱수2(31),본전청산2(-14),즉시손절2(84),봉완성손절2(58);
input : N1(3),N2(4);
Input :N3(5),N4(30),매수제한(0.1),매도제한(0.13);
input : 즉시익절3(90),봉완성익절3(55),올랐다본전틱수3(19),본전청산3(-36),즉시손절3(84),봉완성손절3(74);
input : 즉시익절4(94),봉완성익절4(45),올랐다본전틱수4(39),본전청산4(-25),즉시손절4(60),봉완성손절4(50);
Input : RSIPeriod(10),SimPeriod(10);
Input : RSI상한선1(93),RSI하한선1(21),Sim상한선1(91),Sim하한선1(1);
Input : RSI상한선2(93),RSI하한선2(23),Sim상한선2(91),Sim하한선2(1);
Input : P100(1000),P200(200),P300(600),P400(300);
Input : MFIPeriod(20),P1000(32),P2000(91),P3000(24),P4000(90);
Input : ADXP(2);
Input : BBUPPeriod(4),dvUP(0.9),BBDOWNPeriod(4),dvDW(0.5);
Input : EnvelopePeriod1(3),EnvelopePercent1(0.03),EnvelopePeriod2(5),EnvelopePercent2(0.02);
Input : cciperiod(20),I1(6),I2(10),I3(9),I4(18);
var : cnt(0),sum1(0),sum2(0),avg1(0),avg2(0),avg3(0),T(0),mav2(0),mav3(0),value(0),RSIV(0),Simri(0),value100(0),CCIO(0);
var : sum3(0),Tcond(false),adxv(0);
value100 = MFI(MFIPeriod);
RSIV = RSI(RSIPeriod);
Simri = Simrido(SimPeriod);
CCIO = CCI(cciPeriod);
var1 = CSar(af,maxAF);
Var4 = highest(H,N3);
Var5 = lowest(L,N3);
var1 = CSar(af,maxAF);
Var6 = highest(H,N4);
Var7 = lowest(L,N4);
Var8 = BollBandUp(BBUPPeriod,dvUP);
Var9 = BollBandDown(BBDOWNPeriod,dvDW);
Var10 = EnvelopeUp(EnvelopePeriod1,EnvelopePercent1);
var11 = EnvelopeDown(EnvelopePeriod2,EnvelopePercent2);
ADXV = ADX(ADXP);
if DayClose(N2) > 0 Then
{
sum1 = 0;
sum2 = 0;
for cnt = 0 to N2-1
{
if cnt < N1 Then
sum1 = sum1 + DayClose(cnt);
if cnt < N2 Then
sum2 = sum2 + DayClose(cnt+1);
}
avg1 = sum1/N1;
avg2 = sum2/N2;
T = 0;
if avg1 >= avg2 Then
T = 1;
if avg1 < avg2 Then
T = -1;
if T == 1 Then
{
#골드가 발생하면
if var1 > C Then
{
#value1에 봉번호 저장
value1 = index;
#value2에 종가 저장
value2 = C;
}
#데드가 발생하면
If var1 < C Then
{
#value3에 봉번호 저장
value3 = index;
#value4에 종가 저장
value4 = C;
}
#무포지션이고
#골드이후 10개봉이상 경과했고
#종가가 직전 10봉의 최고가보다 크고
#종가가 골드봉의 종가보다 크면
#매수
if MarketPosition == 0 and
index >= value1+P1 and
C > highest(H,P1)[1] and
C <= Var4-(Var4-Var5)*매수제한 and
RSIV < RSI상한선1 and
Simri < Sim상한선1 and
V > P100 and
value100 >= P1000 and
ADXV > ADXV[1] and
c > Var8 and
c > Var10 and
CCIO > I1 and
C > value2 then
buy("매수",OnClose,def,1);
#무포지션이고
#데드이후 10개봉이상 경과했고
#종가가 직전 10봉의 최저가보다 작고
#종가가 데드봉의 종가보다 작으면
#매도
if MarketPosition == 0 and
index >= value3+P2 and
C < Lowest(L,P2)[1] and
C >= Var7+(Var6-Var7)*매도제한 and
RSIV > RSI하한선1 and
Simri > Sim하한선1 and
V > P200 and
value100 <= P2000 and
ADXV > ADXV[1] and
c < Var9 and
c < Var11 and
CCIO < I2 and
C < value4 then
Sell("매도",OnClose,def,1);
if MarketPosition == 1 then
{
ExitLong("즉시익절1",AtLimit,EntryPrice+PriceScale*즉시익절1);
if C >= EntryPrice+PriceScale*봉완성익절1 Then
ExitLong("봉완성익절1");
if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*올랐다본전틱수1 Then
ExitLong("본전청산1",AtStop,EntryPrice+PriceScale*(본전청산1));
ExitLong("즉시손절1",AtStop,EntryPrice-PriceScale*즉시손절1);
if c <= EntryPrice-PriceScale*봉완성손절1 Then
ExitLong("봉완성손절1");
}
if MarketPosition == -1 then
{
ExitShort("즉시익절2",AtLimit,EntryPrice-PriceScale*즉시익절2);
if C <= EntryPrice-PriceScale*봉완성익절2 Then
ExitShort("봉완성익절2");
if lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*올랐다본전틱수2 Then
ExitShort("본전청산2",AtStop,EntryPrice-PriceScale*(본전청산2));
ExitShort("즉시손절2",AtStop,EntryPrice+PriceScale*즉시손절2);
if c >= EntryPrice+PriceScale*봉완성손절2 Then
ExitShort("봉완성손절2");
}
}
}
if T == -1 Then
{
#골드가 발생하면
if var1 > C Then
{
#value1에 봉번호 저장
value1 = index;
#value2에 종가 저장
value2 = C;
}
#데드가 발생하면
If var1 < C Then
{
#value3에 봉번호 저장
value3 = index;
#value4에 종가 저장
value4 = C;
}
#무포지션이고
#골드이후 10개봉이상 경과했고
#종가가 직전 10봉의 최고가보다 크고
#종가가 골드봉의 종가보다 크면
#매수
if MarketPosition == 0 and
index >= value1+P1 and
C > highest(H,P1)[1] and
C <= Var4-(Var4-Var5)*매수제한 and
RSIV < RSI상한선2 and
Simri < Sim상한선2 and
V > P300 and
value100 >= P3000 and
ADXV > ADXV[1] and
c > Var8 and
c > Var10 and
CCIO > I3 and
C > value2 then
buy("매수2",OnClose,def,1);
#무포지션이고
#데드이후 10개봉이상 경과했고
#종가가 직전 10봉의 최저가보다 작고
#종가가 데드봉의 종가보다 작으면
#매도
if MarketPosition == 0 and
index >= value3+P2 and
C < Lowest(L,P2)[1] and
C >= Var7+(Var6-Var7)*매도제한 and
RSIV > RSI하한선2 and
Simri > Sim하한선2 and
V > P400 and
value100 <= P4000 and
ADXV > ADXV[1] and
c < Var9 and
c < Var11 and
CCIO < I4 and
C < value4 then
Sell("매도2",OnClose,def,1);
if MarketPosition == 1 then
{
ExitLong("즉시익절3",AtLimit,EntryPrice+PriceScale*즉시익절3);
if C >= EntryPrice+PriceScale*봉완성익절3 Then
ExitLong("봉완성익절3");
if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*올랐다본전틱수3 Then
ExitLong("본전청산3",AtStop,EntryPrice+PriceScale*(본전청산3));
ExitLong("즉시손절3",AtStop,EntryPrice-PriceScale*즉시손절3);
if c <= EntryPrice-PriceScale*봉완성손절3 Then
ExitLong("봉완성손절3");
}
if MarketPosition == -1 then
{
ExitShort("즉시익절4",AtLimit,EntryPrice-PriceScale*즉시익절4);
if C <= EntryPrice-PriceScale*봉완성익절4 Then
ExitShort("봉완성익절4");
if lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*올랐다본전틱수4 Then
ExitShort("본전청산4",AtStop,EntryPrice-PriceScale*(본전청산4));
ExitShort("즉시손절4",AtStop,EntryPrice+PriceScale*즉시손절4);
if c >= EntryPrice+PriceScale*봉완성손절4 Then
ExitShort("봉완성손절4");
}
}
답변 1
예스스탁 예스스탁 답변
2019-04-09 15:06:09
안녕하세요
예스스탁입니다.
input : p1(3),p2(1),af(0.02), maxAF(0.2);
input : 즉시익절1(85),봉완성익절1(58),올랐다본전틱수1(38),본전청산1(-32),즉시손절1(72),봉완성손절1(70);
input : 즉시익절2(61),봉완성익절2(54),올랐다본전틱수2(31),본전청산2(-14),즉시손절2(84),봉완성손절2(58);
input : N1(3),N2(4);
Input :N3(5),N4(30),매수제한(0.1),매도제한(0.13);
input : 즉시익절3(90),봉완성익절3(55),올랐다본전틱수3(19),본전청산3(-36),즉시손절3(84),봉완성손절3(74);
input : 즉시익절4(94),봉완성익절4(45),올랐다본전틱수4(39),본전청산4(-25),즉시손절4(60),봉완성손절4(50);
Input : RSIPeriod(10),SimPeriod(10);
Input : RSI상한선1(93),RSI하한선1(21),Sim상한선1(91),Sim하한선1(1);
Input : RSI상한선2(93),RSI하한선2(23),Sim상한선2(91),Sim하한선2(1);
Input : P100(1000),P200(200),P300(600),P400(300);
Input : MFIPeriod(20),P1000(32),P2000(91),P3000(24),P4000(90);
Input : ADXP(2);
Input : BBUPPeriod(4),dvUP(0.9),BBDOWNPeriod(4),dvDW(0.5);
Input : EnvelopePeriod1(3),EnvelopePercent1(0.03),EnvelopePeriod2(5),EnvelopePercent2(0.02);
Input : cciperiod(20),I1(6),I2(10),I3(9),I4(18);
input : 당일최대진입횟수(1);
var : cnt(0),sum1(0),sum2(0),avg1(0),avg2(0),avg3(0),T(0),mav2(0),mav3(0),value(0),RSIV(0),Simri(0),value100(0),CCIO(0);
var : sum3(0),Tcond(false),adxv(0),entry(0);
if bdate != bdate[1] Then
Entry = 0;
if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then
Entry = Entry+1;
value100 = MFI(MFIPeriod);
RSIV = RSI(RSIPeriod);
Simri = Simrido(SimPeriod);
CCIO = CCI(cciPeriod);
var1 = CSar(af,maxAF);
Var4 = highest(H,N3);
Var5 = lowest(L,N3);
var1 = CSar(af,maxAF);
Var6 = highest(H,N4);
Var7 = lowest(L,N4);
Var8 = BollBandUp(BBUPPeriod,dvUP);
Var9 = BollBandDown(BBDOWNPeriod,dvDW);
Var10 = EnvelopeUp(EnvelopePeriod1,EnvelopePercent1);
var11 = EnvelopeDown(EnvelopePeriod2,EnvelopePercent2);
ADXV = ADX(ADXP);
if DayClose(N2) > 0 Then
{
sum1 = 0;
sum2 = 0;
for cnt = 0 to N2-1
{
if cnt < N1 Then
sum1 = sum1 + DayClose(cnt);
if cnt < N2 Then
sum2 = sum2 + DayClose(cnt+1);
}
avg1 = sum1/N1;
avg2 = sum2/N2;
T = 0;
if avg1 >= avg2 Then
T = 1;
if avg1 < avg2 Then
T = -1;
if T == 1 Then
{
#골드가 발생하면
if var1 > C Then
{
#value1에 봉번호 저장
value1 = index;
#value2에 종가 저장
value2 = C;
}
#데드가 발생하면
If var1 < C Then
{
#value3에 봉번호 저장
value3 = index;
#value4에 종가 저장
value4 = C;
}
#무포지션이고
#골드이후 10개봉이상 경과했고
#종가가 직전 10봉의 최고가보다 크고
#종가가 골드봉의 종가보다 크면
#매수
if MarketPosition == 0 and Entry < 당일최대진입횟수 and
index >= value1+P1 and
C > highest(H,P1)[1] and
C <= Var4-(Var4-Var5)*매수제한 and
RSIV < RSI상한선1 and
Simri < Sim상한선1 and
V > P100 and
value100 >= P1000 and
ADXV > ADXV[1] and
c > Var8 and
c > Var10 and
CCIO > I1 and
C > value2 then
buy("매수",OnClose,def,1);
#무포지션이고
#데드이후 10개봉이상 경과했고
#종가가 직전 10봉의 최저가보다 작고
#종가가 데드봉의 종가보다 작으면
#매도
if MarketPosition == 0 and Entry < 당일최대진입횟수 and
index >= value3+P2 and
C < Lowest(L,P2)[1] and
C >= Var7+(Var6-Var7)*매도제한 and
RSIV > RSI하한선1 and
Simri > Sim하한선1 and
V > P200 and
value100 <= P2000 and
ADXV > ADXV[1] and
c < Var9 and
c < Var11 and
CCIO < I2 and
C < value4 then
Sell("매도",OnClose,def,1);
if MarketPosition == 1 then
{
ExitLong("즉시익절1",AtLimit,EntryPrice+PriceScale*즉시익절1);
if C >= EntryPrice+PriceScale*봉완성익절1 Then
ExitLong("봉완성익절1");
if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*올랐다본전틱수1 Then
ExitLong("본전청산1",AtStop,EntryPrice+PriceScale*(본전청산1));
ExitLong("즉시손절1",AtStop,EntryPrice-PriceScale*즉시손절1);
if c <= EntryPrice-PriceScale*봉완성손절1 Then
ExitLong("봉완성손절1");
}
if MarketPosition == -1 then
{
ExitShort("즉시익절2",AtLimit,EntryPrice-PriceScale*즉시익절2);
if C <= EntryPrice-PriceScale*봉완성익절2 Then
ExitShort("봉완성익절2");
if lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*올랐다본전틱수2 Then
ExitShort("본전청산2",AtStop,EntryPrice-PriceScale*(본전청산2));
ExitShort("즉시손절2",AtStop,EntryPrice+PriceScale*즉시손절2);
if c >= EntryPrice+PriceScale*봉완성손절2 Then
ExitShort("봉완성손절2");
}
}
}
if T == -1 Then
{
#골드가 발생하면
if var1 > C Then
{
#value1에 봉번호 저장
value1 = index;
#value2에 종가 저장
value2 = C;
}
#데드가 발생하면
If var1 < C Then
{
#value3에 봉번호 저장
value3 = index;
#value4에 종가 저장
value4 = C;
}
#무포지션이고
#골드이후 10개봉이상 경과했고
#종가가 직전 10봉의 최고가보다 크고
#종가가 골드봉의 종가보다 크면
#매수
if MarketPosition == 0 and Entry < 당일최대진입횟수 and
index >= value1+P1 and
C > highest(H,P1)[1] and
C <= Var4-(Var4-Var5)*매수제한 and
RSIV < RSI상한선2 and
Simri < Sim상한선2 and
V > P300 and
value100 >= P3000 and
ADXV > ADXV[1] and
c > Var8 and
c > Var10 and
CCIO > I3 and
C > value2 then
buy("매수2",OnClose,def,1);
#무포지션이고
#데드이후 10개봉이상 경과했고
#종가가 직전 10봉의 최저가보다 작고
#종가가 데드봉의 종가보다 작으면
#매도
if MarketPosition == 0 and Entry < 당일최대진입횟수 and
index >= value3+P2 and
C < Lowest(L,P2)[1] and
C >= Var7+(Var6-Var7)*매도제한 and
RSIV > RSI하한선2 and
Simri > Sim하한선2 and
V > P400 and
value100 <= P4000 and
ADXV > ADXV[1] and
c < Var9 and
c < Var11 and
CCIO < I4 and
C < value4 then
Sell("매도2",OnClose,def,1);
if MarketPosition == 1 then
{
ExitLong("즉시익절3",AtLimit,EntryPrice+PriceScale*즉시익절3);
if C >= EntryPrice+PriceScale*봉완성익절3 Then
ExitLong("봉완성익절3");
if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*올랐다본전틱수3 Then
ExitLong("본전청산3",AtStop,EntryPrice+PriceScale*(본전청산3));
ExitLong("즉시손절3",AtStop,EntryPrice-PriceScale*즉시손절3);
if c <= EntryPrice-PriceScale*봉완성손절3 Then
ExitLong("봉완성손절3");
}
if MarketPosition == -1 then
{
ExitShort("즉시익절4",AtLimit,EntryPrice-PriceScale*즉시익절4);
if C <= EntryPrice-PriceScale*봉완성익절4 Then
ExitShort("봉완성익절4");
if lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*올랐다본전틱수4 Then
ExitShort("본전청산4",AtStop,EntryPrice-PriceScale*(본전청산4));
ExitShort("즉시손절4",AtStop,EntryPrice+PriceScale*즉시손절4);
if c >= EntryPrice+PriceScale*봉완성손절4 Then
ExitShort("봉완성손절4");
}
}
즐거운 하루되세요
> 이형지 님이 쓴 글입니다.
> 제목 : 사용하고 있는 수식에서 하루에 1회만 거래될수 있는 수식 추가 부탁드림니다.
> 쿠르드 오일입니다. 분봉 매매입니다. (30분봉)
아래수식에 하루에 매수-매도든 상관없이 1일 1회진입 하는 수식이 추가될수 있도록
부탁드릴께요~~
이것저것 변수를 부치다보니 저도 수식이 관리가 안되네요.ㅠㅠ
지금 식은 하루에 많을때는 4-6번도 더 진입이 되네요~~
input : p1(3),p2(1),af(0.02), maxAF(0.2);
input : 즉시익절1(85),봉완성익절1(58),올랐다본전틱수1(38),본전청산1(-32),즉시손절1(72),봉완성손절1(70);
input : 즉시익절2(61),봉완성익절2(54),올랐다본전틱수2(31),본전청산2(-14),즉시손절2(84),봉완성손절2(58);
input : N1(3),N2(4);
Input :N3(5),N4(30),매수제한(0.1),매도제한(0.13);
input : 즉시익절3(90),봉완성익절3(55),올랐다본전틱수3(19),본전청산3(-36),즉시손절3(84),봉완성손절3(74);
input : 즉시익절4(94),봉완성익절4(45),올랐다본전틱수4(39),본전청산4(-25),즉시손절4(60),봉완성손절4(50);
Input : RSIPeriod(10),SimPeriod(10);
Input : RSI상한선1(93),RSI하한선1(21),Sim상한선1(91),Sim하한선1(1);
Input : RSI상한선2(93),RSI하한선2(23),Sim상한선2(91),Sim하한선2(1);
Input : P100(1000),P200(200),P300(600),P400(300);
Input : MFIPeriod(20),P1000(32),P2000(91),P3000(24),P4000(90);
Input : ADXP(2);
Input : BBUPPeriod(4),dvUP(0.9),BBDOWNPeriod(4),dvDW(0.5);
Input : EnvelopePeriod1(3),EnvelopePercent1(0.03),EnvelopePeriod2(5),EnvelopePercent2(0.02);
Input : cciperiod(20),I1(6),I2(10),I3(9),I4(18);
var : cnt(0),sum1(0),sum2(0),avg1(0),avg2(0),avg3(0),T(0),mav2(0),mav3(0),value(0),RSIV(0),Simri(0),value100(0),CCIO(0);
var : sum3(0),Tcond(false),adxv(0);
value100 = MFI(MFIPeriod);
RSIV = RSI(RSIPeriod);
Simri = Simrido(SimPeriod);
CCIO = CCI(cciPeriod);
var1 = CSar(af,maxAF);
Var4 = highest(H,N3);
Var5 = lowest(L,N3);
var1 = CSar(af,maxAF);
Var6 = highest(H,N4);
Var7 = lowest(L,N4);
Var8 = BollBandUp(BBUPPeriod,dvUP);
Var9 = BollBandDown(BBDOWNPeriod,dvDW);
Var10 = EnvelopeUp(EnvelopePeriod1,EnvelopePercent1);
var11 = EnvelopeDown(EnvelopePeriod2,EnvelopePercent2);
ADXV = ADX(ADXP);
if DayClose(N2) > 0 Then
{
sum1 = 0;
sum2 = 0;
for cnt = 0 to N2-1
{
if cnt < N1 Then
sum1 = sum1 + DayClose(cnt);
if cnt < N2 Then
sum2 = sum2 + DayClose(cnt+1);
}
avg1 = sum1/N1;
avg2 = sum2/N2;
T = 0;
if avg1 >= avg2 Then
T = 1;
if avg1 < avg2 Then
T = -1;
if T == 1 Then
{
#골드가 발생하면
if var1 > C Then
{
#value1에 봉번호 저장
value1 = index;
#value2에 종가 저장
value2 = C;
}
#데드가 발생하면
If var1 < C Then
{
#value3에 봉번호 저장
value3 = index;
#value4에 종가 저장
value4 = C;
}
#무포지션이고
#골드이후 10개봉이상 경과했고
#종가가 직전 10봉의 최고가보다 크고
#종가가 골드봉의 종가보다 크면
#매수
if MarketPosition == 0 and
index >= value1+P1 and
C > highest(H,P1)[1] and
C <= Var4-(Var4-Var5)*매수제한 and
RSIV < RSI상한선1 and
Simri < Sim상한선1 and
V > P100 and
value100 >= P1000 and
ADXV > ADXV[1] and
c > Var8 and
c > Var10 and
CCIO > I1 and
C > value2 then
buy("매수",OnClose,def,1);
#무포지션이고
#데드이후 10개봉이상 경과했고
#종가가 직전 10봉의 최저가보다 작고
#종가가 데드봉의 종가보다 작으면
#매도
if MarketPosition == 0 and
index >= value3+P2 and
C < Lowest(L,P2)[1] and
C >= Var7+(Var6-Var7)*매도제한 and
RSIV > RSI하한선1 and
Simri > Sim하한선1 and
V > P200 and
value100 <= P2000 and
ADXV > ADXV[1] and
c < Var9 and
c < Var11 and
CCIO < I2 and
C < value4 then
Sell("매도",OnClose,def,1);
if MarketPosition == 1 then
{
ExitLong("즉시익절1",AtLimit,EntryPrice+PriceScale*즉시익절1);
if C >= EntryPrice+PriceScale*봉완성익절1 Then
ExitLong("봉완성익절1");
if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*올랐다본전틱수1 Then
ExitLong("본전청산1",AtStop,EntryPrice+PriceScale*(본전청산1));
ExitLong("즉시손절1",AtStop,EntryPrice-PriceScale*즉시손절1);
if c <= EntryPrice-PriceScale*봉완성손절1 Then
ExitLong("봉완성손절1");
}
if MarketPosition == -1 then
{
ExitShort("즉시익절2",AtLimit,EntryPrice-PriceScale*즉시익절2);
if C <= EntryPrice-PriceScale*봉완성익절2 Then
ExitShort("봉완성익절2");
if lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*올랐다본전틱수2 Then
ExitShort("본전청산2",AtStop,EntryPrice-PriceScale*(본전청산2));
ExitShort("즉시손절2",AtStop,EntryPrice+PriceScale*즉시손절2);
if c >= EntryPrice+PriceScale*봉완성손절2 Then
ExitShort("봉완성손절2");
}
}
}
if T == -1 Then
{
#골드가 발생하면
if var1 > C Then
{
#value1에 봉번호 저장
value1 = index;
#value2에 종가 저장
value2 = C;
}
#데드가 발생하면
If var1 < C Then
{
#value3에 봉번호 저장
value3 = index;
#value4에 종가 저장
value4 = C;
}
#무포지션이고
#골드이후 10개봉이상 경과했고
#종가가 직전 10봉의 최고가보다 크고
#종가가 골드봉의 종가보다 크면
#매수
if MarketPosition == 0 and
index >= value1+P1 and
C > highest(H,P1)[1] and
C <= Var4-(Var4-Var5)*매수제한 and
RSIV < RSI상한선2 and
Simri < Sim상한선2 and
V > P300 and
value100 >= P3000 and
ADXV > ADXV[1] and
c > Var8 and
c > Var10 and
CCIO > I3 and
C > value2 then
buy("매수2",OnClose,def,1);
#무포지션이고
#데드이후 10개봉이상 경과했고
#종가가 직전 10봉의 최저가보다 작고
#종가가 데드봉의 종가보다 작으면
#매도
if MarketPosition == 0 and
index >= value3+P2 and
C < Lowest(L,P2)[1] and
C >= Var7+(Var6-Var7)*매도제한 and
RSIV > RSI하한선2 and
Simri > Sim하한선2 and
V > P400 and
value100 <= P4000 and
ADXV > ADXV[1] and
c < Var9 and
c < Var11 and
CCIO < I4 and
C < value4 then
Sell("매도2",OnClose,def,1);
if MarketPosition == 1 then
{
ExitLong("즉시익절3",AtLimit,EntryPrice+PriceScale*즉시익절3);
if C >= EntryPrice+PriceScale*봉완성익절3 Then
ExitLong("봉완성익절3");
if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*올랐다본전틱수3 Then
ExitLong("본전청산3",AtStop,EntryPrice+PriceScale*(본전청산3));
ExitLong("즉시손절3",AtStop,EntryPrice-PriceScale*즉시손절3);
if c <= EntryPrice-PriceScale*봉완성손절3 Then
ExitLong("봉완성손절3");
}
if MarketPosition == -1 then
{
ExitShort("즉시익절4",AtLimit,EntryPrice-PriceScale*즉시익절4);
if C <= EntryPrice-PriceScale*봉완성익절4 Then
ExitShort("봉완성익절4");
if lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*올랐다본전틱수4 Then
ExitShort("본전청산4",AtStop,EntryPrice-PriceScale*(본전청산4));
ExitShort("즉시손절4",AtStop,EntryPrice+PriceScale*즉시손절4);
if c >= EntryPrice+PriceScale*봉완성손절4 Then
ExitShort("봉완성손절4");
}
}