커뮤니티

문의드립니다

프로필 이미지
chun0711
2020-04-05 23:59:38
688
글번호 137558
답변완료
안녕하세요 아래 수식에서 상한가 다음날에만 매수진입 1차 or 2차 or 3차까지 매수가 되어서 청산이 되면 더이상 진입되지않게 수식 변경 부탁드립니다 예를들면 상한가 다음날에 1차 매수후 청산이 되면 더이상 진입금지 input : 금액(10000000); var : vol(0); if MarketPosition == 0 and L > DayHigh*0.82 Then { vol = Floor((금액*0.3)/min(NextBarOpen,DayHigh*0.82)); buy("b1",atlimit,DayHigh*0.82,vol); } if MarketPosition == 1 then { if MaxEntries == 1 and L > DayHigh*0.78 Then { vol = Floor((금액*0.3)/min(NextBarOpen,DayHigh*0.78)); buy("b2",atlimit,DayHigh*0.78,vol); } if MaxEntries == 2 and L > DayHigh*0.75 Then { vol = Floor((금액*0.3)/min(NextBarOpen,DayHigh*0.75)); buy("b3",atlimit,DayHigh*0.75,vol); } if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "bp1" Then Condition1 = true; if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "bp2" Then Condition2= true; if Condition1 == false Then ExitLong("bp1",atlimit,AvgEntryPrice*1.025,"",floor(MaxContracts*0.8),1); if Condition2 == false Then ExitLong("bp2",atlimit,AvgEntryPrice*1.035); if MaxEntries == 3 then ExitLong("bl",AtStop,AvgEntryPrice*0.92); } SetStopEndofday(151000);
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2020-04-06 14:12:54

안녕하세요 예스스탁입니다. input : 금액(10000000); var : vol(0); var : 상한가(0), UpLimit(0),entry(0); var : up1(0), up2(0), up3(0), up4(0), up5(0),up6(0),Up7(0); if date >= 19981207 then { if date < 20050328 && CodeCategory() == 2 then UpLimit = (BP[0] * 1.12); Else if date >= 20050328 and date < 20150615 Then UpLimit = (BP[0] * 1.15); Else UpLimit = (BP[0] * 1.30); if CodeCategory() == 2 then { if date >= 20030721 then { up1 = int(UpLimit/100+0.00001)*100; up2 = int(UpLimit/100+0.00001)*100; up3 = int(UpLimit/100+0.00001)*100; up4 = int(UpLimit/50+0.00001)*50; up5 = int(UpLimit/10+0.00001)*10; up6 = int(UpLimit/5+0.00001)*5; up7 = int(UpLimit/1+0.00001)*1; } else { up1 = int(UpLimit/1000+0.00001)*1000; up2 = int(UpLimit/500+0.00001)*500; up3 = int(UpLimit/100+0.00001)*100; up4 = int(UpLimit/50+0.00001)*50; up5 = int(UpLimit/10+0.00001)*10; up6 = int(UpLimit/10+0.00001)*10; up7 = int(UpLimit/1+0.00001)*1; } } Else { up1 = int(UpLimit/1000+0.00001)*1000; up2 = int(UpLimit/500+0.00001)*500; up3 = int(UpLimit/100+0.00001)*100; up4 = int(UpLimit/50+0.00001)*50; up5 = int(UpLimit/10+0.00001)*10; up6 = int(UpLimit/5+0.00001)*5; up7 = int(UpLimit/1+0.00001)*1; } if CodeCategory() == 1 || CodeCategory() == 2 then { if sdate < 20101004 Then { If BP >= 500000 Then 상한가 = up1; Else If BP >= 100000 Then 상한가 = iff(up2>=500000, up1, up2); Else If BP >= 50000 Then 상한가 = iff(up3>=100000, up2, up3); Else If BP >= 10000 Then 상한가 = iff(up4>=50000, up3, up4); Else If BP >= 5000 Then 상한가 = iff(up5>=10000, up4, up5); Else If BP >= 1000 Then 상한가 = iff(up5>=5000, up5, up6); Else 상한가 = iff(up6>=1000, up6, up6); } Else { If BP >= 500000 Then 상한가 = up1; Else If BP >= 100000 Then 상한가 = iff(up2>=500000, up1, up2); Else If BP >= 50000 Then 상한가 = iff(up3>=100000, up2, up3); Else If BP >= 10000 Then 상한가 = iff(up4>=50000, up3, up4); Else If BP >= 5000 Then 상한가 = iff(up5>=10000, up4, up5); Else If BP >= 1000 Then 상한가 = iff(up5>=5000, up5, up6); Else 상한가 = iff(up6>=1000, up6, up7); } } else if CodeCategory() == 8 || CodeCategory() == 9 then { // ETF 상한가 = up6; } } if sdate != sdate[1] then { entry = 0; Condition1 = false; if DayHigh(1) >= 상한가[1] Then Condition1 = true; } if MarketPosition != 0 and MarketPosition != MarketPosition[1] Then entry = entry+1; if MarketPosition == 0 and L > DayHigh*0.82 and Condition1 == true and entry < 1 Then { vol = Floor((금액*0.3)/min(NextBarOpen,DayHigh*0.82)); buy("b1",atlimit,DayHigh*0.82,vol); } if MarketPosition == 1 then { if MaxEntries == 1 and L > DayHigh*0.78 Then { vol = Floor((금액*0.3)/min(NextBarOpen,DayHigh*0.78)); buy("b2",atlimit,DayHigh*0.78,vol); } if MaxEntries == 2 and L > DayHigh*0.75 Then { vol = Floor((금액*0.3)/min(NextBarOpen,DayHigh*0.75)); buy("b3",atlimit,DayHigh*0.75,vol); } if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "bp1" Then Condition1 = true; if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "bp2" Then Condition2= true; if Condition1 == false Then ExitLong("bp1",atlimit,AvgEntryPrice*1.025,"",floor(MaxContracts*0.8),1); if Condition2 == false Then ExitLong("bp2",atlimit,AvgEntryPrice*1.035); if MaxEntries == 3 then ExitLong("bl",AtStop,AvgEntryPrice*0.92); } SetStopEndofday(151000); 즐거운 하루되세요 > chun0711 님이 쓴 글입니다. > 제목 : 문의드립니다 > 안녕하세요 아래 수식에서 상한가 다음날에만 매수진입 1차 or 2차 or 3차까지 매수가 되어서 청산이 되면 더이상 진입되지않게 수식 변경 부탁드립니다 예를들면 상한가 다음날에 1차 매수후 청산이 되면 더이상 진입금지 input : 금액(10000000); var : vol(0); if MarketPosition == 0 and L > DayHigh*0.82 Then { vol = Floor((금액*0.3)/min(NextBarOpen,DayHigh*0.82)); buy("b1",atlimit,DayHigh*0.82,vol); } if MarketPosition == 1 then { if MaxEntries == 1 and L > DayHigh*0.78 Then { vol = Floor((금액*0.3)/min(NextBarOpen,DayHigh*0.78)); buy("b2",atlimit,DayHigh*0.78,vol); } if MaxEntries == 2 and L > DayHigh*0.75 Then { vol = Floor((금액*0.3)/min(NextBarOpen,DayHigh*0.75)); buy("b3",atlimit,DayHigh*0.75,vol); } if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "bp1" Then Condition1 = true; if CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "bp2" Then Condition2= true; if Condition1 == false Then ExitLong("bp1",atlimit,AvgEntryPrice*1.025,"",floor(MaxContracts*0.8),1); if Condition2 == false Then ExitLong("bp2",atlimit,AvgEntryPrice*1.035); if MaxEntries == 3 then ExitLong("bl",AtStop,AvgEntryPrice*0.92); } SetStopEndofday(151000);