커뮤니티

문의드립니다.

프로필 이미지
카르마다
2024-12-22 04:47:30
659
글번호 186485
답변완료
var : 손청1(30),손청2(45),손청3(60); if MarketPosition == 1 Then { if CurrentContracts < CurrentContracts[1] Then { if LatestExitName(0) == "B_손청1" Then Condition1 = true; if LatestExitName(0) == "B_손청2" Then Condition2 = true; if LatestExitName(0) == "B_손청3" Then Condition3 = true; } if Condition1 == False and MarketPosition == 1 Then ExitLong("B_손청1",AtStop,EntryPrice-PriceScale*손청1,"",1,1); if Condition2 == False and MarketPosition == 1 Then ExitLong("B_손청2",AtStop,EntryPrice-PriceScale*손청2,"",1,1); if Condition3 == False and MarketPosition == 1 Then ExitLong("B_손청3",AtStop,EntryPrice-PriceScale*손청3,"",1,1); } Else { Condition1 = False; Condition2 = False; Condition3 = False; } if MarketPosition == -1 Then { if CurrentContracts < CurrentContracts[1] Then { if LatestExitName(0) == "S_손청1" Then Condition11 = true; if LatestExitName(0) == "S_손청2" Then Condition22 = true; if LatestExitName(0) == "S_손청3" Then Condition33 = true; } if Condition11 == False and MarketPosition == -1 Then ExitShort("S_손청1",AtStop,EntryPrice+PriceScale*손청1,"",1,1); if Condition22 == False and MarketPosition == -1 Then ExitShort("S_손청2",AtStop,EntryPrice+PriceScale*손청2,"",1,1); if Condition33 == False and MarketPosition == -1 Then ExitShort("S_손청3",AtStop,EntryPrice+PriceScale*손청3,"",1,1); } Else { Condition11 = False; Condition22 = False; Condition33 = False; } 수고많으십니다. 이전부터 계속 문의드렸던 내용인데 해보니 잘 적용이 안되서 다시 문의드립니다. 예를들어 "B_손청2"이 1번 나오고 나서도 45틱 이라는 조건을 다시 충족시키면 "B_손청2"이 다시 나옵니다. 1개의 매매신호 발생 후 어떠한 경우도 1번 작동한 청산식은 두번 다시 조건이 만족해도 나오지 않게 하는 수식을 알고 싶습니다. 그리고 다계약에서 특정 조건 이를테면 20선과 60선이 골든/데드되면 전량 청산하는 식도 부탁드립니다. 그럼 미리 노고에 감사드립니다~
시스템
답변 2
프로필 이미지

예스스탁 예스스탁 답변

2024-12-23 14:34:40

안녕하세요 예스스탁입니다. 현재 수식에 각 청산이 각 포지션 진입이후에 1회씩만 동작하게 되어 있습니다. 아마 동일이름의 청산이 2번 발생한다면 한봉에 동시에 2개이상 청산이 발생한 경우일 것 같습니다. LatestExitName(0)이 마지막것만 리턴해서 한봉에 2개 이상 청산이 발생하면 마지막것만 condition값이 true가 되게 됩니다. 가격으로 진입이후 제어하는 내용도 추가해 드립니다. var : 손청1(30),손청2(45),손청3(60); if MarketPosition == 1 Then { if CurrentContracts < CurrentContracts[1] Then { if LatestExitName(0) == "B_손청1" Then Condition1 = true; if LatestExitName(0) == "B_손청2" Then Condition2 = true; if LatestExitName(0) == "B_손청3" Then Condition3 = true; } if Condition1 == False and lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*손청1 Then ExitLong("B_손청1",AtStop,EntryPrice-PriceScale*손청1,"",1,1); if Condition2 == False and lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*손청2 Then ExitLong("B_손청2",AtStop,EntryPrice-PriceScale*손청2,"",1,1); if Condition3 == False and lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*손청3 Then ExitLong("B_손청3",AtStop,EntryPrice-PriceScale*손청3,"",1,1); if CrossDown(ma(c,20),ma(c,60)) Then ExitLong(); } Else { Condition1 = False; Condition2 = False; Condition3 = False; } if MarketPosition == -1 Then { if CurrentContracts < CurrentContracts[1] Then { if LatestExitName(0) == "S_손청1" Then Condition11 = true; if LatestExitName(0) == "S_손청2" Then Condition22 = true; if LatestExitName(0) == "S_손청3" Then Condition33 = true; } if Condition11 == False and highest(h,BarsSinceEntry) < EntryPrice+PriceScale*손청1 Then ExitShort("S_손청1",AtStop,EntryPrice+PriceScale*손청1,"",1,1); if Condition22 == False and highest(h,BarsSinceEntry) < EntryPrice+PriceScale*손청2 Then ExitShort("S_손청2",AtStop,EntryPrice+PriceScale*손청2,"",1,1); if Condition33 == False and highest(h,BarsSinceEntry) < EntryPrice+PriceScale*손청3 Then ExitShort("S_손청3",AtStop,EntryPrice+PriceScale*손청3,"",1,1); if CrossUp(ma(c,20),ma(c,60)) Then ExitShort(); } Else { Condition11 = False; Condition22 = False; Condition33 = False; } 즐거운 하루되세요 > 카르마다 님이 쓴 글입니다. > 제목 : 문의드립니다. > var : 손청1(30),손청2(45),손청3(60); if MarketPosition == 1 Then { if CurrentContracts < CurrentContracts[1] Then { if LatestExitName(0) == "B_손청1" Then Condition1 = true; if LatestExitName(0) == "B_손청2" Then Condition2 = true; if LatestExitName(0) == "B_손청3" Then Condition3 = true; } if Condition1 == False and MarketPosition == 1 Then ExitLong("B_손청1",AtStop,EntryPrice-PriceScale*손청1,"",1,1); if Condition2 == False and MarketPosition == 1 Then ExitLong("B_손청2",AtStop,EntryPrice-PriceScale*손청2,"",1,1); if Condition3 == False and MarketPosition == 1 Then ExitLong("B_손청3",AtStop,EntryPrice-PriceScale*손청3,"",1,1); } Else { Condition1 = False; Condition2 = False; Condition3 = False; } if MarketPosition == -1 Then { if CurrentContracts < CurrentContracts[1] Then { if LatestExitName(0) == "S_손청1" Then Condition11 = true; if LatestExitName(0) == "S_손청2" Then Condition22 = true; if LatestExitName(0) == "S_손청3" Then Condition33 = true; } if Condition11 == False and MarketPosition == -1 Then ExitShort("S_손청1",AtStop,EntryPrice+PriceScale*손청1,"",1,1); if Condition22 == False and MarketPosition == -1 Then ExitShort("S_손청2",AtStop,EntryPrice+PriceScale*손청2,"",1,1); if Condition33 == False and MarketPosition == -1 Then ExitShort("S_손청3",AtStop,EntryPrice+PriceScale*손청3,"",1,1); } Else { Condition11 = False; Condition22 = False; Condition33 = False; } 수고많으십니다. 이전부터 계속 문의드렸던 내용인데 해보니 잘 적용이 안되서 다시 문의드립니다. 예를들어 "B_손청2"이 1번 나오고 나서도 45틱 이라는 조건을 다시 충족시키면 "B_손청2"이 다시 나옵니다. 1개의 매매신호 발생 후 어떠한 경우도 1번 작동한 청산식은 두번 다시 조건이 만족해도 나오지 않게 하는 수식을 알고 싶습니다. 그리고 다계약에서 특정 조건 이를테면 20선과 60선이 골든/데드되면 전량 청산하는 식도 부탁드립니다. 그럼 미리 노고에 감사드립니다~
프로필 이미지

예스스탁 예스스탁 답변

2025-02-05 17:05:53

안녕하세요 예스스탁입니다. 가격으로 제어하는 내용으로 변경해 드립니다. 제어가 안되시면 다시 전화주시기 바랍니다. var : 손청1(30),손청2(45),손청3(60); if MarketPosition == 1 Then { if Lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*손청1 Then ExitLong("B_손청1",AtStop,EntryPrice-PriceScale*손청1,"",1,1); if Lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*손청2 Then ExitLong("B_손청2",AtStop,EntryPrice-PriceScale*손청2,"",1,1); if Lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*손청3 Then ExitLong("B_손청3",AtStop,EntryPrice-PriceScale*손청3,"",1,1); } if MarketPosition == -1 Then { if highest(H,BarsSinceEntry) < EntryPrice+PriceScale*손청1 Then ExitShort("S_손청1",AtStop,EntryPrice+PriceScale*손청1,"",1,1); if highest(H,BarsSinceEntry) < EntryPrice+PriceScale*손청1 Then ExitShort("S_손청2",AtStop,EntryPrice+PriceScale*손청2,"",1,1); if highest(H,BarsSinceEntry) < EntryPrice+PriceScale*손청1 Then ExitShort("S_손청3",AtStop,EntryPrice+PriceScale*손청3,"",1,1); } 즐거운 하루되세요 > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 문의드립니다. > 안녕하세요 예스스탁입니다. 현재 수식에 각 청산이 각 포지션 진입이후에 1회씩만 동작하게 되어 있습니다. 아마 동일이름의 청산이 2번 발생한다면 한봉에 동시에 2개이상 청산이 발생한 경우일 것 같습니다. LatestExitName(0)이 마지막것만 리턴해서 한봉에 2개 이상 청산이 발생하면 마지막것만 condition값이 true가 되게 됩니다. 가격으로 진입이후 제어하는 내용도 추가해 드립니다. var : 손청1(30),손청2(45),손청3(60); if MarketPosition == 1 Then { if CurrentContracts < CurrentContracts[1] Then { if LatestExitName(0) == "B_손청1" Then Condition1 = true; if LatestExitName(0) == "B_손청2" Then Condition2 = true; if LatestExitName(0) == "B_손청3" Then Condition3 = true; } if Condition1 == False and lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*손청1 Then ExitLong("B_손청1",AtStop,EntryPrice-PriceScale*손청1,"",1,1); if Condition2 == False and lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*손청2 Then ExitLong("B_손청2",AtStop,EntryPrice-PriceScale*손청2,"",1,1); if Condition3 == False and lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*손청3 Then ExitLong("B_손청3",AtStop,EntryPrice-PriceScale*손청3,"",1,1); if CrossDown(ma(c,20),ma(c,60)) Then ExitLong(); } Else { Condition1 = False; Condition2 = False; Condition3 = False; } if MarketPosition == -1 Then { if CurrentContracts < CurrentContracts[1] Then { if LatestExitName(0) == "S_손청1" Then Condition11 = true; if LatestExitName(0) == "S_손청2" Then Condition22 = true; if LatestExitName(0) == "S_손청3" Then Condition33 = true; } if Condition11 == False and highest(h,BarsSinceEntry) < EntryPrice+PriceScale*손청1 Then ExitShort("S_손청1",AtStop,EntryPrice+PriceScale*손청1,"",1,1); if Condition22 == False and highest(h,BarsSinceEntry) < EntryPrice+PriceScale*손청2 Then ExitShort("S_손청2",AtStop,EntryPrice+PriceScale*손청2,"",1,1); if Condition33 == False and highest(h,BarsSinceEntry) < EntryPrice+PriceScale*손청3 Then ExitShort("S_손청3",AtStop,EntryPrice+PriceScale*손청3,"",1,1); if CrossUp(ma(c,20),ma(c,60)) Then ExitShort(); } Else { Condition11 = False; Condition22 = False; Condition33 = False; } 즐거운 하루되세요 > 카르마다 님이 쓴 글입니다. > 제목 : 문의드립니다. > var : 손청1(30),손청2(45),손청3(60); if MarketPosition == 1 Then { if CurrentContracts < CurrentContracts[1] Then { if LatestExitName(0) == "B_손청1" Then Condition1 = true; if LatestExitName(0) == "B_손청2" Then Condition2 = true; if LatestExitName(0) == "B_손청3" Then Condition3 = true; } if Condition1 == False and MarketPosition == 1 Then ExitLong("B_손청1",AtStop,EntryPrice-PriceScale*손청1,"",1,1); if Condition2 == False and MarketPosition == 1 Then ExitLong("B_손청2",AtStop,EntryPrice-PriceScale*손청2,"",1,1); if Condition3 == False and MarketPosition == 1 Then ExitLong("B_손청3",AtStop,EntryPrice-PriceScale*손청3,"",1,1); } Else { Condition1 = False; Condition2 = False; Condition3 = False; } if MarketPosition == -1 Then { if CurrentContracts < CurrentContracts[1] Then { if LatestExitName(0) == "S_손청1" Then Condition11 = true; if LatestExitName(0) == "S_손청2" Then Condition22 = true; if LatestExitName(0) == "S_손청3" Then Condition33 = true; } if Condition11 == False and MarketPosition == -1 Then ExitShort("S_손청1",AtStop,EntryPrice+PriceScale*손청1,"",1,1); if Condition22 == False and MarketPosition == -1 Then ExitShort("S_손청2",AtStop,EntryPrice+PriceScale*손청2,"",1,1); if Condition33 == False and MarketPosition == -1 Then ExitShort("S_손청3",AtStop,EntryPrice+PriceScale*손청3,"",1,1); } Else { Condition11 = False; Condition22 = False; Condition33 = False; } 수고많으십니다. 이전부터 계속 문의드렸던 내용인데 해보니 잘 적용이 안되서 다시 문의드립니다. 예를들어 "B_손청2"이 1번 나오고 나서도 45틱 이라는 조건을 다시 충족시키면 "B_손청2"이 다시 나옵니다. 1개의 매매신호 발생 후 어떠한 경우도 1번 작동한 청산식은 두번 다시 조건이 만족해도 나오지 않게 하는 수식을 알고 싶습니다. 그리고 다계약에서 특정 조건 이를테면 20선과 60선이 골든/데드되면 전량 청산하는 식도 부탁드립니다. 그럼 미리 노고에 감사드립니다~