찻주전자의 질문 - 페이지 44

 

Alex, m_rates[1].low와 m_rates[0].close와 같은 특정 가격을 어떻게 비교할 수 있는지 알려주세요.

m_rates[1].low=m_rates[0].close가 맞을까요? 일반적으로 m_rates[0].close 아직 닫히지 않은 바의 마지막 가격인가요?

일반적으로 지표를 사용하지 않고 최신 막대로 "수정"하는 데 사용하는 가장 좋은 방법은 무엇입니까? ( CopyRates , CopyHigh)

 
Makser :

Alex, m_rates[1].low와 m_rates[0].close와 같은 특정 가격을 어떻게 비교할 수 있는지 알려주세요.

m_rates[1].low=m_rates[0].close가 맞을까요? 일반적으로 m_rates[0].close 아직 닫히지 않은 바의 마지막 가격인가요?

일반적으로 지표를 사용하지 않고 최신 막대로 "수정"하는 데 사용하는 가장 좋은 방법은 무엇입니까? (CopyRates, CopyHigh)

지표 외부의 가격 데이터로 작업 하려면 CopyRates 또는 CopyHigh/Low/Close 등을 사용해야 한다고 올바르게 작성했습니다.

예제는 도움말이나 코드베이스에서 찾을 수 있습니다.

Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyRates
  • www.mql5.com
Доступ к таймсериям и индикаторам / CopyRates - Документация по MQL5
 

코드를 컴파일할 때 다음 메시지가 나타납니다. 라인의 유형 변환으로 인한 데이터 손실 가능성

 datetime lastbar_time= SeriesInfoInteger ( Symbol (), Period (), SERIES_LASTBAR_DATE );

전문가에서 기능을 사용할 때 테스터에서 작동이 중지됩니다. 이유를 알려주십시오. 코드는 https://www.mql5.com/ru/articles/22 기사에서 가져옵니다.

 //+------------------------------------------------------------------+
//|                                                 CheckLastBar.mq5 |
//|                        Copyright 2010, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2010, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   if (isNewBar())
     {
      PrintFormat ( "Новый бар: %s" , TimeToString ( TimeCurrent (),TIME_SECONDS));
     }
  }
//+------------------------------------------------------------------+
//| Возвращает true, если появился новый бар для пары символ/период  |
//+------------------------------------------------------------------+
bool isNewBar()
  {
//--- в статической переменной будем помнить время открытия последнего бара
   static datetime last_time= 0 ;
//--- текущее время
   datetime lastbar_time= SeriesInfoInteger ( Symbol (), Period (), SERIES_LASTBAR_DATE );

//--- если это первый вызов функции
   if (last_time== 0 )
     {
      //--- установим время и выйдем 
      last_time=lastbar_time;
      return ( false );
     }

//--- если время отличается
   if (last_time!=lastbar_time)
     {
      //--- запомним время и вернем true
      last_time=lastbar_time;
      return ( true );
     }
//--- дошли до этого места - значит бар не новый, вернем false
   return ( false );
  }
//+------------------------------------------------------------------+
Ограничения и проверки в экспертах
Ограничения и проверки в экспертах
  • 2010.08.02
  • MetaQuotes Software Corp.
  • www.mql5.com
Можно ли торговать этим инструментом в понедельник? Хватит ли денег на открытие позиции? Какой размер убытка мы получим, если сработает Stop Loss? Как ограничить количество отложенных ордеров? Была ли выполнена торговая операция на этом баре или это было на предыдущем? Если торговый робот не может сделать подобные проверки, то любая прибыльная торговая система может превратиться в проигрышную. В этой статье показаны примеры проверок, которые пригодятся в любом эксперте.
 
Europa :

코드를 컴파일할 때 다음 메시지가 나타납니다. 라인의 유형 변환으로 인한 데이터 손실 가능성

EA에서 기능을 사용할 때 테스터에서 작동이 중지됩니다. 이유를 알려주십시오. 코드는 https://www.mql5.com/en/articles/22 기사에서 가져옵니다.

테스터에 대해서는 말할 수 없습니다. 그리고 "... 유형 변환"에 대해:
   datetime lastbar_time=(datetime) SeriesInfoInteger ( Symbol (), Period (), SERIES_LASTBAR_DATE );
 

흥미롭게도 비슷한 것이 있습니다. 이중 배열을 이중 데이터 로 채우기 이 행에서 동일한 경고를 발행합니다.

 CopyBuffer (ma_handle, 0 , 0 , 13 ,ma);
 
Karlson :

흥미롭지 만 비슷한 것이 있습니다. 이중 배열을 이중 데이터로 채우면 해당 행에 동일한 경고가 발생합니다.

아마도 문제는 상수(0,0,13) 해석의 모호성에 있습니다. CopyBuffer 에는 세 가지 호출 옵션이 있습니다. 원하는 유형의 변수를 매개변수로 대체하거나 상수에 대한 명시적 유형 변환을 사용하십시오.
 
감사합니다 시도하겠습니다 이미 변환을 시도했습니다 명시적 변환은 (int)를 통해 마우스 핸들을 변환하면 통과합니다.
 
Karlson :
감사합니다 시도하겠습니다 이미 변환을 시도했습니다 명시적 변환은 (int)를 통해 마우스 핸들을 변환하면 통과합니다.
잠깐만. 당신의 손잡이는 어떤 유형입니까?
 

실수를 이해했습니다. int 가 필요합니다.

 int    iMA (
   string                symbol,             // имя символа
   ENUM_TIMEFRAMES       period,             // период
   int                   ma_period,         // период усреднения
   int                   ma_shift,           // смещение индикатора по горизонтали
   ENUM_MA_METHOD        ma_method,         // тип сглаживания
   ENUM_APPLIED_PRICE    applied_price       // тип цены или handle
   );

덕분에.

 
저도 몇 가지 질문이 있습니다. 이동 평균 크로스오버 신호의 모듈은 어디에 있습니까? 악어 신호는 어디에 있습니까? 그리고 더. 각 표시기에는 여러 유형의 신호가 있습니다. 예를 들어 MACD가 제로 크로싱 신호만 받아들이도록 하는 방법은 무엇입니까?