커뮤니티

문의

프로필 이미지
hjkang철인
2014-10-23 11:25:07
206
글번호 79672
답변완료
1.올려주신 식이 제대로 작동하지 않는것 같습니다. 점검한번 부탁드리고 주석을 달아주시면 제가 참고하겠습니다. 2.그리고 현재 신호의 상태가 10틱 이상 수익이고 5이평과 20이평이 반대가 되었을때 반대포지션진입될 수 있게 부탁드립니다. 즉 매수로 10틱 이상 수익 중 5이평 < 20이평 이면 매도 ================================== 안녕하세요 예스스탁입니다. if PositionProfit(1) <= 0 and PositionProfit(2) <= 0 and EntryDate(2) > 0 Then //EntryDate가 왜 필요한가요?? Condition3 = True; Else Condition3 = False; if 매수조건 Then{ if MarketPosition == 0 and Condition1 == false then //제 시스템은 항상 포지션이 있으므로 필요없는 라인..... buy(); if MarketPosition == 0 and Condition1 == true and (c >= ExitPrice(1)+PriceScale*3 or C <= ExitPrice(1)-PriceScale*3) then buy(); if MarketPosition == -1 and !(C >= EntryPrice and PositionProfit(1) <= 0 and EntryDate(1) > 0) then // 111 Sell(); // <== Buy(); 가 맞는거죠? if MarketPosition == -1 and C >= EntryPrice and PositionProfit(1) <= 0 and EntryDate(1) > 0 then // 222 111과 222의 차이점을 알려주세요 ExitShort(); //저는 청산이 없고 항상 포지션을 가지고 있어야합니다. 그럼 여기도 Buy(); 인거죠? } if 매도조건 Then{ if MarketPosition >= 0 and Condition1 == false then Sell(); if MarketPosition == 0 and Condition1 == true and (c >= ExitPrice(1)+PriceScale*3 or C <= ExitPrice(1)-PriceScale*3) then sell(); if MarketPosition == 1 and !(C <= EntryPrice and PositionProfit(1) <= 0 and EntryDate(1) > 0) then Sell(); if MarketPosition == 1 and C <= EntryPrice and PositionProfit(1) <= 0 and EntryDate(1) > 0 then ExitLong(); } 즐거운 하루되세요 > hjkang철인 님이 쓴 글입니다. > 제목 : 문의 > 앞전 매매 손실이 2회발생 시 손실로 마감된 가격을 저장하고.. 다음 신호의 가격이 손실로 마감된 가격의 +3틱 -3틱 이내의 가격에서는 진입되지 않도록 수식수정 부탁드립니다. (저는 매수, 매도, 매수, 매도.. 항상 포지션을 유지하고 있습니다.) if OpenPositionProfit<=0 Then //현재 진행 중인 거래가 손실이면 var8=c; //손실 마감 가격 저장 //기존 거래 손실이 2회 이면... if PositionProfit(1) <= 0 and PositionProfit(2) <= 0 Then Condition3 = True; Else Condition3 = False; if Condition3==True and MarketPosition==1 Then if abs(var8) >= abs(var8[1])+PriceScale*3 then Sell("S"); if Condition3==True and MarketPosition==-1 Then if abs(var8) >= abs(var8[1])+PriceScale*3 Then Buy("B");
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2014-10-23 14:23:47

안녕하세요 예스스탁입니다. 1. 매수식만 주석을 붙여 드립니다. 매도도 매수와 같은 구조입니다. #직전2개의 포지션이 수익이 0이하 #EntryDate(2) > 0은 전전진입의 날짜가 0보다 크다라는 내용으로 전전진입이 있었다는 의미입니다. #전전진입이 없었으면 값이 0으로 리턴되는데 손익이 0인지 거래가 없어 0인지 구별이 되지 않으므로 #전전진입이 있었다는 의미로 추가해 놓은 조건입니다. if PositionProfit(1) <= 0 and PositionProfit(2) <= 0 and EntryDate(2) > 0 Then //EntryDate가 왜 필요한가요?? Condition1 = True; Else Condition1 = False; if 매수조건 Then{ #차트상 첫번째 진입이거나 목표수익이나 손절등으로 청산이 발생하고 무포지션일때 #직전 2개의 거래가 모두 손실이 아니면 진입 if MarketPosition == 0 and Condition1 == false then //제 시스템은 항상 포지션이 있으므로 필요없는 라인..... buy(); #차트상 첫번째 진입이거나 목표수익이나 손절등으로 청산이 발생하고 무포지션일때 #직전 2개의 거래가 모두 손실일때는 종가가 직전청산가격대비 +3틱 혹은 -3틱일때 진입 if MarketPosition == 0 and Condition1 == true and (c >= ExitPrice(1)+PriceScale*3 or C <= ExitPrice(1)-PriceScale*3) then buy(); #현재 매도포지션 진입 중이고 최근2개 거래가 모두 손실이 아닐때 진입 if MarketPosition == -1 and !(C >= EntryPrice and PositionProfit(1) <= 0 and EntryDate(1) > 0) then Sell(); // <== Buy(); 가 맞는거죠? #현재 매도포지션 진입 중이고 최근2개 거래가 모두 손익일때는 청산만(진입을 하지 않는다고 하셨으므로 청산만 실행) if MarketPosition == -1 and C >= EntryPrice and PositionProfit(1) <= 0 and EntryDate(1) > 0 then ExitShort(); } 현재 사용하는 수식이 리버스 식입니다. 매수/매도청산와 매도/매수청산이 반복되는 내용입니다. 만약 최근 2개의 진입이 모두 손실이면(4번째 if문) 해당 포지션 청산은 하고 진입에 들어가지 않고 이후에 조건에 만족하면 두번째 if문에 의해 진입을 하게 되는 부분입니다. 이전의 식은 직전청산가 대비 +-3틱의 벋어나고 조건에 만족하면 진입하게 됩니다. 무포지션 상태에서는 이전 2개의 진입이 모두 청산이 완료된 상태이므로 position(1),position(2)로 판단하고 포지션이 있는 상태에서는 진행중인 거래는 진입가와 현재 종가를 비교하고 이전거래 손익은 position(1)로 판단합니다. 2. "현재 신호의 상태가 10틱 이상 수익이고 5이평과 20이평이 반대가 되었을때 반대포지션진입될 수 있게 부탁드립니다. 즉 매수로 10틱 이상 수익 중 5이평 < 20이평 이면 매도" 위 내용이시면 최근 2개의 진입의 손익을 보는것은 의미가 없습니다. 현재 진입중인 거래가 10틱이상 수익일때만 청산을 하므로 아래와 같이만 작성하시면 됩니다. 손절이나 목표수익없이 단순 이평배열로만 진입하신다면 아래식 참고하시기 바랍니다. var1 = ma(c,5); var2 = ma(C,20); #차트상 첫진입(크로스로 진입) if TotalTrades == 0 Then{ if crossup(var1,var2) Then buy(); if CrossDown(var1,var2) Then sell(); } #매수포지션 진입 중 5이평이 20이평보다 작고 종가가 진입가 대비 10이상 수익중이면 매도로 스윙칭 if MarketPosition == 1 and var1 < var2 and C >= EntryPrice+PriceScale*10 Then sell(); #매도포지션 진입 중 5이평이 20이평보다 크고 종가가 진입가 대비 10이상 수익중이면 매수로 스위칭 if MarketPosition == -1 and var1 > var2 and C <= EntryPrice-PriceScale*10 Then buy(); 즐거운 하루되세요 > hjkang철인 님이 쓴 글입니다. > 제목 : 문의 > 1.올려주신 식이 제대로 작동하지 않는것 같습니다. 점검한번 부탁드리고 주석을 달아주시면 제가 참고하겠습니다. 2.그리고 현재 신호의 상태가 10틱 이상 수익이고 5이평과 20이평이 반대가 되었을때 반대포지션진입될 수 있게 부탁드립니다. 즉 매수로 10틱 이상 수익 중 5이평 < 20이평 이면 매도 ================================== 안녕하세요 예스스탁입니다. if PositionProfit(1) <= 0 and PositionProfit(2) <= 0 and EntryDate(2) > 0 Then //EntryDate가 왜 필요한가요?? Condition3 = True; Else Condition3 = False; if 매수조건 Then{ if MarketPosition == 0 and Condition1 == false then //제 시스템은 항상 포지션이 있으므로 필요없는 라인..... buy(); if MarketPosition == 0 and Condition1 == true and (c >= ExitPrice(1)+PriceScale*3 or C <= ExitPrice(1)-PriceScale*3) then buy(); if MarketPosition == -1 and !(C >= EntryPrice and PositionProfit(1) <= 0 and EntryDate(1) > 0) then // 111 Sell(); // <== Buy(); 가 맞는거죠? if MarketPosition == -1 and C >= EntryPrice and PositionProfit(1) <= 0 and EntryDate(1) > 0 then // 222 111과 222의 차이점을 알려주세요 ExitShort(); //저는 청산이 없고 항상 포지션을 가지고 있어야합니다. 그럼 여기도 Buy(); 인거죠? } if 매도조건 Then{ if MarketPosition >= 0 and Condition1 == false then Sell(); if MarketPosition == 0 and Condition1 == true and (c >= ExitPrice(1)+PriceScale*3 or C <= ExitPrice(1)-PriceScale*3) then sell(); if MarketPosition == 1 and !(C <= EntryPrice and PositionProfit(1) <= 0 and EntryDate(1) > 0) then Sell(); if MarketPosition == 1 and C <= EntryPrice and PositionProfit(1) <= 0 and EntryDate(1) > 0 then ExitLong(); } 즐거운 하루되세요 > hjkang철인 님이 쓴 글입니다. > 제목 : 문의 > 앞전 매매 손실이 2회발생 시 손실로 마감된 가격을 저장하고.. 다음 신호의 가격이 손실로 마감된 가격의 +3틱 -3틱 이내의 가격에서는 진입되지 않도록 수식수정 부탁드립니다. (저는 매수, 매도, 매수, 매도.. 항상 포지션을 유지하고 있습니다.) if OpenPositionProfit<=0 Then //현재 진행 중인 거래가 손실이면 var8=c; //손실 마감 가격 저장 //기존 거래 손실이 2회 이면... if PositionProfit(1) <= 0 and PositionProfit(2) <= 0 Then Condition3 = True; Else Condition3 = False; if Condition3==True and MarketPosition==1 Then if abs(var8) >= abs(var8[1])+PriceScale*3 then Sell("S"); if Condition3==True and MarketPosition==-1 Then if abs(var8) >= abs(var8[1])+PriceScale*3 Then Buy("B");