커뮤니티

문의드립니다.

프로필 이미지
회원
2013-05-31 12:11:44
230
글번호 63843
답변완료
빠르고 친절한 답변 정말 감사합니다. 일전에 30550, 30570 문의에 대한 답변수식을 이용해 약간 수정된 수식이 아래와 같습니다. 여기에 추가할 사항을 좀 수정해 주시면 감사하겠습니다. 1. 강제청산(BLoss, SLoss)이 진입가 대비 손실폭으로 되어 있습니다. 이것을 진입 이후 형성된 고점,저점대비로 수정했으면 합니다. 즉 매수진입이면, 진입이후(진입봉 포함) 만들어진 고점대비 변수 loss 퍼센트 하락하면 강제손절, 매도인 경우는 반대입니다. 2.수익청산(BP1, BP2, SP1, SP2) 후 Y=0 이면 추가 진입불가, 0 이 아니면, 반대포지션만 진입하도록 하였는데, 여기서 추가변경 사항 -> 기본적으로 그대로 유지하되, 변수의 조정으로 상태에 따른 진입여부를 수정해 주시면 감사하겠습니다. y=0 이면 당일 진입 더이상 없음 y=1 이면 현재처럼 수익청산의 반대포지션으로만 진입가능 y=-1 이면 만약 매수진입후 수익청산된 경우라면 당일 고점대비 변수loss*2배 퍼센트가 하락한 경우에만 양쪽 포지션 진입이 모두 가능, 매도로 수익청산인 경우라면, 당일저점대비 역시 변수 loss의 2배 만큼 상승인 경우 양쪽 포지션 모두 진입가능 (변수는 제가 예를든 것이니, 코딩하시기 편한걸로 하셔도 됩니다.) 3. 당일 손실이 loss의 2배면 더 이상 진입은 없습니다. 감사합니다. input : x(1),y(1),Profit(1),loss(0.5); var : Xcond(false),Ycond(0),YY(0); var : UPA1(0),DnA1(0),UPA2(0),DnA2(0),UPA3(0),DnA3(0),UPA4(0),DnA4(0); var : UPB1(0),DnB1(0),UPB2(0),DnB2(0),UPB3(0),DnB3(0),UPB4(0),DnB4(0); UpA1 = iff(A1 > A1[1],1,0); UpA2 = iff(A2 > A2[1],1,0); UpA3 = iff(A3 > A3[1],1,0); UpA4 = iff(A4 > A4[1],1,0); UpB1 = iff(B1 > B1[1],1,0); UpB2 = iff(B2 > B2[1],1,0); UpB3 = iff(B3 > B3[1],1,0); UpB4 = iff(B4 > B4[1],1,0); DnA1 = iff(A1 < A1[1],1,0); DnA2 = iff(A2 < A2[1],1,0); DnA3 = iff(A3 < A3[1],1,0); DnA4 = iff(A4 < A4[1],1,0); DnB1 = iff(B1 < B1[1],1,0); DnB2 = iff(B2 < B2[1],1,0); DnB3 = iff(B3 < B3[1],1,0); DnB4 = iff(B4 < B4[1],1,0); XCond = X == 0 and MarketPosition == 0 and ExitDate(1) == sdate and (IsExitName("BLoss",1) or IsExitName("SLoss",1)); Ycond = 0; if MarketPosition == 0 and ExitDate(1) == sdate and (IsExitName("BP1",1) or IsExitName("BP2",1) or IsExitName("SP1",1) or IsExitName("SP2",1)) Then{ if Y == 0 Then Ycond = 99; if Y != 0 and MarketPosition(1) == 1 Then Ycond = 1; if Y != 0 and MarketPosition(1) == -1 Then Ycond = -1; } if Xcond == false and stime >= 90300 and stime < 144500 then{ if (Ycond == 0 or Ycond == -1) and (UpA1+UpA2+UpA3+UpA4) >= 3 and (UpB1+UpB2+UpB3+UpB4) >= 3 Then buy(); if (Ycond == 0 or Ycond == 1) and (DnA1+DnA2+DnA3+DnA4) >= 3 and (DnB1+DnB2+DnB3+DnB4) >= 3 Then sell(); } if ((DnA1+DnA2+DnA3+DnA4) >= 2 and (DnB1+DnB2+DnB3+DnB4) >= 2) Then ExitLong("bx"); if ((UpA1+UpA2+UpA3+UpA4) >= 2 and (UpB1+UpB2+UpB3+UpB4) >= 2) Then ExitShort("sx"); if MarketPosition == 1 Then{ ExitLong("BLoss",AtStop,EntryPrice*(1-loss/100)); if EntryTime < 93000 Then ExitLong("BP1",atlimit,EntryPrice*(1+Profit/100)); Else ExitLong("BP2",atlimit,EntryPrice*1.005); } if MarketPosition == -1 Then{ ExitShort("SLoss",AtStop,EntryPrice*(1+loss/100)); if EntryTime < 93000 Then ExitShort("SP1",atlimit,EntryPrice*(1-Profit/100)); Else ExitShort("SP2",atlimit,EntryPrice*0.995); } SetStopEndofday(150000);
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2013-05-31 15:01:19

안녕하세요 예스스탁입니다. input : x(1),y(1),Profit(1),loss(0.5); var : Xcond(false),Ycond(0),YY(0); var : UPA1(0),DnA1(0),UPA2(0),DnA2(0),UPA3(0),DnA3(0),UPA4(0),DnA4(0); var : UPB1(0),DnB1(0),UPB2(0),DnB2(0),UPB3(0),DnB3(0),UPB4(0),DnB4(0); UpA1 = iff(A1 > A1[1],1,0); UpA2 = iff(A2 > A2[1],1,0); UpA3 = iff(A3 > A3[1],1,0); UpA4 = iff(A4 > A4[1],1,0); UpB1 = iff(B1 > B1[1],1,0); UpB2 = iff(B2 > B2[1],1,0); UpB3 = iff(B3 > B3[1],1,0); UpB4 = iff(B4 > B4[1],1,0); DnA1 = iff(A1 < A1[1],1,0); DnA2 = iff(A2 < A2[1],1,0); DnA3 = iff(A3 < A3[1],1,0); DnA4 = iff(A4 < A4[1],1,0); DnB1 = iff(B1 < B1[1],1,0); DnB2 = iff(B2 < B2[1],1,0); DnB3 = iff(B3 < B3[1],1,0); DnB4 = iff(B4 < B4[1],1,0); var1 = NetProfit; if date != date[1] Then var2 = var1[1]; var3 = NetProfit-var2+PositionProfit; XCond = X == 0 and MarketPosition == 0 and ExitDate(1) == sdate and (IsExitName("BLoss",1) or IsExitName("SLoss",1)); Ycond = 0; if MarketPosition == 0 and ExitDate(1) == sdate and (IsExitName("BP1",1) or IsExitName("BP2",1) or IsExitName("SP1",1) or IsExitName("SP2",1)) Then{ if Y == 0 Then Ycond = 99; if Y == 1 Then{ if Y != 0 and MarketPosition(1) == 1 Then Ycond = 1; if Y != 0 and MarketPosition(1) == -1 Then Ycond = -1; } if Y == -1 Then{ if Y != 0 and MarketPosition(1) == 1 and C < dayhigh-Loss*2 Then Ycond = 0; if Y != 0 and MarketPosition(1) == -1 and C >= daylow+Loss*2 Then Ycond = 0; } } if Xcond == false and stime >= 90300 and stime < 144500 and var3 > -Loss*2 then{ if (Ycond == 0 or Ycond == -1) and (UpA1+UpA2+UpA3+UpA4) >= 3 and (UpB1+UpB2+UpB3+UpB4) >= 3 Then buy(); if (Ycond == 0 or Ycond == 1) and (DnA1+DnA2+DnA3+DnA4) >= 3 and (DnB1+DnB2+DnB3+DnB4) >= 3 Then sell(); } if ((DnA1+DnA2+DnA3+DnA4) >= 2 and (DnB1+DnB2+DnB3+DnB4) >= 2) Then ExitLong("bx"); if ((UpA1+UpA2+UpA3+UpA4) >= 2 and (UpB1+UpB2+UpB3+UpB4) >= 2) Then ExitShort("sx"); if MarketPosition == 1 Then{ ExitLong("BLoss",AtStop,highest(H,BarsSinceEntry)*(1-loss/100)); if EntryTime < 93000 Then ExitLong("BP1",atlimit,EntryPrice*(1+Profit/100)); Else ExitLong("BP2",atlimit,EntryPrice*1.005); } if MarketPosition == -1 Then{ ExitShort("SLoss",AtStop,lowest(L,BarsSinceEntry)*(1+loss/100)); if EntryTime < 93000 Then ExitShort("SP1",atlimit,EntryPrice*(1-Profit/100)); Else ExitShort("SP2",atlimit,EntryPrice*0.995); } SetStopEndofday(150000); 즐거운 하루되세요 > HI_jhy6835 님이 쓴 글입니다. > 제목 : 문의드립니다. > 빠르고 친절한 답변 정말 감사합니다. 일전에 30550, 30570 문의에 대한 답변수식을 이용해 약간 수정된 수식이 아래와 같습니다. 여기에 추가할 사항을 좀 수정해 주시면 감사하겠습니다. 1. 강제청산(BLoss, SLoss)이 진입가 대비 손실폭으로 되어 있습니다. 이것을 진입 이후 형성된 고점,저점대비로 수정했으면 합니다. 즉 매수진입이면, 진입이후(진입봉 포함) 만들어진 고점대비 변수 loss 퍼센트 하락하면 강제손절, 매도인 경우는 반대입니다. 2.수익청산(BP1, BP2, SP1, SP2) 후 Y=0 이면 추가 진입불가, 0 이 아니면, 반대포지션만 진입하도록 하였는데, 여기서 추가변경 사항 -> 기본적으로 그대로 유지하되, 변수의 조정으로 상태에 따른 진입여부를 수정해 주시면 감사하겠습니다. y=0 이면 당일 진입 더이상 없음 y=1 이면 현재처럼 수익청산의 반대포지션으로만 진입가능 y=-1 이면 만약 매수진입후 수익청산된 경우라면 당일 고점대비 변수loss*2배 퍼센트가 하락한 경우에만 양쪽 포지션 진입이 모두 가능, 매도로 수익청산인 경우라면, 당일저점대비 역시 변수 loss의 2배 만큼 상승인 경우 양쪽 포지션 모두 진입가능 (변수는 제가 예를든 것이니, 코딩하시기 편한걸로 하셔도 됩니다.) 3. 당일 손실이 loss의 2배면 더 이상 진입은 없습니다. 감사합니다. input : x(1),y(1),Profit(1),loss(0.5); var : Xcond(false),Ycond(0),YY(0); var : UPA1(0),DnA1(0),UPA2(0),DnA2(0),UPA3(0),DnA3(0),UPA4(0),DnA4(0); var : UPB1(0),DnB1(0),UPB2(0),DnB2(0),UPB3(0),DnB3(0),UPB4(0),DnB4(0); UpA1 = iff(A1 > A1[1],1,0); UpA2 = iff(A2 > A2[1],1,0); UpA3 = iff(A3 > A3[1],1,0); UpA4 = iff(A4 > A4[1],1,0); UpB1 = iff(B1 > B1[1],1,0); UpB2 = iff(B2 > B2[1],1,0); UpB3 = iff(B3 > B3[1],1,0); UpB4 = iff(B4 > B4[1],1,0); DnA1 = iff(A1 < A1[1],1,0); DnA2 = iff(A2 < A2[1],1,0); DnA3 = iff(A3 < A3[1],1,0); DnA4 = iff(A4 < A4[1],1,0); DnB1 = iff(B1 < B1[1],1,0); DnB2 = iff(B2 < B2[1],1,0); DnB3 = iff(B3 < B3[1],1,0); DnB4 = iff(B4 < B4[1],1,0); XCond = X == 0 and MarketPosition == 0 and ExitDate(1) == sdate and (IsExitName("BLoss",1) or IsExitName("SLoss",1)); Ycond = 0; if MarketPosition == 0 and ExitDate(1) == sdate and (IsExitName("BP1",1) or IsExitName("BP2",1) or IsExitName("SP1",1) or IsExitName("SP2",1)) Then{ if Y == 0 Then Ycond = 99; if Y != 0 and MarketPosition(1) == 1 Then Ycond = 1; if Y != 0 and MarketPosition(1) == -1 Then Ycond = -1; } if Xcond == false and stime >= 90300 and stime < 144500 then{ if (Ycond == 0 or Ycond == -1) and (UpA1+UpA2+UpA3+UpA4) >= 3 and (UpB1+UpB2+UpB3+UpB4) >= 3 Then buy(); if (Ycond == 0 or Ycond == 1) and (DnA1+DnA2+DnA3+DnA4) >= 3 and (DnB1+DnB2+DnB3+DnB4) >= 3 Then sell(); } if ((DnA1+DnA2+DnA3+DnA4) >= 2 and (DnB1+DnB2+DnB3+DnB4) >= 2) Then ExitLong("bx"); if ((UpA1+UpA2+UpA3+UpA4) >= 2 and (UpB1+UpB2+UpB3+UpB4) >= 2) Then ExitShort("sx"); if MarketPosition == 1 Then{ ExitLong("BLoss",AtStop,EntryPrice*(1-loss/100)); if EntryTime < 93000 Then ExitLong("BP1",atlimit,EntryPrice*(1+Profit/100)); Else ExitLong("BP2",atlimit,EntryPrice*1.005); } if MarketPosition == -1 Then{ ExitShort("SLoss",AtStop,EntryPrice*(1+loss/100)); if EntryTime < 93000 Then ExitShort("SP1",atlimit,EntryPrice*(1-Profit/100)); Else ExitShort("SP2",atlimit,EntryPrice*0.995); } SetStopEndofday(150000);