커뮤니티
재 문의 드립니다..
2011-04-09 14:02:07
640
글번호 37426
지난번 문의드린 수식에서 몇가지 보완했으면 해서 다시 질문드립니다..
지난번에 작성해주신 수식에서 먼저 수식을 적용하면 시작시간에
조건에 맞지않는 sloss 가 한번 실행되고 난후
정상 작동을 하는 모습을 볼수 있습니다..
수정해 주시면 감사하겠구요..
그리고 지난번 수식요청할때 빠뜨리고 넣지않은 조건인데 추가해
주시면 감사하겠습니다..
우리나라 시간으로 새벽 03:30분(미국시간 13:30)이후에는 6단계까지의 진입은
허용하고 진입된것이 청산된 후의 신규진입은 하지 않고 매매를 끝낼수 있게 해주시고,
만약 청산이 되지 않고새벽 5시까지 포지션이 있다면 5시에 일괄청산 한다
라는 수식을 추가해 주시면 감사하겠습니다..
다시 시간조건을 정리 하자면...
10시(미국시간 20시)정각에 매매를 시작하고 03:30분(미국시간 13:30분)이후 포지션이 없다면
신규진입은 하지 말것이며 만약 포지션이 있다면 조건에 만족하는 단계까지가서 청산하고
청산한 이후에는 신규진입은 하지 않는다. 만일 5시까지 청산되지 않은 보유 포지션이 있다면 5시에 일괄 청산한다.
늘 고객들을 위해 애쓰시는 노고에 감사드립니다..
행복한 하루 되세요..^^
input : Starttime(200000),endtime(140000);
var : entryset(0);
# 10시 기준으로 1값씩 상승
if (stime == Starttime) or crossup(stime,Starttime) Then{
var1 = var1+1;
var2 = O;
}
#직전청산시 var1값과 현재 var1값이 다르면 당일 첫진입
if var1 != var1[BarsSinceExit(1)] Then{
entryset = var2;
}
if var1 == var1[BarsSinceExit(1)] Then{
entryset = ExitPrice(1);
}
var3 = PriceScale*10;
if stime >= Starttime or stime < endtime Then{
if MarketPosition == 0 Then
Sell("s1",atlimit,entryset+var3*5,1);
if MarketPosition == -1 Then{
Sell("s2",atlimit,entryset+var3*10,1);
Sell("s3",atlimit,entryset+var3*15,2);
Sell("s4",atlimit,entryset+var3*20,3);
Sell("s5",atlimit,entryset+var3*25,5);
Sell("s6",atlimit,entryset+var3*30,8);
if CurrentEntries == 1 Then
ExitShort("sx1",AtLimit,(entryset+var3*5)-var3*10);
if CurrentEntries == 2 Then
ExitShort("sx2",AtLimit,(entryset+var3*10)-var3*10);
if CurrentEntries == 3 Then
ExitShort("sx3",AtLimit,(entryset+var3*15)-var3*10);
if CurrentEntries == 4 Then
ExitShort("sx4",AtLimit,(entryset+var3*20)-var3*10);
if CurrentEntries == 5 Then
ExitShort("sx5",AtLimit,(entryset+var3*25)-var3*10);
if CurrentEntries == 6 Then{
ExitShort("sx6",AtLimit,(entryset+var3*30)-var3*10);
ExitShort("SLoss",AtStop,(entryset+var3*30)+var3*10);
}
}
}
if stime >= Starttime or stime < endtime Then{
if MarketPosition == 0 Then
Buy("b1",atlimit,entryset-var3*5,1);
if MarketPosition == 1 Then{
Buy("b2",atlimit,entryset-var3*10,1);
Buy("b3",atlimit,entryset-var3*15,2);
Buy("b4",atlimit,entryset-var3*20,3);
Buy("b5",atlimit,entryset-var3*25,5);
Buy("b6",atlimit,entryset-var3*30,8);
if CurrentEntries == 1 Then
ExitLong("bx1",AtLimit,(entryset-var3*5)+var3*10);
if CurrentEntries == 2 Then
ExitLong("bx2",AtLimit,(entryset-var3*10)+var3*10);
if CurrentEntries == 3 Then
ExitLong("bx3",AtLimit,(entryset-var3*15)+var3*10);
if CurrentEntries == 4 Then
ExitLong("bx4",AtLimit,(entryset-var3*20)+var3*10);
if CurrentEntries == 5 Then
ExitLong("bx5",AtLimit,(entryset-var3*25)+var3*10);
if CurrentEntries == 6 Then{
ExitLong("bx6",AtLimit,(entryset-var3*30)+var3*10);
ExitLong("bLoss",AtStop,(entryset-var3*30)-var3*10);
}
}
}
답변 1
예스스탁 예스스탁 답변
2011-04-11 10:21:01
안녕하세요
예스스탁입니다.
수정한 식입니다.
input : Starttime(200000),endtime(140000);
var : entryset(0);
# 10시 기준으로 1값씩 상승
if (stime == Starttime) or crossup(stime,Starttime) Then{
var1 = var1+1;
var2 = O;
}
#직전청산시 var1값과 현재 var1값이 다르면 당일 첫진입
if var1 != var1[BarsSinceExit(1)] Then{
entryset = var2;
}
if var1 == var1[BarsSinceExit(1)] Then{
entryset = ExitPrice(1);
}
var3 = PriceScale*10;
if stime >= Starttime or stime < endtime Then{
if MarketPosition == 0 and stime < 133000 Then
Sell("s1",atlimit,entryset+var3*5,1);
if MarketPosition == -1 Then{
Sell("s2",atlimit,entryset+var3*10,1);
Sell("s3",atlimit,entryset+var3*15,2);
Sell("s4",atlimit,entryset+var3*20,3);
Sell("s5",atlimit,entryset+var3*25,5);
Sell("s6",atlimit,entryset+var3*30,8);
if CurrentEntries == 1 Then
ExitShort("sx1",AtLimit,(entryset+var3*5)-var3*10);
if CurrentEntries == 2 Then
ExitShort("sx2",AtLimit,(entryset+var3*10)-var3*10);
if CurrentEntries == 3 Then
ExitShort("sx3",AtLimit,(entryset+var3*15)-var3*10);
if CurrentEntries == 4 Then
ExitShort("sx4",AtLimit,(entryset+var3*20)-var3*10);
if CurrentEntries == 5 Then
ExitShort("sx5",AtLimit,(entryset+var3*25)-var3*10);
if CurrentEntries == 6 Then{
ExitShort("sx6",AtLimit,(entryset+var3*30)-var3*10);
ExitShort("SLoss",AtStop,(entryset+var3*30)+var3*10);
}
}
}
if stime >= Starttime or stime < endtime Then{
if MarketPosition == 0 Then
Buy("b1",atlimit,entryset-var3*5,1);
if MarketPosition == 1 Then{
Buy("b2",atlimit,entryset-var3*10,1);
Buy("b3",atlimit,entryset-var3*15,2);
Buy("b4",atlimit,entryset-var3*20,3);
Buy("b5",atlimit,entryset-var3*25,5);
Buy("b6",atlimit,entryset-var3*30,8);
if CurrentEntries == 1 Then
ExitLong("bx1",AtLimit,(entryset-var3*5)+var3*10);
if CurrentEntries == 2 Then
ExitLong("bx2",AtLimit,(entryset-var3*10)+var3*10);
if CurrentEntries == 3 Then
ExitLong("bx3",AtLimit,(entryset-var3*15)+var3*10);
if CurrentEntries == 4 Then
ExitLong("bx4",AtLimit,(entryset-var3*20)+var3*10);
if CurrentEntries == 5 Then
ExitLong("bx5",AtLimit,(entryset-var3*25)+var3*10);
if CurrentEntries == 6 Then{
ExitLong("bx6",AtLimit,(entryset-var3*30)+var3*10);
ExitLong("bLoss",AtStop,(entryset-var3*30)-var3*10);
}
}
}
if stime == 150000 then{
exitlong();
exitshort();
}
즐거운 하루되세요
> 락뽀드 님이 쓴 글입니다.
> 제목 : 재 문의 드립니다..
> 지난번 문의드린 수식에서 몇가지 보완했으면 해서 다시 질문드립니다..
지난번에 작성해주신 수식에서 먼저 수식을 적용하면 시작시간에
조건에 맞지않는 sloss 가 한번 실행되고 난후
정상 작동을 하는 모습을 볼수 있습니다..
수정해 주시면 감사하겠구요..
그리고 지난번 수식요청할때 빠뜨리고 넣지않은 조건인데 추가해
주시면 감사하겠습니다..
우리나라 시간으로 새벽 03:30분(미국시간 13:30)이후에는 6단계까지의 진입은
허용하고 진입된것이 청산된 후의 신규진입은 하지 않고 매매를 끝낼수 있게 해주시고,
만약 청산이 되지 않고새벽 5시까지 포지션이 있다면 5시에 일괄청산 한다
라는 수식을 추가해 주시면 감사하겠습니다..
다시 시간조건을 정리 하자면...
10시(미국시간 20시)정각에 매매를 시작하고 03:30분(미국시간 13:30분)이후 포지션이 없다면
신규진입은 하지 말것이며 만약 포지션이 있다면 조건에 만족하는 단계까지가서 청산하고
청산한 이후에는 신규진입은 하지 않는다. 만일 5시까지 청산되지 않은 보유 포지션이 있다면 5시에 일괄 청산한다.
늘 고객들을 위해 애쓰시는 노고에 감사드립니다..
행복한 하루 되세요..^^
input : Starttime(200000),endtime(140000);
var : entryset(0);
# 10시 기준으로 1값씩 상승
if (stime == Starttime) or crossup(stime,Starttime) Then{
var1 = var1+1;
var2 = O;
}
#직전청산시 var1값과 현재 var1값이 다르면 당일 첫진입
if var1 != var1[BarsSinceExit(1)] Then{
entryset = var2;
}
if var1 == var1[BarsSinceExit(1)] Then{
entryset = ExitPrice(1);
}
var3 = PriceScale*10;
if stime >= Starttime or stime < endtime Then{
if MarketPosition == 0 Then
Sell("s1",atlimit,entryset+var3*5,1);
if MarketPosition == -1 Then{
Sell("s2",atlimit,entryset+var3*10,1);
Sell("s3",atlimit,entryset+var3*15,2);
Sell("s4",atlimit,entryset+var3*20,3);
Sell("s5",atlimit,entryset+var3*25,5);
Sell("s6",atlimit,entryset+var3*30,8);
if CurrentEntries == 1 Then
ExitShort("sx1",AtLimit,(entryset+var3*5)-var3*10);
if CurrentEntries == 2 Then
ExitShort("sx2",AtLimit,(entryset+var3*10)-var3*10);
if CurrentEntries == 3 Then
ExitShort("sx3",AtLimit,(entryset+var3*15)-var3*10);
if CurrentEntries == 4 Then
ExitShort("sx4",AtLimit,(entryset+var3*20)-var3*10);
if CurrentEntries == 5 Then
ExitShort("sx5",AtLimit,(entryset+var3*25)-var3*10);
if CurrentEntries == 6 Then{
ExitShort("sx6",AtLimit,(entryset+var3*30)-var3*10);
ExitShort("SLoss",AtStop,(entryset+var3*30)+var3*10);
}
}
}
if stime >= Starttime or stime < endtime Then{
if MarketPosition == 0 Then
Buy("b1",atlimit,entryset-var3*5,1);
if MarketPosition == 1 Then{
Buy("b2",atlimit,entryset-var3*10,1);
Buy("b3",atlimit,entryset-var3*15,2);
Buy("b4",atlimit,entryset-var3*20,3);
Buy("b5",atlimit,entryset-var3*25,5);
Buy("b6",atlimit,entryset-var3*30,8);
if CurrentEntries == 1 Then
ExitLong("bx1",AtLimit,(entryset-var3*5)+var3*10);
if CurrentEntries == 2 Then
ExitLong("bx2",AtLimit,(entryset-var3*10)+var3*10);
if CurrentEntries == 3 Then
ExitLong("bx3",AtLimit,(entryset-var3*15)+var3*10);
if CurrentEntries == 4 Then
ExitLong("bx4",AtLimit,(entryset-var3*20)+var3*10);
if CurrentEntries == 5 Then
ExitLong("bx5",AtLimit,(entryset-var3*25)+var3*10);
if CurrentEntries == 6 Then{
ExitLong("bx6",AtLimit,(entryset-var3*30)+var3*10);
ExitLong("bLoss",AtStop,(entryset-var3*30)-var3*10);
}
}
}
이전글