커뮤니티

청산...

프로필 이미지
hippomom
2009-09-13 11:10:07
714
글번호 24707
답변완료
1분봉으로 매매해서 전날보다 갭상승2%이상이면 오늘 매수 하고 당일 청산이 되지 않은경우 수량을 50%는 줄인다 는 수식이 뭐가틀린지 잘모르겠네요 ...고쳐주세요.. var : cnt(0),N(0); if date != date[1] then cnt = 0; if sTime == 150000 Then{ var3=c; if NextBarOpen >= var3*1.02 then var1=1; } if var1==1 Then { if crossup(o,DayOpen) Then buy("b",AtMarket); } if MarketPosition == 1 and IsEntryName("B") == True Then{ if avgEntryPrice*1.05>=o and crossup(o,EntryPrice*1.02) then ExitLong("1",AtStop,EntryPrice*1.01); if avgEntryPrice*1.1>=o and Crossup(o,EntryPrice*1.07) Then ExitLong("5",AtStop,EntryPrice*1.05); cnt = cnt +1; } if MarketPosition == 1 Then{ var4 = CurrentContracts; var5 = (var4*0.5); } if cnt<=0 then{ if time==150000 Then ExitLong("50%",AtMarket,var5); }
시스템
답변 3
프로필 이미지

캐빈이야

2009-09-13 11:52:52

var : cnt(0),N(0); if date != date[1] then cnt = 0; ================================================================== ==> 날짜가 바뀌면 cnt를 초기화하는것으로 보이네요 이것은 이렇게 if stime == 090000 then {cnt =0;} ================================================================== if sTime == 150000 Then{ var3=c; if NextBarOpen >= var3*1.02 then var1=1; } ================================================================== ==> 이것은 전날 종가를 var3로 저장하고 다음날 갭상이 발생되어 2%이상 발생하면 var1에 1을 설정한다. if (DayOpen >= DayClose(1)*1.02) then { var1 =1;} ================================================================== if var1==1 Then { if crossup(o,DayOpen) Then buy("b",AtMarket); } ================================================================== ==> 이식은 문제 될거 없네요 ================================================================== if MarketPosition == 1 and IsEntryName("B") == True Then{ if avgEntryPrice*1.05>=o and crossup(o,EntryPrice*1.02) then ExitLong("1",AtStop,EntryPrice*1.01); if avgEntryPrice*1.1>=o and Crossup(o,EntryPrice*1.07) Then ExitLong("5",AtStop,EntryPrice*1.05); cnt = cnt +1; } if MarketPosition == 1 Then{ var4 = CurrentContracts; var5 = (var4*0.5); } if cnt<=0 then{ if time==150000 Then //파생거래하는 것은 150000이어도 되지만 주식일경우 거래는 144800으로 적어줘야할거같네요. ExitLong("50%",AtMarket,var5); } ================================================================== ==> 이식에서 문제가 되네요 cnt <= 0 일경우는 당일 첫봉에 해당되는데 time이 150000이므로.... 반응을 안하는거 같네요 ================================================================== if MarketPosition == 1 and stime == 145900 then { ExitLong("50%",AtMarket,var5); } 위의 식을 필요없는 변수 빼고 다시 쓰면 if (DayOpen >= DayClose(1)*1.02) then { var1 =1;} if var1==1 and crossup(o,DayOpen) Then { buy("b",AtMarket); } if MarketPosition == 1 and IsEntryName("B") == True Then { if avgEntryPrice*1.05>=o and crossup(o,EntryPrice*1.02) then { ExitLong("1",AtStop,EntryPrice*1.01); } if avgEntryPrice*1.1>=o and Crossup(o,EntryPrice*1.07) Then { ExitLong("5",AtStop,EntryPrice*1.05); } } if MarketPosition == 1 Then{ var2 = int(CurrentContracts*0.5); // 정수화시킨다 } if MarketPosition == 1 and stime == 145900 then { //파생거래하는 것은 150000이어도 되지만 주식일경우 거래는 144800으로 적어줘야할거같네요. ExitLong("50%",AtMarket,var2); } 그냥 검증안하고 수정해서 올립니다. 한번 확인해보세요. > hippomom 님이 쓴 글입니다. > 제목 : 청산... > 1분봉으로 매매해서 전날보다 갭상승2%이상이면 오늘 매수 하고 당일 청산이 되지 않은경우 수량을 50%는 줄인다 는 수식이 뭐가틀린지 잘모르겠네요 ...고쳐주세요.. var : cnt(0),N(0); if date != date[1] then cnt = 0; if sTime == 150000 Then{ var3=c; if NextBarOpen >= var3*1.02 then var1=1; } if var1==1 Then { if crossup(o,DayOpen) Then buy("b",AtMarket); } if MarketPosition == 1 and IsEntryName("B") == True Then{ if avgEntryPrice*1.05>=o and crossup(o,EntryPrice*1.02) then ExitLong("1",AtStop,EntryPrice*1.01); if avgEntryPrice*1.1>=o and Crossup(o,EntryPrice*1.07) Then ExitLong("5",AtStop,EntryPrice*1.05); cnt = cnt +1; } if MarketPosition == 1 Then{ var4 = CurrentContracts; var5 = (var4*0.5); } if cnt<=0 then{ if time==150000 Then ExitLong("50%",AtMarket,var5); }
프로필 이미지

님의침묵

2009-09-13 21:29:15

> 캐빈이야 님이 쓴 글입니다. > 제목 : Re : 청산... > var : cnt(0),N(0); if date != date[1] then cnt = 0; ================================================================== ==> 날짜가 바뀌면 cnt를 초기화하는것으로 보이네요 이것은 이렇게 if stime == 090000 then {cnt =0;} ================================================================== if sTime == 150000 Then{ var3=c; if NextBarOpen >= var3*1.02 then var1=1; } ================================================================== ==> 이것은 전날 종가를 var3로 저장하고 다음날 갭상이 발생되어 2%이상 발생하면 var1에 1을 설정한다. if (DayOpen >= DayClose(1)*1.02) then { var1 =1;} ================================================================== if var1==1 Then { if crossup(o,DayOpen) Then buy("b",AtMarket); } ================================================================== ==> 이식은 문제 될거 없네요 ================================================================== if MarketPosition == 1 and IsEntryName("B") == True Then{ if avgEntryPrice*1.05>=o and crossup(o,EntryPrice*1.02) then ExitLong("1",AtStop,EntryPrice*1.01); if avgEntryPrice*1.1>=o and Crossup(o,EntryPrice*1.07) Then ExitLong("5",AtStop,EntryPrice*1.05); cnt = cnt +1; } if MarketPosition == 1 Then{ var4 = CurrentContracts; var5 = (var4*0.5); } if cnt<=0 then{ if time==150000 Then //파생거래하는 것은 150000이어도 되지만 주식일경우 거래는 144800으로 적어줘야할거같네요. ExitLong("50%",AtMarket,var5); } ================================================================== ==> 이식에서 문제가 되네요 cnt <= 0 일경우는 당일 첫봉에 해당되는데 time이 150000이므로.... 반응을 안하는거 같네요 ================================================================== if MarketPosition == 1 and stime == 145900 then { ExitLong("50%",AtMarket,var5); } 위의 식을 필요없는 변수 빼고 다시 쓰면 if (DayOpen >= DayClose(1)*1.02) then { var1 =1;} if var1==1 and crossup(o,DayOpen) Then { buy("b",AtMarket); } if MarketPosition == 1 and IsEntryName("B") == True Then { if avgEntryPrice*1.05>=o and crossup(o,EntryPrice*1.02) then { ExitLong("1",AtStop,EntryPrice*1.01); } if avgEntryPrice*1.1>=o and Crossup(o,EntryPrice*1.07) Then { ExitLong("5",AtStop,EntryPrice*1.05); } } if MarketPosition == 1 Then{ var2 = int(CurrentContracts*0.5); // 정수화시킨다 } if MarketPosition == 1 and stime == 145900 then { //파생거래하는 것은 150000이어도 되지만 주식일경우 거래는 144800으로 적어줘야할거같네요. ExitLong("50%",AtMarket,var2); } 그냥 검증안하고 수정해서 올립니다. 한번 확인해보세요. > hippomom 님이 쓴 글입니다. > 제목 : 청산... > 1분봉으로 매매해서 전날보다 갭상승2%이상이면 오늘 매수 하고 당일 청산이 되지 않은경우 수량을 50%는 줄인다 는 수식이 뭐가틀린지 잘모르겠네요 ...고쳐주세요.. var : cnt(0),N(0); if date != date[1] then cnt = 0; if sTime == 150000 Then{ var3=c; if NextBarOpen >= var3*1.02 then var1=1; } if var1==1 Then { if crossup(o,DayOpen) Then buy("b",AtMarket); } if MarketPosition == 1 and IsEntryName("B") == True Then{ if avgEntryPrice*1.05>=o and crossup(o,EntryPrice*1.02) then ExitLong("1",AtStop,EntryPrice*1.01); if avgEntryPrice*1.1>=o and Crossup(o,EntryPrice*1.07) Then ExitLong("5",AtStop,EntryPrice*1.05); cnt = cnt +1; } if MarketPosition == 1 Then{ var4 = CurrentContracts; var5 = (var4*0.5); } if cnt<=0 then{ if time==150000 Then ExitLong("50%",AtMarket,var5); }
프로필 이미지

예스스탁 예스스탁 답변

2009-09-14 11:36:11

안녕하세요 예스스탁입니다. 수량의 반으로 나우실때 소숫점이 있을 수 있으므로 int함수를 이용하여 정수값만 가질수 있도록 해주셔야 합니다. 청산함수의 수량은 5번째 매개변수입니다. 청산식을 수정했습니다. if MarketPosition == 1 and stime == 150000 Then{ var4 = CurrentContracts; var5 = int(var4*0.5); ExitLong("50%",AtMarket,def,"",var5,1); } 즐거운 하루되세요 > hippomom 님이 쓴 글입니다. > 제목 : 청산... > 1분봉으로 매매해서 전날보다 갭상승2%이상이면 오늘 매수 하고 당일 청산이 되지 않은경우 수량을 50%는 줄인다 는 수식이 뭐가틀린지 잘모르겠네요 ...고쳐주세요.. var : cnt(0),N(0); if date != date[1] then cnt = 0; if sTime == 150000 Then{ var3=c; if NextBarOpen >= var3*1.02 then var1=1; } if var1==1 Then { if crossup(o,DayOpen) Then buy("b",AtMarket); } if MarketPosition == 1 and IsEntryName("B") == True Then{ if avgEntryPrice*1.05>=o and crossup(o,EntryPrice*1.02) then ExitLong("1",AtStop,EntryPrice*1.01); if avgEntryPrice*1.1>=o and Crossup(o,EntryPrice*1.07) Then ExitLong("5",AtStop,EntryPrice*1.05); cnt = cnt +1; } if MarketPosition == 1 Then{ var4 = CurrentContracts; var5 = (var4*0.5); } if cnt<=0 then{ if time==150000 Then ExitLong("50%",AtMarket,var5); }