초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 1238

 
Alexey Viktorov :

행의 첫 부분과 전체 질문은 어떻습니까?

글쎄요, 우리는 프로그래머입니다. 침대 옆 탁자 위의 가득 찬 유리잔과 그 모든 것...

그러나 세 가지 가능한 시나리오와 그 동안 주요 지표 계산 주기에서 어떤 일이 발생하는지 설명했습니다.

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

초보자의 질문 MQL5 MT5 MetaTrader 5

Artyom Trishkin , 2020.08.06 15:17

rate_total - prev_calculates 는 매우 효율적인 구성입니다.

  • 0이면 현재 막대에서 눈금으로 계산하는 것을 의미합니다.
  • 1과 같으면 새로운 막대를 의미하며 과거와 현재의 두 막대가 계산됩니다.
  • 1보다 크면 첫 번째 출시 또는 과거 데이터의 변경을 의미합니다.
우리는 한계를 계산합니다. 그리고 한계에서 0보다 크거나 같은 주기에서 지표 데이터를 계산합니다. 음, limit = Rates_total - prev_calculates를 계산할 때 제한이 무엇인지 스스로 계산하십시오.

네 번째 상황도 0보다 작을 가능성이 매우 높습니다. 그러나 for(int i=limit; i>=0; i--) ...

생각만 하고 싶은 사람은 거의 없습니다. 일반적으로 복사 붙여넣기만 하면 됩니다. 따라서 첫 번째 실행 및 기록 변경은 limit>1일 때입니다. 즉, 이러한 상황에서 첫 번째 실행에 대해 작성해야 하며 prev_calculated가 0인지 확인하지 않아야 합니다.

 
Сергей Таболин :

Alexey, 관심이 있어요))) 하지만 오류가 표시되지 않습니다! 그리고 배우는 것은 부끄러운 일이 아닙니다. 그리고 누군가가 더 똑똑하거나 더 경험이 많다면 나도 그것에 대해 아무런 문제가 없다고 봅니다.

방금 큰 양초 크기 입력 매개변수가 있는 표시기를 시작했습니다. 글쎄, 더 적은 양초를 가지고

양초의 모든 가격은 표시기 버퍼 에서 계산 및 인쇄됩니다. 여전히 정확합니다. 그리고 그림도 없었고 없었습니다. 그리고 왜 그런지 이해가 안됩니다...

나는 당신에게 제안했다

알렉세이 빅토로프 :

……… N 숫자 뒤의 막대를 강조 표시하거나 마지막으로 닫은 하나 이상의 막대를 강조 표시하여 시작합니다. 당신은 그것을 시도 했습니까? 렌더링?

마지막으로 닫힌 막대를 하나 이상 강조 표시하여 시작하도록 다시 한 번 제안합니다. 긍정적 인 결과를 얻은 후에 만 \u200b\u200b계산 및 조건으로 진행하십시오.

 
Alexey Viktorov :

나는 당신에게 제안했다

마지막으로 닫힌 막대를 하나 이상 강조 표시하여 시작하도록 다시 한 번 제안합니다. 긍정적 인 결과를 얻은 후에 만 \u200b\u200b계산 및 조건으로 진행하십시오.

내가 당신을 이해하지 못하는 것 같아 유감입니다... 당신은 어떤 바를 꼽으라고 제안합니까? 어느 것이 나를 위해 형성 되었습니까? 아니면 차트에?

차트에 있다면 선험적으로 필요하지 않습니다. 모든 TF에서 표시기는 동일한 것으로 간주됩니다.

이전 계산은 H1에 있었고 지금은 H4에 있습니다. 결과는 일대일입니다.

 2020.08 . 08 11 : 06 : 14.580 newCandles (USDJPY,H4)  ~~~~ Предварительный расчёт индикатора.
2020.08 . 08 11 : 06 : 14.789 newCandles (USDJPY,H4)   2019.01 . 02 06 : 00 : 00 >>> Свеча 00000 >> open = 109.419 hihg = 109.462 low = 105.388 close = 105.388 > Сформирована за 122162 тика.
2020.08 . 08 11 : 06 : 15.230 newCandles (USDJPY,H4)   2019.01 . 03 00 : 41 : 15 >>> Свеча 00001 >> open = 105.388 hihg = 109.388 low = 105.268 close = 109.388 > Сформирована за 1336258 тиков.
2020.08 . 08 11 : 06 : 19.056 newCandles (USDJPY,H4)   2019.01 . 17 21 : 50 : 34 >>> Свеча 00002 >> open = 109.388 hihg = 112.398 low = 105.388 close = 105.388 > Сформирована за 11546466 тиков.
2020.08 . 08 11 : 06 : 20.788 newCandles (USDJPY,H4)   2019.08 . 09 18 : 57 : 55 >>> Свеча 00003 >> open = 105.388 hihg = 109.388 low = 104.453 close = 109.388 > Сформирована за 5400916 тиков.
2020.08 . 08 11 : 06 : 22.592 newCandles (USDJPY,H4)   2019.11 . 07 17 : 57 : 24 >>> Свеча 00004 >> open = 109.388 hihg = 112.225 low = 105.384 close = 105.384 > Сформирована за 5555641 тик.
2020.08 . 08 11 : 06 : 22.725 newCandles (USDJPY,H4)   2020.03 . 06 11 : 47 : 26 >>> Свеча 00005 >> open = 105.384 hihg = 105.732 low = 101.377 close = 101.377 > Сформирована за 272724 тика.
2020.08 . 08 11 : 06 : 22.822 newCandles (USDJPY,H4)   2020.03 . 09 15 : 37 : 48 >>> Свеча 00006 >> open = 101.377 hihg = 105.378 low = 101.187 close = 105.378 > Сформирована за 314847 тиков.
2020.08 . 08 11 : 06 : 23.736 newCandles (USDJPY,H4)   2020.03 . 10 21 : 05 : 27 >>> Свеча 00007 >> open = 105.378 hihg = 109.385 low = 103.094 close = 109.385 > Сформирована за 2045775 тиков.
2020.08 . 08 11 : 06 : 27.124 newCandles (USDJPY,H4)   2020.03 . 19 04 : 13 : 11 >>> Свеча 00008 >> open = 109.385 hihg = 111.711 low = 105.385 close = 105.385 > Сформирована за 10250092 тика.
2020.08 . 08 11 : 06 : 27.296 newCandles (USDJPY,H4)  ~~~~ Предварительный расчёт индикатора закончен.
 
Сергей Таболин :

나는 당신을 이해하지 못한다는 것이 유감입니다. 당신은 어떤 막대를 골라낼 것을 제안합니까? 어느 것이 나를 위해 형성 되었습니까? 아니면 차트에?

차트에 있다면 선험적으로 필요하지 않습니다. 모든 TF에서 표시기는 동일한 것으로 간주됩니다.

이전 계산은 H1에 있었고 지금은 H4에 있습니다. 결과는 일대일입니다.

Alexey는 처음에는 지표가 최소한 촛불을 끌도록 해야 한다고 말했습니다. 그들이 있는 방식. 적어도 현재 막대에서는. 이를 수행하는 방법 - 이해를 향한 첫 번째 단계가 지났다고 생각하십시오. 그러나 다른 매개 변수를 입력하고 정렬하는 것이 아니라 자신의 마음으로 밝혀지는 것이 바람직합니다.

그리고 여기서 "선험적으로 필요하다/필요하지 않다"? 네 가지 값만으로는 양초를 그릴 수 없기 때문에 정말 필요합니다.

 
Artyom Trishkin :

Alexey는 처음에는 지표가 최소한 촛불을 끌도록 해야 한다고 말했습니다. 그들이 있는 방식. 적어도 현재 막대에서는. 이를 수행하는 방법 - 이해를 향한 첫 번째 단계가 지났다고 생각하십시오. 그러나 다른 매개 변수를 입력하고 정렬하는 것이 아니라 자신의 마음으로 밝혀지는 것이 바람직합니다.

그리고 여기서 "선험적으로 필요하다/필요하지 않다"? 네 가지 값만으로는 양초를 그릴 수 없기 때문에 정말 필요합니다.

이해했다. 그럴게요. ...

 
안녕하세요 포럼입니다. 신호를 직렬로 수신하는 방법을 알려주세요. 예를 들어, 4시간 프레임에서 초기 값을 얻은 다음 매시간 15분을 가져오고 트랜잭션 입력이 최소한으로만 발생합니까? CodeBase 에서 빌린 코드
 //+------------------------------------------------------------------+
//| Search trading signals                                           |
//+------------------------------------------------------------------+
bool  SearchTradingSignals( void )
  {
    if (m_prev_bars==m_last_deal_in)  // on one bar - only one deal
       return ( true );
//---
    double  ma[];
    MqlRates  rates_1[],rates_2[],rates_3[],rates_4[];
    ArraySetAsSeries (ma, true );
    ArraySetAsSeries (rates_1, true );
    ArraySetAsSeries (rates_2, true );
    ArraySetAsSeries (rates_3, true );
    ArraySetAsSeries (rates_4, true );
    int  start_pos= 0 ,count= 3 ;
    if (!iGetArray(handle_iMA, 0 ,start_pos,count,ma) ||
       CopyRates (m_symbol.Name(),Inp_Timeframe_1,start_pos,count,rates_1)!=count ||
       CopyRates (m_symbol.Name(),Inp_Timeframe_2,start_pos,count,rates_2)!=count ||
       CopyRates (m_symbol.Name(),Inp_Timeframe_3,start_pos,count,rates_3)!=count ||
       CopyRates (m_symbol.Name(),Inp_Timeframe_4,start_pos,count,rates_4)!=count)
     {
       return ( false );
     }
    int  size_need_position= ArraySize (SPosition);
    if (size_need_position> 0 )
       return ( true );

    if ((rates_1[ 0 ].open<rates_1[ 0 ].close) && (rates_2[ 0 ].open<rates_2[ 0 ].close) &&
      (rates_3[ 0 ].open<rates_3[ 0 ].close) && (rates_4[ 0 ].open<rates_4[ 0 ].close) && ma[ 2 ]<ma[ 1 ] && ma[ 1 ]<ma[ 0 ])
     {
       if (!InpReverse)
        {
          if (InpTradeMode!=sell)
           {
             ArrayResize (SPosition,size_need_position+ 1 );
            SPosition[size_need_position].pos_type= POSITION_TYPE_BUY ;
             if (InpPrintLog)
                Print ( __FILE__ , " " , __FUNCTION__ , ", OK: " , "Signal BUY" );
             return ( true );
           }
        }
       else
        {
          if (InpTradeMode!=buy)
           {
             ArrayResize (SPosition,size_need_position+ 1 );
            SPosition[size_need_position].pos_type= POSITION_TYPE_SELL ;
             if (InpPrintLog)
                Print ( __FILE__ , " " , __FUNCTION__ , ", OK: " , "Signal SELL" );
             return ( true );
           }
        }
     }
    if ((rates_1[ 0 ].open>rates_1[ 0 ].close) && (rates_2[ 0 ].open>rates_2[ 0 ].close) &&
      (rates_3[ 0 ].open>rates_3[ 0 ].close) && (rates_4[ 0 ].open>rates_4[ 0 ].close) && ma[ 2 ]>ma[ 1 ] && ma[ 1 ]>ma[ 0 ])
     {
       if (!InpReverse)
        {
          if (InpTradeMode!=buy)
           {
             ArrayResize (SPosition,size_need_position+ 1 );
            SPosition[size_need_position].pos_type= POSITION_TYPE_SELL ;
             if (InpPrintLog)
                Print ( __FILE__ , " " , __FUNCTION__ , ", OK: " , "Signal SELL" );
             return ( true );
           }
        }
       else
        {
          if (InpTradeMode!=sell)
           {
             ArrayResize (SPosition,size_need_position+ 1 );
            SPosition[size_need_position].pos_type= POSITION_TYPE_BUY ;
             if (InpPrintLog)
                Print ( __FILE__ , " " , __FUNCTION__ , ", OK: " , "Signal BUY" );
             return ( true );
           }
        }
     }
//---
    return ( true );
  }
//+------------------------------------------------------------------+

Four Timeframes 2
Four Timeframes 2
  • www.mql5.com
На одном из таймфреймов (задается через параметр 'MA Trend ') создаётся трендовый индикатор iMA (Moving Average, MA). Именно этот индикатор будет работать в качестве трендового фильтра. Тренд определяется так: MA на трёх барах (#2, #1 и #0) имеет одно направление. Советник проверяет направление бара #0 (это самый правый бар, который Вы видите...
 
안녕하세요. mql5 언어와 MT5 플랫폼을 모두 마스터하기로 결정했습니다. 테스터 질문입니다. 인용문에 따르면. Weltrade의 플랫폼에 몇 개의 audcad를 설치했습니다. 제 EA에 작은 정보 게시판 이 있습니다. 시각화 모드에서 스프레드가 사실이 아님을 알 수 있습니다(매우 작음, 유로화 스프레드와 유사). 나는 회사(Veltrade)의 기술 지원에 연락했습니다 - MT4와 MT5에 다른 스프레드가 있습니까? 그들은 같다고 대답했습니다. 그렇다면 테스터에서 이러한 불일치를 이해하는 방법은 무엇입니까? 더 나아가. 유전자 코드로 최적화를 시도했습니다. 프로세서 부하가 100%이고 몇 분 동안 작동하면 컴퓨터가 꺼집니다(phenom II x4 955 프로세서(4코어, 3.2GHz), 쿨러는 여유가 있습니다). 두 번 후에 나는 더 이상 위험을 감수하지 않기로 결정했습니다. 이것을 이해하는 방법? 그러면 시각화 없이 테스트할 때 트랜잭션에 대한 정보는 전혀 없고 차트만 표시됩니다. 그렇습니까, 아니면 제가 뭔가 잘못하고 있는 것입니까? 예, 정보 콘텐츠가 있는 시각화 모드에서는 약간 빡빡합니다. 사실 저는 스프레드 불일치가 가장 걱정입니다. 요컨대 첫인상은 완전한 실망입니다. 하지만 아직 미처 파악하지 못한 부분에 대해 말씀드리겠습니다.
 
Youri Lazurenko :
안녕하세요. mql5 언어와 MT5 플랫폼을 모두 마스터하기로 결정했습니다. 테스터 질문입니다. 인용문에 따르면. Weltrade의 플랫폼에 몇 개의 audcad를 설치했습니다. 제 EA에 작은 정보 게시판 이 있습니다. 시각화 모드에서 스프레드가 사실이 아님을 알 수 있습니다(매우 작음, 유로화 스프레드와 유사). 나는 회사(Veltrade)의 기술 지원에 연락했습니다 - MT4와 MT5에 다른 스프레드가 있습니까? 그들은 같다고 대답했습니다. 그렇다면 테스터에서 이러한 불일치를 이해하는 방법은 무엇입니까? 더 나아가. 유전자 코드로 최적화를 시도했습니다. 프로세서 부하가 100%이고 몇 분 동안 작동하면 컴퓨터가 꺼집니다(phenom II x4 955 프로세서(4코어, 3.2GHz), 쿨러는 여유가 있습니다). 두 번 후에 나는 더 이상 위험을 감수하지 않기로 결정했습니다. 이것을 이해하는 방법? 그러면 시각화 없이 테스트할 때 트랜잭션에 대한 정보는 전혀 없고 차트만 표시됩니다. 그렇습니까, 아니면 제가 잘못하고 있는 것입니까? 예, 정보 콘텐츠가 있는 시각화 모드에서는 약간 빡빡합니다. 사실 저는 스프레드 불일치가 가장 걱정입니다. 요컨대 첫인상은 완전한 실망입니다. 하지만 아직 미처 파악하지 못한 부분에 대해 말씀드리겠습니다.

실제 틱을 기반으로 테스트를 설정합니다. 그러면 스프레드의 유효성에 대한 모든 의심을 잃게 됩니다.


 
Alexey Viktorov :

실제 틱을 기반으로 테스트를 설정합니다. 그러면 스프레드의 유효성에 대한 모든 의심을 잃게 됩니다.


감사합니다. 지금 시도하겠습니다. 최적화를 위해 무엇을 추천하시겠습니까? 나는 속도에 더 관심이 있다. 품질은 나중에 테스트 중에 조정할 수 있습니다.

추신 : 당신이 조언 한대로 나는 스프레드가 동일합니다. 그 전에 구체적으로 계정 유형을 확인했습니다. 사양에 따르면 audcad 4.1(부동)에 퍼졌습니다. 동일한 계정에서(데모 차트) 4.7(플로팅). 테스터인 MT5에서 최대값은 2.8입니다(더 낮은 부동).

 
Youri Lazurenko :

감사합니다. 지금 시도하겠습니다. 최적화를 위해 무엇을 추천하시겠습니까? 나는 속도에 더 관심이 있다. 품질은 나중에 테스트 중에 조정할 수 있습니다.

나는 아무것도 추천할 수 없습니다. 최적화를 사용하지 않습니다. 나는 이런 기만을 생각한다.

사유: