공부할 때 코드를 구현하는 데 어려움을 겪었습니다. 기사가 있습니다 https://www.mql5.com/ru/articles/3336 비교가 어떻게 작동하는지 이해할 수 없습니다
if(!CompareTiks(n_tiks[i], m_ticks[k]))
나는 "템플릿 데이터 수집"이 거기에 사용되는 것으로 의심되며 그러한 전역 방법 " 비교"가 있습니다. 여기 기사 목록에는 "템플릿 데이터 컬렉션"에서 "비교"를 사용해야 한다는 것을 컴파일러에 명확하게 알리는 방법과 전역 메서드를 사용하는 예가 나와 있지 않습니다. "템플릿 데이터 컬렉션"을 찾지 못했습니다.
전역 메서드 설명에 나와 있는 이러한 항목은 결과적으로 아무 것도 변경되지 않을 것이라고 생각합니다.
템플릿<유형명 T> 정수 비교( T x, // 첫 번째 값 T y // 두 번째 값 );
결과적으로 다음 코드가 있습니다.
#ifndef 내 포함 #define MyInclude
//템플릿<유형명 T> // 인터페이스 ICollection //#include <일반\인터페이스\ICollection.mqh> 템플릿<유형명 T> 정수 비교( T x, // 첫 번째 값 T y // 두 번째 값 );
클래스 CMarketBook { 사적인: 문자열 m_symbol; MqlTick m_ticks[]; MqlTick LastTicks[];
보호:
공공의: 무효 CMarketBook::CompareTicks(무효); }; //+----------------------------------------------- --------------------+ //|두 개의 틱 컬렉션을 비교하고 새로운 틱을 찾습니다. | //+----------------------------------------------- --------------------+ 무효 CMarketBook::CompareTicks(무효) { MqlTick n_ticks[]; ulong T_begin = (TimeCurrent()-(1*20))*1000;//20초 전 m_symbol = 기호(); 정수 합계 = CopyTicks(m_symbol, n_ticks, COPY_TICKS_ALL, T_begin, 1000); if (Total < 1) {printf("틱을 가져오지 못했습니다."); 반품;} if (ArraySize(m_ticks) == 0) {ArrayCopy(m_ticks, n_ticks, 0, 0, WHOLE_ARRAY ); 반품;}
정수 k = ArraySize(m_ticks)-1; 정수 n_t = 0; int limit_comp = 20; 정수 Comp_success = 0;
// 새로 수신된 틱을 반복합니다. (int i = ArraySize(n_ticks)-1; i>=0 && k>=0; i--) { if (!Compare(n_ticks[i], m_ticks[k])) { n_t = ArraySize(n_ticks) - i; k = ArraySize(m_ticks) - 1; Comp_success = 0; } 또 다른 { Comp_success += 1; if (Comp_success >= Limit_comp) break; 케이--; }; }; //수신된 틱 기억 ArrayResize(m_ticks, 총계); ArrayCopy(m_ticks, n_ticks, 0, 0, WHOLE_ARRAY); // 새로운 틱의 시작 인덱스를 계산하고 액세스를 위해 버퍼에 복사합니다. ArrayResize(LastTicks, n_t); 만약 (n_t > 0) { 정수 인덱스 = ArraySize(n_ticks) - n_t; ArrayCopy(LastTicks, m_ticks, 0, 인덱스, n_t); }; }; #endif
컴파일할 때 오류가 생성됩니다 - "객체는 참조에 의해서만 전달됩니다" if (!Compare(n_ticks[i], m_ticks[k])) n_ticks[i] 를 가리키는 경우
Именно с этой, улучшенной и дополненной версией мы и начнем работать, чтобы постепенно превратить ее в скальперский стакан цен. Краткий обзор графической библиотеки CPanel Созданию пользовательских интерфейсов в MQL5 посвящено много статей. Среди них особенно выделяется серия Анатолия Кажарского "Графические интерфейсы", после которой сложно...
mql5를 배우기 시작했습니다. 나는 주문이 열리는 방식을 연구하는 것으로 시작했습니다. 주문을 여는 코드가 별도의 인클루드 파일에 작성되어 있다는 것을 깨달았습니다. 나는 이 코드가 어떻게 작성되었는지 그리고 거래를 위한 최종 버전을 보았습니다. mql5와 비교하여 mql4에서 주문을 여는 것이 얼마나 쉽고 간단한지 놀랐습니다.
문제. 주문을 여는 코드가 포함된 파일이 이미 어딘가에 있고 이 코드를 작성할 필요가 없다는 것을 올바르게 이해하고 있습니까? 어딘가에 그런 파일이 있으면 Expert Advisor에 연결하고 필요한 주문 매개 변수의 값을 설정하기만 하면 됩니다. 어딘가에 그러한 파일이 있다면 어디서 어떻게 찾는지, 무엇이라고 부르는지.
알렉시, 감사합니다! 이제 이것이 불가능하다는 것이 분명합니다.
사실, 정확히 mql4가 없습니다. CiOpen 클래스 를 통해 데이터를 교체하려고 합니다. 배열의 지정된 위치에서 요소를 변경해야 하는 Update 메서드의 존재로 인해 혼란스러웠습니다.
변수/배열에 복사하고 이미 작업하십시오.
그리고 그는 그렇게 했습니다.
큰 도움 요청! 나는 프로그래밍에 아주 익숙합니다.
공부할 때 코드를 구현하는 데 어려움을 겪었습니다. 기사가 있습니다 https://www.mql5.com/ru/articles/3336 비교가 어떻게 작동하는지 이해할 수 없습니다
if (!CompareTiks(n_tiks[i], m_ticks[k]))
나는 "템플릿 데이터 수집"이 거기에 사용되는 것으로 의심되며 그러한 전역 방법 " 비교"가 있습니다. 여기 기사 목록에는 "템플릿 데이터 컬렉션"에서 "비교"를 사용해야 한다는 것을 컴파일러에 명확하게 알리는 방법과 전역 메서드를 사용하는 예가 나와 있지 않습니다. "템플릿 데이터 컬렉션"을 찾지 못했습니다.
전역 메서드 설명에 나와 있는 이러한 항목은 결과적으로 아무 것도 변경되지 않을 것이라고 생각합니다.
템플릿<유형명 T>
정수 비교(
T x, // 첫 번째 값
T y // 두 번째 값
);
결과적으로 다음 코드가 있습니다.
#ifndef 내 포함
#define MyInclude
//템플릿<유형명 T>
// 인터페이스 ICollection
//#include <일반\인터페이스\ICollection.mqh>
템플릿<유형명 T>
정수 비교(
T x, // 첫 번째 값
T y // 두 번째 값
);
클래스 CMarketBook
{
사적인:
문자열 m_symbol;
MqlTick m_ticks[];
MqlTick LastTicks[];
보호:
공공의:
무효 CMarketBook::CompareTicks(무효);
};
//+----------------------------------------------- --------------------+
//|두 개의 틱 컬렉션을 비교하고 새로운 틱을 찾습니다. |
//+----------------------------------------------- --------------------+
무효 CMarketBook::CompareTicks(무효)
{
MqlTick n_ticks[];
ulong T_begin = (TimeCurrent()-(1*20))*1000;//20초 전
m_symbol = 기호();
정수 합계 = CopyTicks(m_symbol, n_ticks, COPY_TICKS_ALL, T_begin, 1000);
if (Total < 1) {printf("틱을 가져오지 못했습니다."); 반품;}
if (ArraySize(m_ticks) == 0) {ArrayCopy(m_ticks, n_ticks, 0, 0, WHOLE_ARRAY ); 반품;}
정수 k = ArraySize(m_ticks)-1;
정수 n_t = 0;
int limit_comp = 20;
정수 Comp_success = 0;
// 새로 수신된 틱을 반복합니다.
(int i = ArraySize(n_ticks)-1; i>=0 && k>=0; i--)
{
if (!Compare(n_ticks[i], m_ticks[k]))
{
n_t = ArraySize(n_ticks) - i;
k = ArraySize(m_ticks) - 1;
Comp_success = 0;
}
또 다른
{
Comp_success += 1;
if (Comp_success >= Limit_comp) break;
케이--;
};
};
//수신된 틱 기억
ArrayResize(m_ticks, 총계);
ArrayCopy(m_ticks, n_ticks, 0, 0, WHOLE_ARRAY);
// 새로운 틱의 시작 인덱스를 계산하고 액세스를 위해 버퍼에 복사합니다.
ArrayResize(LastTicks, n_t);
만약 (n_t > 0)
{
정수 인덱스 = ArraySize(n_ticks) - n_t;
ArrayCopy(LastTicks, m_ticks, 0, 인덱스, n_t);
};
};
#endif
컴파일할 때 오류가 생성됩니다 - "객체는 참조에 의해서만 전달됩니다" if (!Compare(n_ticks[i], m_ticks[k])) n_ticks[i] 를 가리키는 경우
모두에게 좋은 하루.
Alpari의 MT4 Expert Advisor를 테스트 중입니다. 테스트하기 전에 MT는 스프레드 값(현재 값 또는 제공된 값의 특정 값)을 설정하도록 제안합니다.
Alpari에서는 스프레드가 유동적입니다. 따라서 위의 스프레드 설정은 저에게 적합하지 않습니다.
문제. 각 과거 틱에 대해 유효한 스프레드 값을 기록에 표시하는 기능은 무엇입니까?
또는 주문을 열거나 닫을 때 유효 했던 스프레드를 고려하여 EA 주문을 열고 닫는 방법은 무엇입니까?
도움을 주셔서 감사합니다.
모두에게 좋은 하루.
Alpari의 MT4 Expert Advisor를 테스트 중입니다. 테스트하기 전에 MT는 스프레드 값(현재 값 또는 제공된 값의 특정 값)을 설정하도록 제안합니다.
Alpari에서는 스프레드가 유동적입니다. 따라서 위의 스프레드 설정은 저에게 적합하지 않습니다.
문제. 각 과거 틱에 대해 유효한 스프레드 값을 기록에 표시하는 기능은 무엇입니까?
또는 주문을 열거나 닫을 때 유효 했던 스프레드를 고려하여 EA 주문을 열고 닫는 방법은 무엇입니까?
도움을 주셔서 감사합니다.
MT 4에서는 절대, MT 5에서는
MT 4에서는 절대, MT 5에서는
소중한 정보 정말 감사합니다.
mql5를 배우겠습니다. mql4와 매우 유사하다고 합니다. 필요한 각도에서 바로 공부할 수 있도록 mql5에서 제 계획이 어떻게 구현되었는지 알려주시면 정말 감사하겠습니다.
소중한 정보 정말 감사합니다.
mql5를 배우겠습니다. mql4와 매우 유사하다고 합니다. 제 아이디어가 mql5에서 어떻게 구현되었는지 알려주시면 대단히 감사하겠습니다.
MT5에서는 아무것도 발명할 필요가 없습니다.
이것은 훌륭합니다. 소중한 정보 감사합니다.
mql4에서 mql5로 빠르게 전환 하려면 mql4 및 mql5 참고서를 동시에 읽고 서로 어떻게 다른지 주목하는 것이 가장 좋은 것 같습니다. 모든 것은 상대적이다.....모두에게 좋은 하루!
mql5를 배우기 시작했습니다. 나는 주문이 열리는 방식을 연구하는 것으로 시작했습니다. 주문을 여는 코드가 별도의 인클루드 파일에 작성되어 있다는 것을 깨달았습니다. 나는 이 코드가 어떻게 작성되었는지 그리고 거래를 위한 최종 버전을 보았습니다. mql5와 비교하여 mql4에서 주문을 여는 것이 얼마나 쉽고 간단한지 놀랐습니다.
문제. 주문을 여는 코드가 포함된 파일이 이미 어딘가에 있고 이 코드를 작성할 필요가 없다는 것을 올바르게 이해하고 있습니까? 어딘가에 그런 파일이 있으면 Expert Advisor에 연결하고 필요한 주문 매개 변수의 값을 설정하기만 하면 됩니다. 어딘가에 그러한 파일이 있다면 어디서 어떻게 찾는지, 무엇이라고 부르는지.
고맙습니다.