예스스탁
예스스탁 답변
2022-02-03 15:18:35
안녕하세요
예스스탁입니다.
Input : 당일수익틱수(100),당일손실틱수(200),최소수익틱수(50),감소율(50);
var : Year(0),v1(0),v2(0),v3(0),v4(0),summer(False),ET(0);
Var : N1(0),dayPl(0),당일수익(0),당일손실(0),Xcond(false),HH(0),LL(0),mav(0);
당일수익 = PriceScale*당일수익틱수;
당일손실 = PriceScale*당일손실틱수;
if sDate != sDate[1] Then
SetStopEndofday(ET);
if Bdate != Bdate[1] Then
{
SetStopEndofday(0);
Year = Floor(sdate/10000);
V1 = (10000 * Year) + (100 * 3) + 1;
V2 = 15 - dayofweek(v1); // 3월 두번째 일요일 날짜
v3 = (10000 * Year) + (100 * 11) + 1;
v4 = 8 - dayofweek(v3); // 11월 첫번째 일요일 날짜
Summer = bdate > (10000 * Year) + (100 * 3) + v2 And bdate < (10000 * Year) + (100 * 11) + v4;
if summer == true Then
ET = 050000;
Else
ET = 060000;
Xcond = false;
N1 = NetProfit;
}
daypl = NetProfit-N1;
if TotalTrades > TotalTrades[1] then
{
if daypl >= 당일수익 or daypl <= -당일손실 Then
Xcond = true;
if (IsExitName("dbp",1) == true or IsExitName("dbl",1) == true or
IsExitName("dsp",1) == true or IsExitName("dsl",1) == true) then
Xcond = true;
}
mav = ma(C,20);
if Xcond == false then
{
if CrossUp(c,mav) Then
{
buy("b");
}
if CrossDown(c,mav) Then
{
sell("s");
}
}
if MarketPosition == 1 then
{
HH = Highest(H,BarsSinceEntry);
if HH >= EntryPrice+PriceScale*최소수익틱수 Then
{
ExitLong("btr",AtStop,HH-(HH-EntryPrice)*(감소율/100));
}
ExitLong("dbp",atlimit,EntryPrice+((당일수익-daypl)/CurrentContracts));
ExitLong("dbl",AtStop,EntryPrice-((당일손실+daypl)/CurrentContracts));
}
if MarketPosition == -1 then
{
LL = Lowest(L,BarsSinceEntry);
if LL <= EntryPrice-PriceScale*최소수익틱수 Then
{
ExitShort("str",AtStop,LL+(EntryPrice-LL)*(감소율/100));
}
ExitShort("dsp",atlimit,EntryPrice-((당일수익-daypl)/CurrentContracts));
ExitShort("dsl",AtStop,EntryPrice+((당일손실+daypl)/CurrentContracts));
}
즐거운 하루되세요
> 버드나무 님이 쓴 글입니다.
> 제목 : 문의드립니다.
> 안녕하세요...새해 복 많이 받으세요.
해외선물을 거래할 경우 아래 조건을 만족하는 수식 문의드립니다.
*종가가 20일이평선보다 크면 매수 / 작으면 매도하려고 합니다.
*당일 수익이 100틱 또는 당일 손실이 200틱 일 경우 강제종료하려고 합니다.
*트레일링스탑은 최고점 50틱 대비 50% 하락 시 강제청산하려고 합니다.
(CME 운영시간 써머타임 고려 / 개장시간부터 폐장시간까지 거래)
*손익절 및 트레일링스탑은 변수로 변경할 수 있도록 부탁드립니다.
부탁드립니다.
감사합니다.