커뮤니티

수식 수정부탁드립니다.

프로필 이미지
미완
2019-01-24 14:07:37
142
글번호 125539
답변완료
아래 수식으로 진입 시간이나 종료 시간을 함수로 조정하려하는데 예를 들어 진입 시간이나 종료 시간을 변경하여 시스템 매매를 하여도 0~24시로 인식하여 매매되는 현상이 일어나는데 수식중 어디가 잘못된건지 찾지를 못하겠습니다. 수정 부탁드립니다. 그리고 함수식으로 정해진 매매시간동안 하루 지정 횟수만 매매가 되도록 수식도 포함 부탁드립니다. input: b_time1(000000),e_time1(240000); input: 상단(95),하단(5),익절틱수(10); input : 당일수익틱수(160); input : 당일목표손실(100); Input : short(16), long(26), signal(25); Var : MACDv(0), MACDs(0),macdo(0) ; MACDv = MACD(short, long); MACDs = ema(MACDv,signal); macdo = MACDv-MACDs; Var : stoK(0),stoD(0),T1(0),T2(0); var : Tcond(false); Var : N1(0),dayPl(0),당일수익(0),당일손실(0),Xcond(false); 당일수익 = PriceScale*당일수익틱수; 당일손실 = PriceScale*당일목표손실; if (sdate != sdate[1] and stime >= b_time1) or (sdate == sdate[1] and stime >= b_time1 and stime[1] < b_time1) Then { Tcond = true; Xcond = false; N1 = NetProfit; } daypl = NetProfit-N1; if TotalTrades > TotalTrades[1] Then { if (IsExitName("금일종료",1) == true or IsExitName("금일종료1",1) == true or IsExitName("금일종료2",1) == true or IsExitName("금일종료3",1) == true) then Xcond = true; if daypl >= 당일수익 or daypl <= -당일손실 Then Xcond = true; } If b_time1<=sTime and sTime<= e_time1 Then { stoK = StochasticsK(stoK_p11,stoK_p12); stoD = StochasticsD(stoK_p11,stoK_p12,stoK_p13); } if Xcond == false and MarketPosition == 0 and MarketPosition >= 0 and CrossDown(MACDo,0) then sell("매도",AtMarket); if MarketPosition == -1 Then { ExitShort("금일종료",atlimit,EntryPrice-((당일수익-daypl)/CurrentContracts)); ExitShort("금일종료1",AtStop,EntryPrice+((당일손실+daypl)/CurrentContracts)); if Crossup(stok,상단) then ExitShort("매도청산",AtMarket); } if Xcond == false and MarketPosition == 0 and MarketPosition <= 0 and crossup(MACDo,0) then buy("매수",AtMarket); if MarketPosition == 1 Then { ExitShort("금일종료2",atlimit,EntryPrice-((당일수익-daypl)/CurrentContracts)); ExitShort("금일종료3",AtStop,EntryPrice+((당일손실+daypl)/CurrentContracts)); if Crossdown(stok,하단) then Exitlong("매수청산",AtMarket); } SetStopProfittarget(PriceScale*익절틱수,PointStop);
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2019-01-25 14:19:31

안녕하세요 예스스탁입니다. 시간에 24시가 없습니다. 24시는 0시로 지정하셔야 합니다. 또한 기존 수식에 시간을 지정해서 Tcond = true;로 변수에 값은 저장하지만 해당 변수를 진입식에 조건으로 사용하지는 않았습니다. 수정한 식입니다. input: b_time1(000000),e_time1(240000); input: 상단(95),하단(5),익절틱수(10); input : 당일수익틱수(160); input : 당일목표손실(100); input : 당일진입횟수(5); Input : short(16), long(26), signal(25); input : stoK_p11(10),stoK_p12(5),stoK_p13(5); Var : MACDv(0), MACDs(0),macdo(0) ; Var : stoK(0),stoD(0),T1(0),T2(0); var : Tcond(false),entry(0); Var : N1(0),dayPl(0),당일수익(0),당일손실(0),Xcond(false); MACDv = MACD(short, long); MACDs = ema(MACDv,signal); macdo = MACDv-MACDs; 당일수익 = PriceScale*당일수익틱수; 당일손실 = PriceScale*당일목표손실; stoK = StochasticsK(stoK_p11,stoK_p12); stoD = StochasticsD(stoK_p11,stoK_p12,stoK_p13); if (sdate != sdate[1] and stime >= e_time1) or (sdate == sdate[1] and stime >= e_time1 and stime[1] < e_time1) Then { Tcond = false; } if (sdate != sdate[1] and stime >= b_time1) or (sdate == sdate[1] and stime >= b_time1 and stime[1] < b_time1) Then { Tcond = true; Xcond = false; N1 = NetProfit; T1 = TotalTrades[1]; } if MarketPosition == 0 Then entry = TotalTrades-t1; Else entry = TotalTrades-t1+1; daypl = NetProfit-N1; if TotalTrades > TotalTrades[1] Then { if (IsExitName("금일종료",1) == true or IsExitName("금일종료1",1) == true or IsExitName("금일종료2",1) == true or IsExitName("금일종료3",1) == true) then Xcond = true; if daypl >= 당일수익 or daypl <= -당일손실 Then Xcond = true; } if entry < 당일진입횟수 and Tcond == true and Xcond == false and MarketPosition == 0 and MarketPosition >= 0 and CrossDown(MACDo,0) then sell("매도",AtMarket); if MarketPosition == -1 Then { ExitShort("금일종료",atlimit,EntryPrice-((당일수익-daypl)/CurrentContracts)); ExitShort("금일종료1",AtStop,EntryPrice+((당일손실+daypl)/CurrentContracts)); if Crossup(stok,상단) then ExitShort("매도청산",AtMarket); } if entry < 당일진입횟수 and Tcond == true and Xcond == false and MarketPosition == 0 and MarketPosition <= 0 and crossup(MACDo,0) then buy("매수",AtMarket); if MarketPosition == 1 Then { ExitShort("금일종료2",atlimit,EntryPrice-((당일수익-daypl)/CurrentContracts)); ExitShort("금일종료3",AtStop,EntryPrice+((당일손실+daypl)/CurrentContracts)); if Crossdown(stok,하단) then Exitlong("매수청산",AtMarket); } SetStopProfittarget(PriceScale*익절틱수,PointStop); 즐거운 하루되세요 > 미완 님이 쓴 글입니다. > 제목 : 수식 수정부탁드립니다. > 아래 수식으로 진입 시간이나 종료 시간을 함수로 조정하려하는데 예를 들어 진입 시간이나 종료 시간을 변경하여 시스템 매매를 하여도 0~24시로 인식하여 매매되는 현상이 일어나는데 수식중 어디가 잘못된건지 찾지를 못하겠습니다. 수정 부탁드립니다. 그리고 함수식으로 정해진 매매시간동안 하루 지정 횟수만 매매가 되도록 수식도 포함 부탁드립니다. input: b_time1(000000),e_time1(240000); input: 상단(95),하단(5),익절틱수(10); input : 당일수익틱수(160); input : 당일목표손실(100); Input : short(16), long(26), signal(25); Var : MACDv(0), MACDs(0),macdo(0) ; MACDv = MACD(short, long); MACDs = ema(MACDv,signal); macdo = MACDv-MACDs; Var : stoK(0),stoD(0),T1(0),T2(0); var : Tcond(false); Var : N1(0),dayPl(0),당일수익(0),당일손실(0),Xcond(false); 당일수익 = PriceScale*당일수익틱수; 당일손실 = PriceScale*당일목표손실; if (sdate != sdate[1] and stime >= b_time1) or (sdate == sdate[1] and stime >= b_time1 and stime[1] < b_time1) Then { Tcond = true; Xcond = false; N1 = NetProfit; } daypl = NetProfit-N1; if TotalTrades > TotalTrades[1] Then { if (IsExitName("금일종료",1) == true or IsExitName("금일종료1",1) == true or IsExitName("금일종료2",1) == true or IsExitName("금일종료3",1) == true) then Xcond = true; if daypl >= 당일수익 or daypl <= -당일손실 Then Xcond = true; } If b_time1<=sTime and sTime<= e_time1 Then { stoK = StochasticsK(stoK_p11,stoK_p12); stoD = StochasticsD(stoK_p11,stoK_p12,stoK_p13); } if Xcond == false and MarketPosition == 0 and MarketPosition >= 0 and CrossDown(MACDo,0) then sell("매도",AtMarket); if MarketPosition == -1 Then { ExitShort("금일종료",atlimit,EntryPrice-((당일수익-daypl)/CurrentContracts)); ExitShort("금일종료1",AtStop,EntryPrice+((당일손실+daypl)/CurrentContracts)); if Crossup(stok,상단) then ExitShort("매도청산",AtMarket); } if Xcond == false and MarketPosition == 0 and MarketPosition <= 0 and crossup(MACDo,0) then buy("매수",AtMarket); if MarketPosition == 1 Then { ExitShort("금일종료2",atlimit,EntryPrice-((당일수익-daypl)/CurrentContracts)); ExitShort("금일종료3",AtStop,EntryPrice+((당일손실+daypl)/CurrentContracts)); if Crossdown(stok,하단) then Exitlong("매수청산",AtMarket); } SetStopProfittarget(PriceScale*익절틱수,PointStop);