'범위를 벗어난 배열'에 대한 도움이 필요합니다.
페이지 1 중 912 12 마지막마지막
결과 1 - 10 / 13

실: '범위를 벗어난 배열'에 대한 도움이 필요합니다.

  1. #1
    얘들 아,

    내 눈은 피를 흘리고있다


    누구든지 내 코드에 무엇이 문제인지 알 수 있습니까? 지금 몇 시간 동안 노력해 왔습니다.

    차트에 첨부할 때 오류: 배열이 범위를 벗어났습니다. - 이 줄에서: double current_high = High[current_bar_index];

    삽입된 코드 int ThisBarTrade = 0;/ ----------------------------------------------- ------------------- /| 커스텀 인디케이터 초기화 기능 |/ ----------------------------------------------- ------------------- int OnInit() {/--- 표시기 버퍼 매핑/indi가 다시 로드될 때마다(즉, TF 간 전환, 새 적용 , etc ...),/현재 막대는 조건을 확인하지 않습니다. ThisBarTrade = 시간#91;0#93;;/--- return(INIT_SUCCEEDED); }/ ---------------------------------------------- -------------------- /| 고객 표시기 초기화 해제 기능 |/ ----------------------------------------------- ------------------- int deinit() { return(0); }/ ---------------------------------------------- -------------------- /| 사용자 지정 표시기 반복 기능 |/ ----------------------------------------------- ------------------- int OnCalculate(const int Rates_total, const int prev_calculated, const datetime time#91;#93;, const double open#91;#93; , const 이중 고#91;#93;, const 이중 저가#91;#93;, const 이중 닫기#91;#93;, const long tick_volume#91;#93;, const long volume#91;#93; , const int spread#91;#93;) {/--- 문자열 쌍#91;#93; 정수 길이 = getAvailableCurrencyPairs(쌍); if (바 != ThisBarTrade ) { ThisBarTrade = 바;/막대당 하나의 거래 기회만 보장/기호를 통해 루프 for(int i=0; i lt; length; i ) {/Alert(Pair #, i 1, : , pairs#91;i#93; );/인덱스 가져오기 int current_bar_index = iHighest(pairs#91;i#93;, PERIOD_M5, MODE_HIGH, 1, 0); int previous_bar_index = iHighest(쌍#91;i#93;, PERIOD_M5, MODE_HIGH, 1, 1); int current_bar_index_low = iLowest(쌍#91;i#93;, PERIOD_M5, MODE_LOW, 1, 0); int previous_bar_index_low = iLowest(pairs#91;i#93;, PERIOD_M5, MODE_LOW, 1, 1);/가격을 두배로 받기 current_high = High#91;current_bar_index#93;; 이중 이전_높음 = 높음#91;이전_바_색인#93;; 이중 current_low = 낮음#91;current_bar_index_low#93;; 이중 이전_낮음 = 낮음#91;이전_바_인덱스_낮음#93;;/논리 - 시작 if (( previous_low 1.0 * Point ) gt; current_low || ( previous_high - 1.0 * Point ) lt; current_high ) { Alert(Pair #, i 1, : , pairs#91;i#93; , 더 높거나 더 낮음); }/Logic - End }/for length }/if Bars/--- 다음 호출을 위해 prev_calculated 값을 반환 return(rates_total); }/ ---------------------------------------------- -------------------- // ----------------------------------------------- ------------------- int getAvailableCurrencyPairs(string availableCurrencyPairs#91;#93;) {/--- bool selected = false; const int symbolCount = SymbolsTotal(선택됨); int 통화 쌍 수; ArrayResize(availableCurrencyPairs,symbolsCount); 정수 idxCurrencyPair = 0; for(int idxSymbol = 0; idxSymbol lt; symbolCount; idxSymbol ) { 문자열 기호 = SymbolName(idxSymbol, 선택됨); 문자열 firstChar = StringSubstr(기호, 0, 1); if(firstChar != # StringLen(symbol) == 6) { availableCurrencyPairs#91;idxCurrencyPair #93; = 기호; } } 통화 쌍 수 = idxCurrencyPair; ArrayResize(availableCurrencyPairs, currencypairsCount); 반환 CurrencypairsCount; }/ ---------------------------------------------- -------------------- 클래스 CFix { } ExtFix;/디버깅하는 동안 강제 표현식 평가

  2. #2

    Quote 원래에 의해 게시 됨 ;
    {quote} iHigh 등은 int 인덱스가 아닌 실제 이중 가격을 반환합니다./Get Price 아래 섹션은 차트의 가격을 사용합니다. High[], Low[] 등은 현재 차트의 가격입니다. 따라서 위에서 얻은 모든 지수는 A/U 가격에만 사용됩니다. 총 8줄이 아닌 4줄이어야 합니다. current_high=iHigh(symbol,tf,index); 등
    감사합니다 비룬님!! 이제 다른 쌍도 스캔합니다. 맞습니까? 삽입된 코드 문자열 쌍#91;#93; 정수 길이 = getAvailableCurrencyPairs(쌍); if (바 != ThisBarTrade ) { ThisBarTrade = 바;/막대당 하나의 거래 기회만 보장/기호를 통해 루프 for(int i=0; i lt; length; i ) {/가격을 가져옵니다. double current_high = iHigh(pairs#91;i#93;, PERIOD_M5, 0 ); 이중 이전_높음 = iHigh(pairs#91;i#93;, PERIOD_M5, 1); 이중 전류_낮음 = iLow(pairs#91;i#93;, PERIOD_M5, 0); 이중 이전_낮음 = iLow(pairs#91;i#93;, PERIOD_M5, 1);/논리 - 시작 if (( previous_low 1.0 * Point ) gt; current_low || ( previous_high - 1.0 * Point ) lt; current_high ) {/Alert(Pair #, i 1, : , pairs#91;i# 93, , 더 높거나 더 낮음); }/논리 - 끝 }/길이에 대해 }/막대인 경우

  3. #3

    Quote 원래에 의해 게시 됨 ;
    {quote} 이런거 맞죠? 문자열 쌍[]; 정수 길이 = getAvailableCurrencyPairs(쌍); if (바 != ThisBarTrade ) { ThisBarTrade = 바;/막대당 하나의 거래 기회만 보장/기호를 통해 루프 for(int i=0; i lt; length; i ) {/Alert(Pair #, i 1, : , pairs);/인덱스 가져오기 int current_bar_index = iHigh(pairs, PERIOD_M5, 0); int previous_bar_index = iHigh(쌍, PERIOD_M5, 1); int current_bar_index_low = iLow(쌍, PERIOD_M5, 0); int previous_bar_index_low = iLow(쌍, PERIOD_M5, 1);/인쇄(쌍 : 쌍);...
    iHigh 등은 int 인덱스가 아닌 실제 이중 가격을 반환합니다./Get Price 아래 섹션은 차트의 가격을 사용합니다. High[], Low[] 등은 현재 차트의 가격입니다. 따라서 위에서 얻은 모든 지수는 A/U 가격에만 사용됩니다. 총 8줄이 아닌 4줄이어야 합니다. current_high=iHigh(symbol,tf,index); 등

  4. #4
    Quote 원래에 의해 게시 됨 ;
    {quot}네 맞아요, 너무 과도하게 생각했는데 제가 이런 문제를 겪었을 때 같아요
    바꿔보도록 할게요
    이런거 맞지? 삽입된 코드 문자열 쌍#91;#93; 정수 길이 = getAvailableCurrencyPairs(쌍); if (바 != ThisBarTrade ) { ThisBarTrade = 바;/막대당 하나의 거래 기회만 보장/기호를 통해 루프 for(int i=0; i lt; length; i ) {/Alert(Pair #, i 1, : , pairs#91;i#93; );/인덱스 가져오기 int current_bar_index = iHigh(pairs#91;i#93;, PERIOD_M5, 0); int previous_bar_index = iHigh(쌍#91;i#93;, PERIOD_M5, 1); int current_bar_index_low = iLow(쌍#91;i#93;, PERIOD_M5, 0); int previous_bar_index_low = iLow(pairs#91;i#93;, PERIOD_M5, 1);/인쇄(쌍: 쌍#91;i#93;/가격을 두배로 받기 current_high = High#91;current_bar_index#93;; 이중 이전_높음 = 높음#91;이전_바_색인#93;; 이중 current_low = 낮음#91;current_bar_index_low#93;; 이중 이전_낮음 = 낮음#91;이전_바_인덱스_낮음#93;;/논리 - 시작 if (( previous_low 1.0 * Point ) gt; current_low || ( previous_high - 1.0 * Point ) lt; current_high ) {/Alert(Pair #, i 1, : , pairs#91;i# 93, , 더 높거나 더 낮음); }/논리 - 끝 }/길이에 대해 }/막대인 경우

  5. #5
    Quote 원래에 의해 게시 됨 ;
    단일 막대에 iHighest/iLowest를 사용하는 이유는 무엇입니까? (...,1,0) cohl 배열을 직접 사용하십시오. 의도한 것인지 아닌지는 모르겠지만 다른 쌍의 최고/최저를 취한 다음 aud/usd 배열에서만 해당 막대 인덱스를 사용합니다. 다른 기호를 확인하는 경우 iHigh, iLow 등을 사용해야 합니다.
    Jeah u r right, 내가 이런 문제를 겪었을 때 너무 과신한 것 같아
    바꿔보도록 할게요

  6. #6
    Quote 원래에 의해 게시 됨 ;
    {quote} 클래식에서 1이 누락되었습니다. 배열에서 벗어났습니다. 루프가 너무 많이 계산되어 1이 넘어갔을 가능성이 더 큽니다. 실제로 쌍[i]이 있는지 확인하십시오. 더 많이 계산했을 가능성이 높습니다.
    getAvailableCurrencyPairs(pairs) 기능을 사용하여 자동으로 수행될 때 어떻게 너무 많이 계산될 수 있습니까? 어머, 어떻게 그런 일이
    , 오류가 사라지고 코드에서 아무 것도 변경하지 않았습니다. 항상 indi를 첨부할 때 동일한 브로커, 동일한 쌍, 동일한 차트. 삽입된 코드 int ThisBarTrade = 0;/ ----------------------------------------------- ------------------- /| 커스텀 인디케이터 초기화 기능 |/ ----------------------------------------------- ------------------- int OnInit() {/--- 표시기 버퍼 매핑/indi가 다시 로드될 때마다(즉, TF 간 전환, 새 적용 , etc ...),/현재 막대는 조건을 확인하지 않습니다. ThisBarTrade = 시간#91;0#93;;/--- return(INIT_SUCCEEDED); }/ ---------------------------------------------- -------------------- /| 고객 표시기 초기화 해제 기능 |/ ----------------------------------------------- ------------------- int deinit() { return(0); }/ ---------------------------------------------- -------------------- /| 사용자 지정 표시기 반복 기능 |/ ----------------------------------------------- ------------------- int OnCalculate(const int Rates_total, const int prev_calculated, const datetime time#91;#93;, const double open#91;#93; , const 이중 고#91;#93;, const 이중 저가#91;#93;, const 이중 닫기#91;#93;, const long tick_volume#91;#93;, const long volume#91;#93; , const int spread#91;#93 {/--- 문자열 쌍#91;#93; 정수 길이 = getAvailableCurrencyPairs(쌍); if (바 != ThisBarTrade ) { ThisBarTrade = 바;/막대당 하나의 거래 기회만 보장/기호를 통해 루프 for(int i=0; i lt; length; i ) {/Alert(Pair #, i 1, : , pairs#91;i#93; );/인덱스 가져오기 int current_bar_index = iHighest(pairs#91;i#93;, PERIOD_M5, MODE_HIGH, 1, 0); int previous_bar_index = iHighest(쌍#91;i#93;, PERIOD_M5, MODE_HIGH, 1, 1); int current_bar_index_low = iLowest(쌍#91;i#93;, PERIOD_M5, MODE_LOW, 1, 0); int previous_bar_index_low = iLowest(pairs#91;i#93;, PERIOD_M5, MODE_LOW, 1, 1); 인쇄(쌍: 쌍#91;i#93;/가격을 두배로 받기 current_high = High#91;current_bar_index#93;; 이중 이전_높음 = 높음#91;이전_바_색인#93;; 이중 current_low = 낮음#91;current_bar_index_low#93;; 이중 이전_낮음 = 낮음#91;이전_바_인덱스_낮음#93;;/논리 - 시작 if (( previous_low 1.0 * Point ) gt; current_low || ( previous_high - 1.0 * Point ) lt; current_high ) {/Alert(Pair #, i 1, : , pairs#91;i# 93, , 더 높거나 더 낮음); }/논리 - 끝}/for length }/if Bars/--- 다음 호출을 위해 prev_calculated 값을 반환 return(rates_total); }/ ---------------------------------------------- -------------------- / -------------------------- ---------------------------------------- int getAvailableCurrencyPairs(string availableCurrencyPairs#91;# 93 {/--- 부울 선택 = 거짓; const int symbolCount = SymbolsTotal(선택됨); int 통화 쌍 수; ArrayResize(availableCurrencyPairs,symbolsCount); 정수 idxCurrencyPair = 0; for(int idxSymbol = 0; idxSymbol lt; symbolCount; idxSymbol ) { 문자열 기호 = SymbolName(idxSymbol, 선택됨); 문자열 firstChar = StringSubstr(기호, 0, 1); if(firstChar != # StringLen(symbol) == 6) { availableCurrencyPairs#91;idxCurrencyPair #93; = 기호; } } 통화 쌍 수 = idxCurrencyPair; ArrayResize(availableCurrencyPairs, currencypairsCount); 반환 CurrencypairsCount; }/ ---------------------------------------------- -------------------- 클래스 CFix { } ExtFix;/디버깅하는 동안 강제 표현식 평가

  7. #7
    단일 막대에 iHighest/iLowest를 사용하는 이유는 무엇입니까? (...,1,0) cohl 배열을 직접 사용하십시오. 의도한 것인지 아닌지 모르겠지만 다른 쌍의 최고/최저를 취한 다음 해당 막대 인덱스를 aud/usd 배열에만 사용합니다. 다른 기호를 확인하는 경우 iHigh, iLow 등을 사용해야 합니다.

  8. #8
    Quote 원래에 의해 게시 됨 ;
    마지막 하나뿐인 것 같습니다 -1
    {영상}
    1이 누락된 클래식 - 배열을 벗어났습니다. 루프가 너무 많이 계산되어 1이 넘어갔을 가능성이 더 큽니다. 실제로 쌍[i]이 있는지 확인하십시오. 더 많이 계산했을 가능성이 높습니다. Pair[i]가 무엇인지 출력하고 실제로 값이 있는지 확인하십시오.

  9. #9
    1 첨부 파일 -1이 마지막에 있는 것 같습니다.


  10. #10
    예, 그것은 -1이라고 말하면서 어떻게 수정합니까? 차트에 양초가 있는데 어떻게 -1이 될 수 있습니까?

게시 권한

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
쿠키 정책
쿠키 정책: koreaforex 웹사이트는 쿠키를 사용하며, 웹사이트를 사용자는 쿠키 사용에 동의하는 것입니다. 자세한 정보는 '쿠키 공개' 를 읽어주십시오.