커뮤니티

수식 문의

프로필 이미지
에구머니
2021-04-22 01:57:30
1372
글번호 148257
답변완료

첨부 이미지

안녕하세요? 72044 재문의 입니다. 그곳의 답글에서요... 1. 중립 = 상방 == False and 하방 == false; 이게 무슨 뜻인지 모르겠습니다. 특히 중립 = 상방 == False 이 부분이 헷갈리고, 굳이 중립 = 상방 == False and 하방 == false; 이 부분을 왜 써야 하는지도 헷갈립니다. 그러니까 이미 선언 부분에서 False로 다 선언되었는데, 여기다가 또 쓰는 이유를 잘 모르겠습니다. 또 이 부분을 아래와 같이 써도 되는지가 궁금합니다. var1 = ma(C,p1); var2 = ma(C,p2); var3 = ma(C,p3); 상방 = (var1 > Var2 and Var2 > Var3); 하방 = (var1 < Var2 and Var2 < Var3); 중립 = 상방 == False and 하방 == false; 이 부분을 if (var1 > Var2 and Var2 > Var3) then {상방 = true; 중립 = false; 하방 = false;} else if (var1 < Var2 and Var2 < Var3) then {상방 = false; 중립 = false; 하방 = true;} else {상방 = false; 중립 = true; 하방 = false;} 이런 식으로 써도 되나요? 2. 더 큰 문제는 그림에서 k익절과 k손절을 150으로, 즉, 150*Atr(96)으로 터무니 없이 크게 설정해도, 너무 짧게 익절되고, 특히 손절은 너무 빨리 되고 있습니다. 혹시라도 진입 후에 상방에서 중립, 중립에서 하방 등으로 트렌드가 바뀐다 해도, 일단 진입한 애들은 원래의 익절이나 손절 목표값에 도달된 후에나 익절이나 손절이 되어야 합니다. 즉, 트렌드가 바뀐다고 바로 청산이 되어서는 안됩니다. 그러니까, 일단 진입한 녀석들은 중간에 트렌드가 바뀌어도 원래 설정한 익절 목표값이나 손절가를 터치해야 청산이 되고, 그 이후에 새로 진입할 때부터 바뀐 트렌드를 고려해서 진입하기를 원합니다. 이런 식으로 수정 부탁 드리겠습니다. 감사합니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2021-04-22 09:26:25

안녕하세요 예스스탁입니다. 1 상방 = (10이평 > 30이평 > 100이평); 하방 = (10이평 < 30이평 < 100이평); 중립 = 상방도 하방도 아닌 경우; 올리신 글에 위와 같이 내용이 있어 중립을 상방도 아니고 하방도 아닐떄로 작성해 드린 부분입니다. var1 = ma(C,10); var2 = ma(C,30); var3 = ma(C,100); 상방 = (var1 > Var2 and Var2 > Var3); 하방 = (var1 < Var2 and Var2 < Var3); 중립 = 상방 == False and 하방 == false; 위 내용과 올리신 아래 내용은 같은 내용입니다. 원하시는 내용으로 사용하시면 됩니다. if (var1 > Var2 and Var2 > Var3) then {상방 = true; 중립 = false; 하방 = false;} else if (var1 < Var2 and Var2 < Var3) then {상방 = false; 중립 = false; 하방 = true;} else {상방 = false; 중립 = true; 하방 = false;} 2 손절에 신호타입이 잘못되어 있어 수정했습니다. Input: n1(4), n2(5), m1(1), m2(1), m3(2), m4(3), m5(4), 익절k(5), 손절k(5), k유리(3),pause(5); var: 상방(false), 하방(false), 중립(false),lcnt(0),myATR(0),기준선(0),중심선(0),vv(0); var1 = ma(C,10); var2 = ma(C,30); var3 = ma(C,100); 상방 = (var1 > Var2 and Var2 > Var3); 하방 = (var1 < Var2 and Var2 < Var3); 중립 = 상방 == False and 하방 == false; 기준선 = (Highest(High, 96) + Lowest(Low, 96)) / 2; myAtr = Atr(96); if TotalTrades > TotalTrades[1] Then { if IsExitName("BL",1) == true or IsExitName("SL",1) == true Then { Lcnt = Lcnt+1; } Else lcnt = 0; } if lcnt == 0 Then vv = m1; if lcnt == 1 Then vv = m2; if lcnt == 2 Then vv = m3; if lcnt == 3 Then vv = m4; if lcnt >= 4 Then vv = m5; If 상방 and ((C < 중심선 - n1*myAtr) or (C < Highest(C, 30) - n2*myAtr)) then { if MarketPosition == 0 and (IsExitName("BL",1) == False or (IsExitName("BL",1) == true and BarsSinceExit(1) >= pause)) Then buy("ub",OnClose,DEF,vv); } if MarketPosition == 0 and MarketPosition(1) == 1 and IsExitName("BL",1) == true Then Buy("b",AtLimit,ExitPrice(1)-k유리*myAtr,vv); If 하방 and ((C > 중심선 + n1*myAtr) or (C > Lowest(C, 30) + n2*myAtr)) then { if MarketPosition == 0 and (IsExitName("SL",1) == False or (IsExitName("SL",1) == true and BarsSinceExit(1) >= pause)) Then Sell("ds",OnClose,DEF,vv); } If 중립 and ((C < 중심선 - n1*myAtr) or (C < Highest(C, 30) - n2*myAtr)) then { if MarketPosition == 0 and (IsExitName("BL",1) == False or (IsExitName("BL",1) == true and BarsSinceExit(1) >= pause)) Then buy("nb",OnClose,DEF,vv); } If 중립 and ((C > 중심선 + n1*myAtr) or (C > Lowest(C, 30) + n2*myAtr)) then { if MarketPosition == 0 and (IsExitName("SL",1) == False or (IsExitName("SL",1) == true and BarsSinceExit(1) >= pause)) Then Sell("ns",OnClose,DEF,vv); } if MarketPosition == 1 Then { ExitLong("BP",AtLimit,EntryPrice+익절k*myAtr); ExitLong("BL",AtStop,EntryPrice-손절k*myAtr); } if MarketPosition == -1 Then { ExitShort("SP",AtLimit,EntryPrice-익절k*myAtr); ExitShort("SL",AtStop,EntryPrice+손절k*myAtr); } 즐거운 하루되세요 > 에구머니 님이 쓴 글입니다. > 제목 : 수식 문의 > 안녕하세요? 72044 재문의 입니다. 그곳의 답글에서요... 1. 중립 = 상방 == False and 하방 == false; 이게 무슨 뜻인지 모르겠습니다. 특히 중립 = 상방 == False 이 부분이 헷갈리고, 굳이 중립 = 상방 == False and 하방 == false; 이 부분을 왜 써야 하는지도 헷갈립니다. 그러니까 이미 선언 부분에서 False로 다 선언되었는데, 여기다가 또 쓰는 이유를 잘 모르겠습니다. 또 이 부분을 아래와 같이 써도 되는지가 궁금합니다. var1 = ma(C,p1); var2 = ma(C,p2); var3 = ma(C,p3); 상방 = (var1 > Var2 and Var2 > Var3); 하방 = (var1 < Var2 and Var2 < Var3); 중립 = 상방 == False and 하방 == false; 이 부분을 if (var1 > Var2 and Var2 > Var3) then {상방 = true; 중립 = false; 하방 = false;} else if (var1 < Var2 and Var2 < Var3) then {상방 = false; 중립 = false; 하방 = true;} else {상방 = false; 중립 = true; 하방 = false;} 이런 식으로 써도 되나요? 2. 더 큰 문제는 그림에서 k익절과 k손절을 150으로, 즉, 150*Atr(96)으로 터무니 없이 크게 설정해도, 너무 짧게 익절되고, 특히 손절은 너무 빨리 되고 있습니다. 혹시라도 진입 후에 상방에서 중립, 중립에서 하방 등으로 트렌드가 바뀐다 해도, 일단 진입한 애들은 원래의 익절이나 손절 목표값에 도달된 후에나 익절이나 손절이 되어야 합니다. 즉, 트렌드가 바뀐다고 바로 청산이 되어서는 안됩니다. 그러니까, 일단 진입한 녀석들은 중간에 트렌드가 바뀌어도 원래 설정한 익절 목표값이나 손절가를 터치해야 청산이 되고, 그 이후에 새로 진입할 때부터 바뀐 트렌드를 고려해서 진입하기를 원합니다. 이런 식으로 수정 부탁 드리겠습니다. 감사합니다.