MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 113

 
Alexey Kozitsyn :

현재 가격을 얻는 방법에는 여러 가지가 있습니다.

1. 모든 기호의 경우: 보장된 현재 가격을 얻으려면 사용하기 전에 필요한 식별자와 함께 SymbolInfoDouble() 함수를 호출하십시오 .

2. 현재 기호의 경우 미리 정의된 Bid 및 Ask 변수를 통해 현재 가격을 얻을 수도 있습니다. 그것이 그들이 구식이 될 수있는 방법이므로 OnTick() 함수가 오랫동안 실행되면 RefreshRates()를 사용하여 업데이트해야합니다.

감사하다!
 
컴파일러 경고:

"유형 변환으로 인한 데이터 손실 가능성"

이 경고를 극복하는 방법?
string singleElement+= CharToString ( StringGetCharacter (stringOfSymbols,i));
 
Maksym Mudrakov :
컴파일러 경고:

"유형 변환으로 인한 데이터 손실 가능성"

이 경고를 극복하는 방법?
string singleElement+= CharToString ( StringGetCharacter (stringOfSymbols,i));

함수가 반환하는 값의 유형을 정확히 알고 명시적 캐스트를 사용해야 합니다. https://www.mql5.com/ru/docs/basis/types/casting

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Artyom Trishkin :
템플릿이 완전하지 않습니다. 마법사에서 계산된 데이터가 기록될 표시기 버퍼를 지정하지 않았을 가능성이 큽니다.

그러나 대부분의 지표에 대한 기본 원칙은 다음과 같습니다.

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
//---
   if (rates_total< 1 ) return ( 0 );               // проверка достаточности данных для расчёта индикатора, если не достаточно - выходим
                                             // если для расчёта требуются некое количество баров слева от индекса цикла, ...
                                             // ... то проверять нужно это количество, а не 1
  
   //--- Действия для полного перерасчёта индикатора
   int limit=rates_total-prev_calculated;     // количество посчитанных уже баров
   if (limit> 1 ) {                             // если количество больше 1, значит имеем новые данные, и нужно полностью пересчитать индикатор
      limit=rates_total- 1 ;                   // задаём количество требуемых для расчёта баров равным количеству баров в истории,
                                             // если для расчёта требуются некое количество баров слева от индекса цикла, ...
                                             // ... то это количество тоже нужно вычесть из rates_total чтобы не выйти за пределы массива
                                             // так же тут нужно при необходимости произвести инициализацию буферов индикатора
      }
  
   //--- Основной цикл индикатора
   for ( int i=limit; i>= 0 ; i--) {
       // тут выполняем нужные расчёты и записываем их результат в нужные буферы, например:
      ExtMapBuffer[i]=(open[i]+high[i]+low[i]+close[i])/ 4.0 ;   // Выведем на график среднюю цену каждой свечи (OHLC/4.0)
      }
  
//--- return value of prev_calculated for next call
   return (rates_total);
  }
//+------------------------------------------------------------------+
Artem, 컴파일러에서 오류 발생: 'ExtMapBuffer' - 선언되지 않은 식별자

 
Andrey Koldorkin :
Artem, 컴파일러에서 오류 생성: 'ExtMapBuffer' - 선언되지 않은 식별자

당연히 그럴 것이다. 글쎄, 나는 그것을 "불도저에서" 썼다. 그리고 예제를 작성하기 전에 템플릿에 외부 변수를 설정하지 않았으며(필요하지도 않음) 화면에 표시기 계산 을 표시하기 위한 버퍼를 설정하지 않았다고 말했습니다. 물론 버퍼 출력을 사용하지 않는 표시기가 있지만 귀하의 경우에는 그렇지 않습니다.

그래서 이 버퍼에 직접 입력했습니다. 템플릿을 다시 만들어야 하지만 여전히 이 가장 간단한 작업에 보다 책임감 있게 접근하고 "지표 생성 마법사가 나에게 무엇에 대해 묻고 무엇을 필요로 합니까?"라는 질문을 스스로에게 물어보고 그가 묻는 내용을 읽으십시오. "다음" 버튼만 클릭하지 마세요.
 
안녕하세요! 약 4개월 전에 Kovalev의 교과서를 사용하여 MQL4를 공부하기 시작했습니다. 게다가 그들은 비디오를 가지고 있습니다. 나는 비디오를보고, 교과서를 공부하고, 거기에 사용되는 코드를 반복합니다. 물론 이론상으로는 많이 배웠지만, 혼자서는 코드를 작성할 수 없습니다. 나는 아이디어가 있고 알고리즘에 대해 알고 있습니다. 꼼꼼히 다 공부해요 혹시 제가 서두르는 걸까요? 나는 이것이 매우 심각한 문제이고 그것을 숙달하는 데 시간이 걸린다는 것을 이해합니다. 하지만 연습이 필요하다는 것을 압니다. 간단한 작업이 필요하고 작성하여 예를 들어 다른 사람이 확인하도록 하면 이동할 수 있습니다! 또 다른 문제는 업데이트가 있기 전에 책과 비디오가 업데이트되었다는 것입니다. 책을 읽은 후에도 코드를 반복하고 컴파일하고 오류가 발생합니다. 새 게이트에서 양처럼 보입니다 ...... 장군, 그런 슬픔!
 
FOTOGRAF14 :
안녕하세요! 약 4개월 전에 Kovalev의 교과서를 사용하여 MQL4를 공부하기 시작했습니다. 게다가 그들은 비디오를 가지고 있습니다. 나는 비디오를보고, 교과서를 공부하고, 거기에 사용되는 코드를 반복합니다. 물론 이론상으로는 많이 배웠지만, 혼자서는 코드를 작성할 수 없습니다. 나는 아이디어가 있고 알고리즘에 대해 알고 있습니다. 꼼꼼히 다 공부해요 혹시 제가 서두르는 걸까요? 나는 이것이 매우 심각한 문제이고 그것을 숙달하는 데 시간이 걸린다는 것을 이해합니다. 하지만 연습이 필요하다는 것을 압니다. 간단한 작업이 필요하고 작성하여 예를 들어 다른 사람이 확인하도록 하면 이동할 수 있습니다! 또 다른 문제는 업데이트가 있기 전에 책과 비디오가 업데이트되었다는 것입니다. 책을 읽은 후에도 코드를 반복하고 컴파일하고 오류가 발생합니다. 새 게이트에서 양처럼 보입니다 ...... 장군, 그런 슬픔!

문서를 한 번 읽어보십시오. 교과서가 구식입니다. 문서가 도움이 될 것입니다. 작업에 관해서는 - 교과서에 설명 된 것과 동일한 작업을 해결하십시오. 문제를 읽고, 솔루션을 보고, 반복하세요. 그리고 그것이 작동하기 시작할 때까지 계속됩니다. 자신을 구현하는 방법을 배우려는 작업에 가능한 한 가깝게 작업을 수행하는 것이 좋습니다.

물론 모두 IMHO입니다.

 
Sergey Gritsay :
모든 것이 나를 위해 잘 컴파일됩니다.

좋아, 하지만 왜 그러한 객체가 다르지 않은지 설명하고 싶은 욕구가 있습니까?

개체 유형을 바꾸면 속성이 2개의 레이블 또는 추세선으로 축소됩니다.

 
Alexey Kozitsyn :

문서를 한 번 읽어보십시오. 교과서가 구식입니다. 문서가 도움이 될 것입니다. 작업에 관해서는 - 교과서에 설명 된 것과 동일한 작업을 해결하십시오. 문제를 읽고, 솔루션을 보고, 반복하세요. 그리고 그것이 작동하기 시작할 때까지 계속됩니다. 자신을 구현하는 방법을 배우려는 작업에 가능한 한 가깝게 작업을 수행하는 것이 좋습니다.

물론 모두 IMHO입니다.

감사하다!

 
trader781 :

좋아, 하지만 왜 그러한 객체가 다르지 않은지 설명하고 싶은 욕구가 있습니까?

개체 유형을 바꾸면 속성이 2개의 레이블 또는 추세선으로 축소됩니다.

R 어떤 물체를 구별할 수 없습니까? 그리고 객체의 유형을 대체한 다음 속성이 축소된다는 것은 무엇을 의미합니까?