커뮤니티

안녕하세요.

프로필 이미지
희망벌
2010-12-03 07:39:57
579
글번호 34048
답변완료
안녕하세요? 수식이 너무 엉터리 같아서 창피하지만 수정 좀 부탁 드릴께요. 지난번 작성해주신 피라미딩 진입식에 조금더 보완하고 싶습니다. 부탁1. //진입조건1 or 2 or...중 1차 진입 이후에 다시 추가로 진입할 때 직전 진입가격을 기억해 두었다가 그 진입가격 이상에서만 진입이 가능하게 해 주세요. 예컨대 2차진입시는 1차진입가격 보다 클때만 ...3차진입시에는 2차진입가격 이상에서...4차는 > 3차 ...(물타기 금지) 2. 청산은 언제나 직전 진입가격 보다 -10 % 낮으면 전량 청산 예컨대 3차례 진입이 있었다면 3차 진입가격 보다 -10%이면 현재 보유량을 전부 청산...하고, 다시 진입신호 나오면 반복... 또는 직전매수가격 이후 C가 < lowest(L,5)하는 방법도 괜잖을 것 같네요. 두가지를 모두 구현해 보고 싶습니다 . ## 함수중에 EntryPrice(N)가 있지만 피라미딩에서는 적용이 안된다고 하여 변수를 대입해 보았지만 실패 했습니다. Input : P1(5), p2(12), p3(24), p4(50), p5(80), openpositionprofit(0.1); Input : 투자원금(5000000) ; Var : value1(0), value2(0), value3(0); var : 피봇(0), 저항1(0), 저항2(0),저항3(0),지지1(0),지지2(0),지지3(0); 피봇 = (dayhigh(1)+dayLow(1)+dayclose(1)) /3; 저항1 = 2* 피봇 - dayLow (1); 저항2 = 피봇 + dayhigh(1)-dayLow(1); 지지1 = 2* 피봇 -dayhigh(1); 지지2 = 피봇 - dayhigh(1)+dayLow(1); var1 = ma(c, p1); var2 = ma(c, p2); var3 = ma(c, p3); var4 = ma(c, p4); var5 = ma(c, p5); var6 = ma(H, p1); var7 = ma(H, p2); var8 = ma(H, p3); var9 = ma(H, p4); var10 = ma(H, p5); value1 = Disparity(P1) ; value2 = Disparity(P2) ; value3 = Disparity(P3) ; value4 = Disparity(P4) ; value5 = Disparity(P5) ; ## 매수조건 1 IF crossup(value2, 98) or crossup(value2, 97) OR crossup(value2, 96) or crossup(value2, 95) OR crossup(value2, 94) or crossup(value2, 93) OR crossup(value2, 92) Or crossup(value2, 91) OR crossup(value2, 90) or crossup(value2, 89) OR crossup(value2, 88) Or crossup(value2, 87) OR crossup(value2, 86) or crossup(value2, 85) OR crossup(value2, 84) or crossup(value2, 83) OR crossup(value2, 82) or crossup(value2, 81) OR crossup(value2, 80) or ##피봇 1.5 ( ( crossup(c, 저항1) or crossup(c,피봇)) and crossup(value2, 95 )) THEN { // 피라미딩 if CurrentEntries >= 0 then { if crossup(var6,var2) then buy("처음", atlimit ,L, int(투자원금*0.1/C/100000)); } if CurrentEntries >= 0 and openpositionprofit >= 0 then{ if crossup(value2, 92) Or crossup(value2, 91) OR crossup(value2, 90) or crossup(value2, 89) OR value2 <= 80 then buy("둘째", atlimit, L, int(투자원금*0.15/C/100000));} if CurrentEntries >= 0 and openpositionprofit > 0 and var6 > var2 and var7>var3 and (var2[1]<=var2[1] or var7[1] <= var3[1]) then { buy("세째",atlimit , L, int(투자원금*0.15/C/100000)); } if CurrentEntries >= 0 and openpositionprofit >= 0 and crossup(value3 , 88) and c > var1 //and var3 > var3[1] then{ buy("계속",atlimit , c, int(투자원금*0.15/C/100000)); }} // 청산조건 IF MARKETPOSITION ==1 then{ crossdown(value2 , 103) OR crossdown(value2 , 104) OR crossdown(value2 , 105) OR crossdown(value2 , 106) OR crossdown(value2 , 107) OR crossdown(value2 , 108) OR crossdown(value2 , 109) OR crossdown(value2 , 110) OR crossdown(value2 , 111) OR crossdown(value2 , 112) OR crossdown(value2 , 113) OR crossdown(value2 , 114) OR crossdown(value2 , 115) OR crossdown(value2 , 116) OR crossdown(value2 , 117) OR crossdown(value2 , 118) OR crossdown(value2 , 119) OR crossdown(value2 , 120) OR crossdown(value2 , 121) OR crossdown(value2 , 122) OR crossdown(value2 , 123) OR crossdown(value2 , 124) OR crossdown(value2 , 125) OR crossdown(value2 , 126) ; } //분할청산 // THEN { if MarketPosition == 1 Then{ if CurrentContracts > CurrentContracts[1] Then{ #진입에 의해 수량이 상승할때마다 청산비율 재계산 value11 = CurrentContracts; value12 = int(value11*0.4); value13 = int(value11*0.5); value14 = value11-value12-value13;} if CurrentContracts == value11 and var6 > var2 and openpositionprofit > 0.5 and crossdown(value2 , 106) OR crossdown(value2 , 107) OR crossdown(value2 , 108) Then { #최초진입이나 추가진입이후 첫청산 ExitLong("bx1",onclose,def,"",value12,1);} if CurrentContracts == value11-value12 and barssinceexit +2 and var6 < var2 and var7 < var3 and (var2[1]>=var2[1] or var7[1] >= var3[1]) and openpositionprofit > 0.9 and crossdown(value2 , 106) OR crossdown(value2 , 107) OR crossdown(value2 , 108) Then{ #최초진입이나 추가진입이후 두번째 청산 ExitLong("bx2",onclose,def,"",value13,1); } if CurrentContracts == value14 and barssinceexit +2 and openpositionprofit > 0.9 and crossdown(value2 , 110) OR crossdown(value2 , 111) OR crossdown(value2 , 112) OR crossdown(value2 , 113) OR crossdown(value2 , 114) OR crossdown(value2 , 115) OR crossdown(value2 , 116) OR crossdown(value2 , 117) OR crossdown(value2 , 118) OR crossdown(value2 , 119) OR crossdown(value2 , 120) OR crossdown(value2 , 121) OR crossdown(value2 , 122) OR crossdown(value2 , 123) OR crossdown(value2 , 124) OR crossdown(value2 , 125) OR crossdown(value2 , 126) Then{ ##최초진입이나 추가진입이후 세번째 청산 ExitLong("bx3");}} if marketposition == 1 and barssinceentry + 2 And crossdown( var1 , var8) Then exitlong("손절", onclose,def,"세째"); setstopendofday(150000);
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2010-12-03 14:58:23

안녕하세요 예스스탁입니다. Input : P1(5), p2(12), p3(24), p4(50), p5(80), openpositionprofit(0.1); Input : 투자원금(5000000) ; Var : value1(0), value2(0), value3(0); var : 피봇(0), 저항1(0), 저항2(0),저항3(0),지지1(0),지지2(0),지지3(0); 피봇 = (dayhigh(1)+dayLow(1)+dayclose(1)) /3; 저항1 = 2* 피봇 - dayLow (1); 저항2 = 피봇 + dayhigh(1)-dayLow(1); 지지1 = 2* 피봇 -dayhigh(1); 지지2 = 피봇 - dayhigh(1)+dayLow(1); var1 = ma(c, p1); var2 = ma(c, p2); var3 = ma(c, p3); var4 = ma(c, p4); var5 = ma(c, p5); var6 = ma(H, p1); var7 = ma(H, p2); var8 = ma(H, p3); var9 = ma(H, p4); var10 = ma(H, p5); value1 = Disparity(P1) ; value2 = Disparity(P2) ; value3 = Disparity(P3) ; value4 = Disparity(P4) ; value5 = Disparity(P5) ; if MarketPosition == 1 Then{ if CurrentContracts > CurrentContracts[1] then{ var91 = c[1]; var92 = lowest(L,5)[1]; } } ## 매수조건 1 IF crossup(value2, 98) or crossup(value2, 97) OR crossup(value2, 96) or crossup(value2, 95) OR crossup(value2, 94) or crossup(value2, 93) OR crossup(value2, 92) Or crossup(value2, 91) OR crossup(value2, 90) or crossup(value2, 89) OR crossup(value2, 88) Or crossup(value2, 87) OR crossup(value2, 86) or crossup(value2, 85) OR crossup(value2, 84) or crossup(value2, 83) OR crossup(value2, 82) or crossup(value2, 81) OR crossup(value2, 80) or ##피봇 1.5 ( ( crossup(c, 저항1) or crossup(c,피봇)) and crossup(value2, 95 )) THEN { // 피라미딩 if CurrentEntries >= 0 and (MarketPosition == 0 or (MarketPosition == 1 and C > var91)) then { if crossup(var6,var2) then buy("처음", atlimit ,L, int(투자원금*0.1/C/100000)); } if CurrentEntries >= 0 and openpositionprofit >= 0 then{ if crossup(value2, 92) Or crossup(value2, 91) OR crossup(value2, 90) or crossup(value2, 89) OR value2 <= 80 then buy("둘째", atlimit, L, int(투자원금*0.15/C/100000));} if CurrentEntries >= 0 and openpositionprofit > 0 and var6 > var2 and var7>var3 and (var2[1]<=var2[1] or var7[1] <= var3[1]) then { buy("세째",atlimit , L, int(투자원금*0.15/C/100000)); } if CurrentEntries >= 0 and openpositionprofit >= 0 and crossup(value3 , 88) and c > var1 //and var3 > var3[1] then{ buy("계속",atlimit , c, int(투자원금*0.15/C/100000)); }} // 청산조건 IF MARKETPOSITION ==1 then{ crossdown(value2 , 103) OR crossdown(value2 , 104) OR crossdown(value2 , 105) OR crossdown(value2 , 106) OR crossdown(value2 , 107) OR crossdown(value2 , 108) OR crossdown(value2 , 109) OR crossdown(value2 , 110) OR crossdown(value2 , 111) OR crossdown(value2 , 112) OR crossdown(value2 , 113) OR crossdown(value2 , 114) OR crossdown(value2 , 115) OR crossdown(value2 , 116) OR crossdown(value2 , 117) OR crossdown(value2 , 118) OR crossdown(value2 , 119) OR crossdown(value2 , 120) OR crossdown(value2 , 121) OR crossdown(value2 , 122) OR crossdown(value2 , 123) OR crossdown(value2 , 124) OR crossdown(value2 , 125) OR crossdown(value2 , 126) ; } //분할청산 // THEN { if MarketPosition == 1 Then{ if CurrentContracts > CurrentContracts[1] Then{ #진입에 의해 수량이 상승할때마다 청산비율 재계산 value11 = CurrentContracts; value12 = int(value11*0.4); value13 = int(value11*0.5); value14 = value11-value12-value13;} if CurrentContracts == value11 and var6 > var2 and openpositionprofit > 0.5 and crossdown(value2 , 106) OR crossdown(value2 , 107) OR crossdown(value2 , 108) Then { #최초진입이나 추가진입이후 첫청산 ExitLong("bx1",onclose,def,"",value12,1);} if CurrentContracts == value11-value12 and barssinceexit +2 and var6 < var2 and var7 < var3 and (var2[1]>=var2[1] or var7[1] >= var3[1]) and openpositionprofit > 0.9 and crossdown(value2 , 106) OR crossdown(value2 , 107) OR crossdown(value2 , 108) Then{ #최초진입이나 추가진입이후 두번째 청산 ExitLong("bx2",onclose,def,"",value13,1); } if CurrentContracts == value14 and barssinceexit +2 and openpositionprofit > 0.9 and crossdown(value2 , 110) OR crossdown(value2 , 111) OR crossdown(value2 , 112) OR crossdown(value2 , 113) OR crossdown(value2 , 114) OR crossdown(value2 , 115) OR crossdown(value2 , 116) OR crossdown(value2 , 117) OR crossdown(value2 , 118) OR crossdown(value2 , 119) OR crossdown(value2 , 120) OR crossdown(value2 , 121) OR crossdown(value2 , 122) OR crossdown(value2 , 123) OR crossdown(value2 , 124) OR crossdown(value2 , 125) OR crossdown(value2 , 126) Then{ ##최초진입이나 추가진입이후 세번째 청산 ExitLong("bx3");}} if marketposition == 1 and barssinceentry + 2 And crossdown( var1 , var8) Then exitlong("손절", onclose,def,"세째"); if MarketPosition == 1 Then{ ExitLong("bxx1",AtStop,var91*0.9);#직전진입가 ExitLong("bxx2",AtStop,var92*0.9);#직전진입봉 기준 5개봉 최저가 } setstopendofday(150000); 즐거운 하루되세요 > 희망벌 님이 쓴 글입니다. > 제목 : 안녕하세요. > 안녕하세요? 수식이 너무 엉터리 같아서 창피하지만 수정 좀 부탁 드릴께요. 지난번 작성해주신 피라미딩 진입식에 조금더 보완하고 싶습니다. 부탁1. //진입조건1 or 2 or...중 1차 진입 이후에 다시 추가로 진입할 때 직전 진입가격을 기억해 두었다가 그 진입가격 이상에서만 진입이 가능하게 해 주세요. 예컨대 2차진입시는 1차진입가격 보다 클때만 ...3차진입시에는 2차진입가격 이상에서...4차는 > 3차 ...(물타기 금지) 2. 청산은 언제나 직전 진입가격 보다 -10 % 낮으면 전량 청산 예컨대 3차례 진입이 있었다면 3차 진입가격 보다 -10%이면 현재 보유량을 전부 청산...하고, 다시 진입신호 나오면 반복... 또는 직전매수가격 이후 C가 < lowest(L,5)하는 방법도 괜잖을 것 같네요. 두가지를 모두 구현해 보고 싶습니다 . ## 함수중에 EntryPrice(N)가 있지만 피라미딩에서는 적용이 안된다고 하여 변수를 대입해 보았지만 실패 했습니다. Input : P1(5), p2(12), p3(24), p4(50), p5(80), openpositionprofit(0.1); Input : 투자원금(5000000) ; Var : value1(0), value2(0), value3(0); var : 피봇(0), 저항1(0), 저항2(0),저항3(0),지지1(0),지지2(0),지지3(0); 피봇 = (dayhigh(1)+dayLow(1)+dayclose(1)) /3; 저항1 = 2* 피봇 - dayLow (1); 저항2 = 피봇 + dayhigh(1)-dayLow(1); 지지1 = 2* 피봇 -dayhigh(1); 지지2 = 피봇 - dayhigh(1)+dayLow(1); var1 = ma(c, p1); var2 = ma(c, p2); var3 = ma(c, p3); var4 = ma(c, p4); var5 = ma(c, p5); var6 = ma(H, p1); var7 = ma(H, p2); var8 = ma(H, p3); var9 = ma(H, p4); var10 = ma(H, p5); value1 = Disparity(P1) ; value2 = Disparity(P2) ; value3 = Disparity(P3) ; value4 = Disparity(P4) ; value5 = Disparity(P5) ; ## 매수조건 1 IF crossup(value2, 98) or crossup(value2, 97) OR crossup(value2, 96) or crossup(value2, 95) OR crossup(value2, 94) or crossup(value2, 93) OR crossup(value2, 92) Or crossup(value2, 91) OR crossup(value2, 90) or crossup(value2, 89) OR crossup(value2, 88) Or crossup(value2, 87) OR crossup(value2, 86) or crossup(value2, 85) OR crossup(value2, 84) or crossup(value2, 83) OR crossup(value2, 82) or crossup(value2, 81) OR crossup(value2, 80) or ##피봇 1.5 ( ( crossup(c, 저항1) or crossup(c,피봇)) and crossup(value2, 95 )) THEN { // 피라미딩 if CurrentEntries >= 0 then { if crossup(var6,var2) then buy("처음", atlimit ,L, int(투자원금*0.1/C/100000)); } if CurrentEntries >= 0 and openpositionprofit >= 0 then{ if crossup(value2, 92) Or crossup(value2, 91) OR crossup(value2, 90) or crossup(value2, 89) OR value2 <= 80 then buy("둘째", atlimit, L, int(투자원금*0.15/C/100000));} if CurrentEntries >= 0 and openpositionprofit > 0 and var6 > var2 and var7>var3 and (var2[1]<=var2[1] or var7[1] <= var3[1]) then { buy("세째",atlimit , L, int(투자원금*0.15/C/100000)); } if CurrentEntries >= 0 and openpositionprofit >= 0 and crossup(value3 , 88) and c > var1 //and var3 > var3[1] then{ buy("계속",atlimit , c, int(투자원금*0.15/C/100000)); }} // 청산조건 IF MARKETPOSITION ==1 then{ crossdown(value2 , 103) OR crossdown(value2 , 104) OR crossdown(value2 , 105) OR crossdown(value2 , 106) OR crossdown(value2 , 107) OR crossdown(value2 , 108) OR crossdown(value2 , 109) OR crossdown(value2 , 110) OR crossdown(value2 , 111) OR crossdown(value2 , 112) OR crossdown(value2 , 113) OR crossdown(value2 , 114) OR crossdown(value2 , 115) OR crossdown(value2 , 116) OR crossdown(value2 , 117) OR crossdown(value2 , 118) OR crossdown(value2 , 119) OR crossdown(value2 , 120) OR crossdown(value2 , 121) OR crossdown(value2 , 122) OR crossdown(value2 , 123) OR crossdown(value2 , 124) OR crossdown(value2 , 125) OR crossdown(value2 , 126) ; } //분할청산 // THEN { if MarketPosition == 1 Then{ if CurrentContracts > CurrentContracts[1] Then{ #진입에 의해 수량이 상승할때마다 청산비율 재계산 value11 = CurrentContracts; value12 = int(value11*0.4); value13 = int(value11*0.5); value14 = value11-value12-value13;} if CurrentContracts == value11 and var6 > var2 and openpositionprofit > 0.5 and crossdown(value2 , 106) OR crossdown(value2 , 107) OR crossdown(value2 , 108) Then { #최초진입이나 추가진입이후 첫청산 ExitLong("bx1",onclose,def,"",value12,1);} if CurrentContracts == value11-value12 and barssinceexit +2 and var6 < var2 and var7 < var3 and (var2[1]>=var2[1] or var7[1] >= var3[1]) and openpositionprofit > 0.9 and crossdown(value2 , 106) OR crossdown(value2 , 107) OR crossdown(value2 , 108) Then{ #최초진입이나 추가진입이후 두번째 청산 ExitLong("bx2",onclose,def,"",value13,1); } if CurrentContracts == value14 and barssinceexit +2 and openpositionprofit > 0.9 and crossdown(value2 , 110) OR crossdown(value2 , 111) OR crossdown(value2 , 112) OR crossdown(value2 , 113) OR crossdown(value2 , 114) OR crossdown(value2 , 115) OR crossdown(value2 , 116) OR crossdown(value2 , 117) OR crossdown(value2 , 118) OR crossdown(value2 , 119) OR crossdown(value2 , 120) OR crossdown(value2 , 121) OR crossdown(value2 , 122) OR crossdown(value2 , 123) OR crossdown(value2 , 124) OR crossdown(value2 , 125) OR crossdown(value2 , 126) Then{ ##최초진입이나 추가진입이후 세번째 청산 ExitLong("bx3");}} if marketposition == 1 and barssinceentry + 2 And crossdown( var1 , var8) Then exitlong("손절", onclose,def,"세째"); setstopendofday(150000);