커뮤니티

문의드립니다.

프로필 이미지
카르마다
2024-09-27 12:04:02
686
글번호 183791
답변완료
청산식이 잘 안 먹힙니다. 한번 봐주시면 좋겠습니다. false, true 쪽이 잘못인지, 아니면 다른 문제가 있는건지 모르겠습니다. 예를 들어 "B_2"이 한번 나오면 바로 뒤에 "B_2" 청산이 다시 나오면 안되는데 나옵니다. 전체적으로 수식이 잘못된 게 있는지 확인 부탁 드리겠습니다. 제가 궁극적으로 원하는 것은 한번 나온 청산식은 진입신호가 종료되기 전까지 두번 나오지 않는 것을 원합니다. 그게 안된다면 연달아서라도 같은 신호가 나오지 않기를 바랍니다. 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 DParity2 < 99.90 Then Exitlong("B_1",AtStop,NextBarOpen-PriceScale*15,"",1,1); if Condition2 == False and DParity2 < 99.80 Then Exitlong("B_2",AtStop,NextBarOpen-PriceScale*20,"",1,1); if Condition3 == False and DParity2 < 99.70 Then Exitlong("B_3",AtStop,NextBarOpen-PriceScale*25,"",1,1); } Else { Condition1 = False; Condition2 = False; Condition3 = False; } //----------------------------------------------------------------- if MarketPosition == -1 Then { if CurrentContracts < CurrentContracts[1] Then { if LatestExitName(0) == "S_1" Then Condition1 = true; if LatestExitName(0) == "S_2" Then Condition2 = true; if LatestExitName(0) == "S_3" Then Condition3 = true; } if Condition1 == False and DParity2 > 100.10 Then ExitShort("S_1",AtStop,NextBarOpen+PriceScale*15,"",1,1); if Condition2 == False T and DParity2 > 100.20 then ExitShort("S_2",AtStop,NextBarOpen+PriceScale*20,"",1,1); if Condition3 == False and DParity2 > 100.30 Then ExitShort("S_3",AtStop,NextBarOpen+PriceScale*25,"",1,1); } Else { Condition1 = False; Condition2 = False; Condition3 = False; }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2024-09-27 14:03:21

안녕하세요 예스스탁입니다. 진입후 각 청산이 1번만 발생하게 되어 있습니다. 다만 매수청산과 매도청산식이 하나의 수식이면 변수가 달라야 합니다. 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 DParity2 < 99.90 Then Exitlong("B_1",AtStop,NextBarOpen-PriceScale*15,"",1,1); if Condition2 == False and DParity2 < 99.80 Then Exitlong("B_2",AtStop,NextBarOpen-PriceScale*20,"",1,1); if Condition3 == False and DParity2 < 99.70 Then Exitlong("B_3",AtStop,NextBarOpen-PriceScale*25,"",1,1); } Else { Condition1 = False; Condition2 = False; Condition3 = False; } if MarketPosition == -1 Then { if CurrentContracts < CurrentContracts[1] Then { if LatestExitName(0) == "S_1" Then Condition4 = true; if LatestExitName(0) == "S_2" Then Condition5 = true; if LatestExitName(0) == "S_3" Then Condition6 = true; } if Condition4 == False and DParity2 > 100.10 Then ExitShort("S_1",AtStop,NextBarOpen+PriceScale*15,"",1,1); if Condition5 == False and DParity2 > 100.20 then ExitShort("S_2",AtStop,NextBarOpen+PriceScale*20,"",1,1); if Condition6 == False and DParity2 > 100.30 Then ExitShort("S_3",AtStop,NextBarOpen+PriceScale*25,"",1,1); } Else { Condition4 = False; Condition5 = False; Condition6 = False; } 즐거운 하루되세요 > 카르마다 님이 쓴 글입니다. > 제목 : 문의드립니다. > 청산식이 잘 안 먹힙니다. 한번 봐주시면 좋겠습니다. false, true 쪽이 잘못인지, 아니면 다른 문제가 있는건지 모르겠습니다. 예를 들어 "B_2"이 한번 나오면 바로 뒤에 "B_2" 청산이 다시 나오면 안되는데 나옵니다. 전체적으로 수식이 잘못된 게 있는지 확인 부탁 드리겠습니다. 제가 궁극적으로 원하는 것은 한번 나온 청산식은 진입신호가 종료되기 전까지 두번 나오지 않는 것을 원합니다. 그게 안된다면 연달아서라도 같은 신호가 나오지 않기를 바랍니다. 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 DParity2 < 99.90 Then Exitlong("B_1",AtStop,NextBarOpen-PriceScale*15,"",1,1); if Condition2 == False and DParity2 < 99.80 Then Exitlong("B_2",AtStop,NextBarOpen-PriceScale*20,"",1,1); if Condition3 == False and DParity2 < 99.70 Then Exitlong("B_3",AtStop,NextBarOpen-PriceScale*25,"",1,1); } Else { Condition1 = False; Condition2 = False; Condition3 = False; } //----------------------------------------------------------------- if MarketPosition == -1 Then { if CurrentContracts < CurrentContracts[1] Then { if LatestExitName(0) == "S_1" Then Condition1 = true; if LatestExitName(0) == "S_2" Then Condition2 = true; if LatestExitName(0) == "S_3" Then Condition3 = true; } if Condition1 == False and DParity2 > 100.10 Then ExitShort("S_1",AtStop,NextBarOpen+PriceScale*15,"",1,1); if Condition2 == False T and DParity2 > 100.20 then ExitShort("S_2",AtStop,NextBarOpen+PriceScale*20,"",1,1); if Condition3 == False and DParity2 > 100.30 Then ExitShort("S_3",AtStop,NextBarOpen+PriceScale*25,"",1,1); } Else { Condition1 = False; Condition2 = False; Condition3 = False; }