안녕하세요.
아래 답변(피라미딩별 손절 각각 적용)을 잘 활용하고 있었는데요.
다른 2개의 진입이 동일한 분봉에서 발생하는 경우에는 아래 손절이 작동하지 않는것 같습니다. lastestentry가 불분명해져서 그런것 같습니다만,
혹시 동일한 분봉에서 진입해도 적용할 방법이 있을까요?
---------------------------------------
안녕하세요
예스스탁입니다.
강제청산은 한번 셋팅이 되면 해당 설정 하나로 유지됩니다.
진입명 별로 설정을 달리 하신다면 강제청산함수로 가능하지 않습니다.
일반청산 함수로 아래와 같이 풀어서 작성하셔야 합니다.
var : SP1(0),SP2(0);
if MarketPosition == 1 Then
{
if CurrentContracts > CurrentContracts[1] Then
{
if LatestEntryName(0) == "매도1" Then
SP1 = LatestEntryPrice(0);
if LatestEntryName(0) == "매도2" Then
SP2 = LatestEntryPrice(0);
}
if SP1 > 0 Then
ExitShort("slx1",AtStop,SP1*(1+cut1/100),"매도1");
if SP2 > 0 Then
{
ExitShort("slx2",AtStop,SP2*(1+cut2/100),"매도2");
ExitShort("spx2",AtLimit,SP2*(1-gain/100),"매도2");
}
}
Else
{
SP1 = 0;
SP2 = 0;
}
즐거운 하루되세요
> 건곤대 님이 쓴 글입니다.
> 제목 : 피라미딩 손절 개별로
> 진입별 손절을 다르게 하고싶습니다.
피라미빙 허용해서 매도1, 매도2 를 진입하도록 하였고
각각 다른 손절이 적용하려고 아래와 같이 작성했는데,
당일에 매도1이 먼저 진입하면, CUT1만 작동하고, 매도2가 먼저 진입하면 CUT2만 작동하는것 같습니다. 어떻게 수정하면 될까요?
-----------------------
IF
{...}
else if Marketposition() == -1 then{
if IsEntryName("매도1") == true Then
SetStopLoss(cut1,PercentStop);
Else if IsEntryName("매도2") == true Then
{
SetStopLoss(cut2,PercentStop);
SetStopProfittarget(gain,PercentStop);
}
Else
SetStopLoss(0);
}
else{
SetStopProfittarget(0); /*0을 쓰면 작동안한다는 뜻임*/
setstoploss(0);
}
답변 1
예스스탁
예스스탁 답변
2023-02-28 16:45:59
안녕하세요
예스스탁입니다.
1
각 함수의 값은 봉완성시 최종값만 제공이 됩니다.
LatestEntryName(0)이 최종 발생한 값만 제공이 되므로
한봉에 여러번 발생하면 최종 마지막 진입을 제외하고 나머지 여러진입들의 이름과 가격을 리턴받을 방법은 없습니다.
2
다만 현재 작성하신 수식이
진입이 최대2회이므로 아래와 같이 작성할 수 있습니다.
LatestEntryName(0), LatestEntryPrice(0)가 가장 최근 진입의 가격만 리턴이 됩니다.
함수중에 entryname(0),entryprice(0는 첫번째 진입의 값이 리턴됩니다.
var : SP1(0),SP2(0);
if MarketPosition == -1 Then
{
if CurrentEntries == 1 Then
{
if LatestEntryName(0) == "매도1" Then
SP1 = LatestEntryPrice(0);
if LatestEntryName(0) == "매도2" Then
SP2 = LatestEntryPrice(0);
}
if CurrentEntries == 2 Then
{
if LatestEntryName(0) == "매도1" Then
{
SP1 = LatestEntryPrice(0);
SP2 = EntryPrice;
}
if LatestEntryName(0) == "매도2" Then
{
SP1 = EntryPrice;
SP2 = LatestEntryPrice(0);
}
}
if SP1 > 0 Then
ExitShort("slx1",AtStop,SP1*(1+cut1/100),"매도1");
if SP2 > 0 Then
{
ExitShort("slx2",AtStop,SP2*(1+cut2/100),"매도2");
ExitShort("spx2",AtLimit,SP2*(1-gain/100),"매도2");
}
}
Else
{
SP1 = 0;
SP2 = 0;
}
즐거운 하루되세요
> 건곤대 님이 쓴 글입니다.
> 제목 : 피라미딩별 손절_오류
> 안녕하세요.
아래 답변(피라미딩별 손절 각각 적용)을 잘 활용하고 있었는데요.
다른 2개의 진입이 동일한 분봉에서 발생하는 경우에는 아래 손절이 작동하지 않는것 같습니다. lastestentry가 불분명해져서 그런것 같습니다만,
혹시 동일한 분봉에서 진입해도 적용할 방법이 있을까요?
---------------------------------------
안녕하세요
예스스탁입니다.
강제청산은 한번 셋팅이 되면 해당 설정 하나로 유지됩니다.
진입명 별로 설정을 달리 하신다면 강제청산함수로 가능하지 않습니다.
일반청산 함수로 아래와 같이 풀어서 작성하셔야 합니다.
var : SP1(0),SP2(0);
if MarketPosition == 1 Then
{
if CurrentContracts > CurrentContracts[1] Then
{
if LatestEntryName(0) == "매도1" Then
SP1 = LatestEntryPrice(0);
if LatestEntryName(0) == "매도2" Then
SP2 = LatestEntryPrice(0);
}
if SP1 > 0 Then
ExitShort("slx1",AtStop,SP1*(1+cut1/100),"매도1");
if SP2 > 0 Then
{
ExitShort("slx2",AtStop,SP2*(1+cut2/100),"매도2");
ExitShort("spx2",AtLimit,SP2*(1-gain/100),"매도2");
}
}
Else
{
SP1 = 0;
SP2 = 0;
}
즐거운 하루되세요
> 건곤대 님이 쓴 글입니다.
> 제목 : 피라미딩 손절 개별로
> 진입별 손절을 다르게 하고싶습니다.
피라미빙 허용해서 매도1, 매도2 를 진입하도록 하였고
각각 다른 손절이 적용하려고 아래와 같이 작성했는데,
당일에 매도1이 먼저 진입하면, CUT1만 작동하고, 매도2가 먼저 진입하면 CUT2만 작동하는것 같습니다. 어떻게 수정하면 될까요?
-----------------------
IF
{...}
else if Marketposition() == -1 then{
if IsEntryName("매도1") == true Then
SetStopLoss(cut1,PercentStop);
Else if IsEntryName("매도2") == true Then
{
SetStopLoss(cut2,PercentStop);
SetStopProfittarget(gain,PercentStop);
}
Else
SetStopLoss(0);
}
else{
SetStopProfittarget(0); /*0을 쓰면 작동안한다는 뜻임*/
setstoploss(0);
}