커뮤니티

시초가 시스템식 수정

프로필 이미지
조민철
2013-12-04 08:07:16
167
글번호 70096
답변완료
항상 감사드립니다 1.아래 시스템식의 첫신호(B1,S1)의 진입시기를 시초가에 발생하도록 수정부탁드립니다 시초가진입이 안된다면 시초가에 나오는 신호를 기준으로 바로 시장가로 진입 2.첫신호(B1,S1)에만 적용되는 청산식을 만들고 싶습니다 var : cnt(0),count(0); var1 = ma(c,9); var2 = ma(c,26); if CrossDown(var1,var2) Then value1 = var2; if var2 < value1 Then value1 = var2; #매도라인# if CrossUp(var1,var2) Then value2 = var2; if var2 > value2 Then value2 = var2; #매수라인# value3 = var2; if date != date[1] Then{ value11 = value1[1]; value21 = value2[1]; value31 = value3[1]; } count = 0; for cnt = 0 to 20{ if sdate == EntryDate(cnt) Then count = count+1; } if count == 0 and dayopen > value2 and value1==value11 Then buy("B1"); if count == 1 Then{ if MarketPosition == 1 and MarketPosition != MarketPosition[1] Then Condition3 = false; if MarketPosition == 1 and Condition3 == false and value2 > value1 and value1 == value1[1] Then{ value7 = value1; Condition3 = True; } } if count >= 1 and Condition3 == true Then{ if crossup(c,value7) Then buy("Bb1"); if CrossDown(c,value7) Then sell("Bs1"); } if count == 0 and DayOpen < value1 and value2==value21 Then sell("S1"); if count == 1 Then{ if MarketPosition == -1 and MarketPosition != MarketPosition[1] Then Condition2 = false; if MarketPosition == -1 and Condition2 == false and value2 >= value1 and value2 == value2[1] Then{ value6 = value2; Condition2 = true; } } if count >= 1 and Condition2 == true Then{ if crossup(c,value6) Then buy("Sb1"); if CrossDown(c,value6) Then sell("Ss1"); } 감사합니다
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2013-12-04 13:22:09

안녕하세요 예스스탁입니다. 시초가에 신호를 내기위해서는 전일마지막봉에 if문을 만족시켜 봉이 완성되는 다음봉(다음발) 시가에 주문이 나가게 해야 하는데 진입수식안에 전일마지막봉과 현재봉의 value1이나 value2값이 같다라는 내용은 처리가 되지 않습니다. value1 == value11 value2 == value21 해당 내용을 제외한다면 아래와 같이 작성하시면 됩니다. 포지션함수 중에 진입의 이름을 가져오는 함수가 있습니다. 일간 마지막봉은 시간으로만 지정이 됩니다. 사용하시는 차트의 주기에서 마지막봉의 시간을 확인하고 수정하시기 바랍니다. 1분봉, 5분봉에서 마지막봉인 15시 15분으로 지정되었습니다. if MarketPosition == 1 and (IsExitName("B1") == true or IsExitName("B11") == true) Then{ 청산내용 } if MarketPosition == -1 and (IsExitName("S1") == true or IsExitName("S11") == true) Then{ 청산내용 } 위와 같이 지정하시고 청산내용 작성하시면 됩니다. var : cnt(0),count(0); var1 = ma(c,9); var2 = ma(c,26); if CrossDown(var1,var2) Then value1 = var2; if var2 < value1 Then value1 = var2; #매도라인# if CrossUp(var1,var2) Then value2 = var2; if var2 > value2 Then value2 = var2; #매수라인# value3 = var2; if date != date[1] Then{ value11 = value1[1]; value21 = value2[1]; value31 = value3[1]; } count = 0; for cnt = 0 to 20{ if sdate == EntryDate(cnt) Then count = count+1; } if (count == 0 and dayopen > value2 and value1==value11) Then buy("B1"); if (stime == 151500 and NextBarOpen > value2) Then buy("B11"); if (count == 0 and DayOpen < value1 and value2==value21) Then sell("S1"); if (stime == 151500 and NextBarOpen < value1) Then sell("S11"); if count == 1 Then{ if MarketPosition == 1 and MarketPosition != MarketPosition[1] Then Condition3 = false; if MarketPosition == 1 and Condition3 == false and value2 > value1 and value1 == value1[1] Then{ value7 = value1; Condition3 = True; } } if count >= 1 and Condition3 == true Then{ if crossup(c,value7) Then buy("Bb1"); if CrossDown(c,value7) Then sell("Bs1"); } if count == 1 Then{ if MarketPosition == -1 and MarketPosition != MarketPosition[1] Then Condition2 = false; if MarketPosition == -1 and Condition2 == false and value2 >= value1 and value2 == value2[1] Then{ value6 = value2; Condition2 = true; } } if count >= 1 and Condition2 == true Then{ if crossup(c,value6) Then buy("Sb1"); if CrossDown(c,value6) Then sell("Ss1"); } if MarketPosition == 1 and (IsExitName("B1") == true or IsExitName("B11") == true) Then{ 청산내용 } if MarketPosition == -1 and (IsExitName("S1") == true or IsExitName("S11") == true) Then{ 청산내용 } 즐거운 하루되세요 > 조민철 님이 쓴 글입니다. > 제목 : 시초가 시스템식 수정 > 항상 감사드립니다 1.아래 시스템식의 첫신호(B1,S1)의 진입시기를 시초가에 발생하도록 수정부탁드립니다 시초가진입이 안된다면 시초가에 나오는 신호를 기준으로 바로 시장가로 진입 2.첫신호(B1,S1)에만 적용되는 청산식을 만들고 싶습니다 var : cnt(0),count(0); var1 = ma(c,9); var2 = ma(c,26); if CrossDown(var1,var2) Then value1 = var2; if var2 < value1 Then value1 = var2; #매도라인# if CrossUp(var1,var2) Then value2 = var2; if var2 > value2 Then value2 = var2; #매수라인# value3 = var2; if date != date[1] Then{ value11 = value1[1]; value21 = value2[1]; value31 = value3[1]; } count = 0; for cnt = 0 to 20{ if sdate == EntryDate(cnt) Then count = count+1; } if count == 0 and dayopen > value2 and value1==value11 Then buy("B1"); if count == 1 Then{ if MarketPosition == 1 and MarketPosition != MarketPosition[1] Then Condition3 = false; if MarketPosition == 1 and Condition3 == false and value2 > value1 and value1 == value1[1] Then{ value7 = value1; Condition3 = True; } } if count >= 1 and Condition3 == true Then{ if crossup(c,value7) Then buy("Bb1"); if CrossDown(c,value7) Then sell("Bs1"); } if count == 0 and DayOpen < value1 and value2==value21 Then sell("S1"); if count == 1 Then{ if MarketPosition == -1 and MarketPosition != MarketPosition[1] Then Condition2 = false; if MarketPosition == -1 and Condition2 == false and value2 >= value1 and value2 == value2[1] Then{ value6 = value2; Condition2 = true; } } if count >= 1 and Condition2 == true Then{ if crossup(c,value6) Then buy("Sb1"); if CrossDown(c,value6) Then sell("Ss1"); } 감사합니다