커뮤니티
궁금한게 있습니다~
2012-03-30 13:36:17
277
글번호 49543
밑에 코드는 진입횟수 제한이랑 만기일 청산을 다시 짜주신건데,
진입횟수제한이 3회까지는되는데 1회, 2회는 안되는데 왜 그런거죠?
그리고 하루에 2pt 이상 손실이나면 모든 포지션을 청산시키고, 모든 재진입을 금지 시킬수있나요?
그리고 이건 아래 코드와 상관이 없는데, 야간cme 종가, 시가를 불러올수는없나요?
input : N(3);
var : va1(0),va2(0),va3(0);
var : count(0);
#당일진입횟수계산
Count = 0 ;
for Value1 = 0 to 10 {
if EntryDate( Value1 ) == sdate then
Count = Count + 1;
}
Condition1 = ExitDate(1) == sdate and IsExitName("StopProfittarget",1) == true;
if dayindex == 0 Then{
if data2(c) > 7000 Then
buy();
if data2(c) < -7000 Then
sell();
}
if Condition1 == false or (Condition1 == true and countif(CrossDown(data2(c),0) or Crossup(data2(c),0),BarsSinceExit(1)) >= 1) Then{
if crossup(data2(c),7000) and count < N Then
buy();
if CrossDown(data2(c),-7000) and Count < N Then
sell();
}
SetStopLoss(1,PointStop);
SetStopProfittarget(2,PointStop);
va1 = int(date/100)-int(date/10000)*100;
va2 = date - int(date/100)*100;
va3 = DayOfWeek(date);
if va1%3 == 0 and
va2 >= 8 and va2 <= 14 and
va3 == 4 then
SetStopEndofday(144000);#선물만기일
Else
SetStopEndofday(150430);#만기일이 아닐때
답변 1
예스스탁 예스스탁 답변
2012-03-30 16:54:50
안녕하세요
예스스탁입니다.
1.
테스트 해 보았지만
진입제한 식에 특별히 문제가 있어 보이지 않습니다.
청산식과 당일손실이 지정한 값이상이면 진입제한 하는 내용 추가했습니다.
input : N(3),하루손실(2);
var : va1(0),va2(0),va3(0);
var : count(0);
var : PLR(0),XCommission(0),XSlippage(0),OpenPL(0),dayPL(0),kcount(0);
#당일누적손익계산 시작
XCommission = ((C*ExitCommission)/100)*CurrentContracts; #%설정
XSlippage = (ExitSlippage)*CurrentContracts; #Pt설정
PLR = 0;
count = 0;
for var1 = 1 to 10{
if sdate == EntryDate(var1) Then{
PLR = PLR+PositionProfit(var1);
}
}
if MarketPosition() == 0 Then{
OpenPL = 0;
dayPL = PLR;
}
Else{
OpenPL = (PositionProfit-(XCommission+XSlippage));
dayPL = PLR+OpenPL;
}
#당일진입횟수계산
Count = 0 ;
for Value1 = 0 to 10 {
if EntryDate(Value1) == sdate then
Count = Count + 1;
}
Condition1 = ExitDate(1) == sdate and IsExitName("StopProfittarget",1) == true;
if dayindex == 0 Then{
if data2(c) > 7000 Then
buy("b");
if data2(c) < -7000 Then
sell("s");
}
if Condition1 == false or (Condition1 == true and countif(CrossDown(data2(c),0) or Crossup(data2(c),0),BarsSinceExit(1)) >= 1) Then{
if crossup(data2(c),7000) and count < N and dayPL > -하루손실 Then
buy("bb");
if CrossDown(data2(c),-7000) and Count < N and dayPL > -하루손실 Then
sell("ss");
}
if crossup(data2(c),7000) Then
ExitLong("bx");
if CrossDown(data2(c),-7000) Then
ExitShort("sx");
if MarketPosition == 1 Then{
ExitLong("bx1",AtStop,EntryPrice+(-(하루손실)-(PLR)));
}
if MarketPosition == -1 Then{
ExitShort("sx1",AtStop,EntryPrice+((하루손실)+(PLR)));
}
SetStopLoss(1,PointStop);
SetStopProfittarget(2,PointStop);
va1 = int(date/100)-int(date/10000)*100;
va2 = date - int(date/100)*100;
va3 = DayOfWeek(date);
if va1%3 == 0 and
va2 >= 8 and va2 <= 14 and
va3 == 4 then
SetStopEndofday(144000);#선물만기일
Else
SetStopEndofday(150430);#만기일이 아닐때
2.
당일 주간장에서 var1이 전일시작하여 오늘 새벽에 끝난 야간장의 시가
당일 주간장에서 var2가 전일시작하여 오늘 새벽에 끝난 야간장의 종가입니다.
당일 야간장이 시작하면 var1과 var2는 당일 야간장의 시초가와 종가가 됩니다.
if stime == 180000 or (stime > 180000 and stime[1] < 180000) Then
var1 = O;
if stime >= 180000 or stime < 90000 Then
var2 = c;
즐거운 하루되세요
> 연어초밥 님이 쓴 글입니다.
> 제목 : 궁금한게 있습니다~
> 밑에 코드는 진입횟수 제한이랑 만기일 청산을 다시 짜주신건데,
진입횟수제한이 3회까지는되는데 1회, 2회는 안되는데 왜 그런거죠?
그리고 하루에 2pt 이상 손실이나면 모든 포지션을 청산시키고, 모든 재진입을 금지 시킬수있나요?
그리고 이건 아래 코드와 상관이 없는데, 야간cme 종가, 시가를 불러올수는없나요?
input : N(3);
var : va1(0),va2(0),va3(0);
var : count(0);
#당일진입횟수계산
Count = 0 ;
for Value1 = 0 to 10 {
if EntryDate( Value1 ) == sdate then
Count = Count + 1;
}
Condition1 = ExitDate(1) == sdate and IsExitName("StopProfittarget",1) == true;
if dayindex == 0 Then{
if data2(c) > 7000 Then
buy();
if data2(c) < -7000 Then
sell();
}
if Condition1 == false or (Condition1 == true and countif(CrossDown(data2(c),0) or Crossup(data2(c),0),BarsSinceExit(1)) >= 1) Then{
if crossup(data2(c),7000) and count < N Then
buy();
if CrossDown(data2(c),-7000) and Count < N Then
sell();
}
SetStopLoss(1,PointStop);
SetStopProfittarget(2,PointStop);
va1 = int(date/100)-int(date/10000)*100;
va2 = date - int(date/100)*100;
va3 = DayOfWeek(date);
if va1%3 == 0 and
va2 >= 8 and va2 <= 14 and
va3 == 4 then
SetStopEndofday(144000);#선물만기일
Else
SetStopEndofday(150430);#만기일이 아닐때
다음글
이전글