커뮤니티

피라미딩별 손절_오류

프로필 이미지
건곤대
2023-02-28 10:17:45
1124
글번호 166771
답변완료
안녕하세요. 아래 답변(피라미딩별 손절 각각 적용)을 잘 활용하고 있었는데요. 다른 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); }