커뮤니티

수식 수정 부탁합니다

프로필 이미지
하늘공원
2021-03-08 09:29:37
750
글번호 146853
답변완료
안녕하세요 . 1. 아래 수식의 신호 발생을 정 반대로 즉 매수는 매도로, 매도는 매수로 구현되도록 하여 결과값도 정반대로 나오도록 수정해주십시요. 2. 그리고 동시 청산.진입신호 발생을 진입신호는 지연발생(약 5틱 또는 캔들 봉1개 정도) 되도록 해주십시요. -- 아 래 -- Var : shortPeriod(32), longPeriod(12); Var : value(0),T(0),P(0); value = MACD(shortPeriod, longPeriod); If CrossUP(value, 0) Then { T = 1; P = C; if MarketPosition ==-1 Then ExitLong("bx"); } If CrossDown(value, 0) Then { T = -1; P = C; if MarketPosition == 1 Then ExitShort("sx"); } if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then T = 0; if T == 1 Then Buy("b",AtStop,P+PriceScale*60); if T == -1 Then Sell("S",AtStop,P-PriceScale*60);
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2021-03-09 10:49:27

안녕하세요 예스스탁입니다. 기존에 올리신 식이 bx와 sx청산은 발생할 수 없는 내용으로 작성이 되어 있습니다. 청산이 정상적으로 실행되면 진입과 청산이 동시발생하지 않는 식입니다. 해당 청산은 발생하지 않게 처리하신 것으로 보고 진입만 처리해 드립니다. Var : shortPeriod(32), longPeriod(12); Var : value(0),T(0),P(0); value = MACD(shortPeriod, longPeriod); If CrossUP(value, 0) Then { T = 1; P = C; if MarketPosition ==-1 Then ExitLong("bx"); } If CrossDown(value, 0) Then { T = -1; P = C; if MarketPosition == 1 Then ExitShort("sx"); } if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then T = 0; if T == 1 Then { if MarketPosition == 0 and IsExitName("bsx",1) == False Then Sell("s",AtLimit,P+PriceScale*60); if MarketPosition == 1 Then ExitLong("bsx",AtLimit,P+PriceScale*60); } if T == -1 Then { if MarketPosition == 0 and IsExitName("sbx",1) == False Then Buy("B",AtLimit,P-PriceScale*60); if MarketPosition == -1 Then ExitShort("sbx",AtLimit,P-PriceScale*60); } if MarketPosition == 0 and IsExitName("sbx",1) == true Then Buy("sb"); if MarketPosition == 0 and IsExitName("bsx",1) == true Then Sell("bs"); 즐거운 하루되세요 > 하늘공원 님이 쓴 글입니다. > 제목 : 수식 수정 부탁합니다 > 안녕하세요 . 1. 아래 수식의 신호 발생을 정 반대로 즉 매수는 매도로, 매도는 매수로 구현되도록 하여 결과값도 정반대로 나오도록 수정해주십시요. 2. 그리고 동시 청산.진입신호 발생을 진입신호는 지연발생(약 5틱 또는 캔들 봉1개 정도) 되도록 해주십시요. -- 아 래 -- Var : shortPeriod(32), longPeriod(12); Var : value(0),T(0),P(0); value = MACD(shortPeriod, longPeriod); If CrossUP(value, 0) Then { T = 1; P = C; if MarketPosition ==-1 Then ExitLong("bx"); } If CrossDown(value, 0) Then { T = -1; P = C; if MarketPosition == 1 Then ExitShort("sx"); } if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then T = 0; if T == 1 Then Buy("b",AtStop,P+PriceScale*60); if T == -1 Then Sell("S",AtStop,P-PriceScale*60);