예스스탁
예스스탁 답변
2024-01-18 15:22:55
안녕하세요
예스스탁입니다.
1
input : 매수매도(1);#매수1, 매도-1
input : 추가진입(20),최대누적진입(10),전체익절(20),최소수익(10),트레일링(5);
var : BE(0),SE(0);
var1 = (추가진입/PointValue)*PriceScale;
Var2 = (전체익절/PointValue)*PriceScale;
Var3 = (최소수익/PointValue)*PriceScale;
Var4 = (트레일링/PointValue)*PriceScale;
if MarketPosition == 0 and TotalTrades == TotalTrades[1] and 첫매수진입조건 Then
Buy("b",OnClose,Def,1);
if MarketPosition == 1 Then
{
if CurrentContracts > CurrentContracts[1] Then
BE = BE+1;
Buy("bb",AtLimit,EntryPrice(0)-(var1*BE),1);
if MaxEntries == 1 and highest(H,BarsSinceEntry) >= EntryPrice+Var3 Then
ExitLong("btr",AtStop,highest(H,BarsSinceEntry)-Var4);
if MaxEntries >= 최대누적진입 Then
{
ExitLong("bx",AtStop,EntryPrice(0)-(var1*BE),"",1,1);
}
ExitLong("Bp",AtLimit,AvgEntryPrice+Var2);
}
Else
BE = 0;
if MarketPosition == 0 and TotalTrades == TotalTrades[1] and 첫매도진입조건 Then
Sell("s",OnClose,Def,1);
if MarketPosition == -1 Then
{
if CurrentContracts > CurrentContracts[1] Then
SE = SE+1;
Sell("ss",AtLimit,EntryPrice(0)+(var1*SE),1);
if MaxEntries == 1 and lowest(L,BarsSinceEntry) <= EntryPrice-Var3 Then
ExitShort("str",AtStop,lowest(L,BarsSinceEntry)+Var4);
if MaxEntries >= 최대누적진입 Then
{
ExitShort("sx",AtStop,EntryPrice(0)+(var1*SE),"",1,1);
}
ExitShort("Sp",AtLimit,AvgEntryPrice-Var2);
}
Else
SE = 0;
2
10$ 정도 상승하면 마지막 진입한 계약만 익절
위 내용은 마지막진입가격에서 10$ 상승하면 1계약 익절청산으로 작성해 드립니다.
마지막 진입을 청산하기 위해서는 진입명을 지정해야 하는데 현재 하나의 함수로 추가진입이 됩니다.
해당 진입명을 지정하면 해당 진입으로 들어간 모든 추가진입이 청산됩니다,
내용상 각 추가진입별로 이름을 부여하기 어려워 1계약 청산으로 작성해 드립니다.
input : 매수매도(1);#매수1, 매도-1
input : 추가진입(20),최대누적진입(10),전체익절(20),최소수익(10),트레일링(5),익절(10);
var : BE(0),SE(0),S(0);
var1 = (추가진입/PointValue)*PriceScale;
Var2 = (전체익절/PointValue)*PriceScale;
Var3 = (최소수익/PointValue)*PriceScale;
Var4 = (트레일링/PointValue)*PriceScale;
Var5 = (익절/PointValue)*PriceScale;
if MarketPosition == 0 and TotalTrades == TotalTrades[1] and 첫매수진입조건 Then
Buy("b",OnClose,Def,1);
if MarketPosition == 1 Then
{
if CurrentContracts > CurrentContracts[1] Then
{
S = 1;
BE = LatestEntryPrice(0);
}
if CurrentContracts < CurrentContracts[1] Then
{
S = -1;
BE = LatestExitPrice(0);
}
Buy("bb",AtLimit,BE-var1,1);
if MaxEntries == 1 and highest(H,BarsSinceEntry) >= EntryPrice+Var3 Then
ExitLong("btr",AtStop,highest(H,BarsSinceEntry)-Var4);
if S == 1 and MaxEntries >= 2 Then
ExitLong("bp1",AtLimit,BE+Var5,"",1,1);
ExitLong("Bp",AtLimit,AvgEntryPrice+Var2);
}
if MarketPosition == 0 and TotalTrades == TotalTrades[1] and 첫매도진입조건 Then
Sell("s",OnClose,Def,1);
if MarketPosition == 1 Then
{
if CurrentContracts > CurrentContracts[1] Then
{
S = 1;
SE = LatestEntryPrice(0);
}
if CurrentContracts < CurrentContracts[1] Then
{
S = -1;
SE = LatestExitPrice(0);
}
Sell("ss",AtLimit,SE+var1,1);
if MaxEntries == 1 and lowest(L,BarsSinceEntry) <= EntryPrice-Var3 Then
ExitShort("str",AtStop,lowest(L,BarsSinceEntry)+Var4);
if S == 1 and MaxEntries >= 2 Then
ExitShort("sp1",AtLimit,BE-var5,"",1,1);
ExitShort("Sp",AtLimit,AvgEntryPrice-Var2);
}
즐거운 하루되세요
> 양치기 님이 쓴 글입니다.
> 제목 : 시스템식 부탁드립니다.
> 항상 도움 주셔서 감사합니다.
종목 : 해외선물
차트 : 1시간봉
아래의 조건에 맞는 시스템식 부탁드립니다.
//-----------------------------------------------------------------------
요청식1)
매수/매도 : 외부입력변수로 설정
매수진입 이후 가격이 처음진입 가격 아래로 떨어지지 않고
상승하면 처음 진입한 1계약만 유지하고
매수진입 계약수량이 1계약이면 포지션 수익이 20$ 이상 이면 청산하고 싶습니다.
단, 어느정도 상승 후 하락시 트레일링 스탑을 적용하고 싶습니다.
(10$ 이상 상승 후 5$ 하락시 청산)
매수진입 이후 가격이 처음진입 가격 아래로 하락하면
일정 간격(20$)으로 1계약씩 추가 매수 합니다.(물타기)
가격이 하락하여 물타기 진입한 경우도 전체 포지션수익이 20$ 이상이면 전체청산하고 싶습니다.
단, 가격이 계속 하락하여 10계약(또는 진입횟수10회이상) 이상
물타기 진입이 필요한 경우 가격이 하락하여 추가로 진입 할때마다
처음 진입한 계약부터 1계약씩 손절(20$) 하고 싶습니다.
(1계약씩 추가 진입하고 1계약씩 손절하기 때문에 계약수는 10계약씩 유지되다가,
가격이 상승하면 전체 포지션 수익이 20$ 이상 수익이 나면 전체를 청산합니다.)
진입간격 20$는 처음 진입가격을 기준으로 작성 부탁드립니다.
//--------------------------------------------------------------------------
요청식2)
매수/매도 : 외부입력변수로 설정
매수진입 이후 가격이 처음진입 가격 아래로 떨어지지 않고
상승하면 처음 진입한 1계약만 유지하고
매수진입 계약수량이 1계약이면 포지션 수익이 20$ 이상이면 전체 청산하고 싶습니다.
단, 어느정도 상승 후 하락시 트레일링 스탑을 적용하고 싶습니다.
(10$ 이상 상승 후 5$ 하락시 청산)
매수진입 이후 가격이 처음진입 가격 아래로 하락하면
일정 간격(20$)으로 1계약씩 추가 매수 합니다.(물타기)
가격이 하락하여 물타기 진입한 경우도 전체 포지션수익이 20$ 이상이면 전체 청산하고 싶습니다.
단, 물타기 진입의 경우 가격이 10$ 정도 상승하면 마지막 진입한 계약만 익절하고 싶습니다.
그리고 다시 가격이 20$ 하락하면 추가로 1계약 물타기 진입합니다.
(가격이 10$ 정도 반등이 나오면 익절하며, 이후 가격이 20$ 하락하면 추가 매수 진입-반복)
위와 같이 청산할 경우 마지막 진입 가격을 체크하기 힘들기 때문에
현재 남아있는 계약들의 평균가격을 기준으로 20$ 하락시 추가 진입하는 방법으로
작성 부탁드립니다.
감사합니다.