거래에 대한 정보를 어떻게 수집하고 사용합니까? 고문의 모든 위치, 거래량, 이익, 유형, 개시 가격에 대한 정보를 수집해야 합니다. 그런 다음 가장 최근의 위치 또는 가장 큰 위치에 대한 정보를 확인합니다. 배열에 쓰는 데 문제가 있습니다.
1. 배열을 엉망으로 만들 필요가 있습니까?
2. 구조체의 배열이나 다른 배열을 사용하는 것이 더 낫습니까?
3. 여전히 여백이 있는 메모리를 할당해야 하는 경우 동적 배열 이 필요한 이유는 무엇입니까? 정적 배열을 사용하는 것이 더 쉽지 않습니까? 아니면 역 인덱싱이 가능하기 때문에 동적 요소 없이는 불가능합니까?
OOP가 없는 코드 예제, 어떤 이유로 이 구성을 작성할 수도 없었기 때문입니다. 어렵지 않다면 감사합니다.
왜 아무것도 수집하지 않습니까? 위치를 반복하고 정보를 처리해야 하지만 수집할 필요는 없습니다. 동시에 수집한 모든 것은 오래된 정보입니다.
1. 거래의 역사를 다룰 때 배열은 일반적으로 생략됩니다. 대략적인 예: https://www.mql5.com/ru/docs/trading/historyselect . 링크 왼쪽에 있는 열의 모든 기능(및 거기에 있는 모든 예제)을 탐색할 가치가 있습니다.
2. 구조체의 배열은 매우 편리합니다. 그러나 다차원 배열에 적용할 수 있는 내장 함수(ArraySort() 등)는 작동하지 않습니다.
3. 처음에 지정된 배열 크기가 충분하다고 확신하는 경우 정적 배열을 사용할 수도 있습니다. 크기가 적당한 경우.
왜 무엇이든 수집합니까? 위치를 반복하고 정보를 처리해야 하지만 수집할 필요는 없습니다. 동시에 수집한 모든 것은 오래된 정보입니다.
int OnInit () { ENUM_POSITIONS_TYPE ar [ 1000 ]; //проинициализирую нулем еще, просто я не копирую, а вручную всё пишу, и некоторые очевидные куски не пишу. return ( INIT_SUCCEEDED ); } void OnDeinit ( const int reason) {} void OnTick () { for ( int index= PositionsTotal ()- 1 ; index>= 0 ; index--) { ulong ticket= PositionGetTicket (index); PositionSelectByTicket (ticket); // И вот я готов вызывать функции для выуживания данных, только я не знаю //как их вписывать в массив.
1. 거래의 역사를 다룰 때 배열은 일반적으로 생략됩니다. 대략적인 예: https://www.mql5.com/ru/docs/trading/historyselect . 링크 왼쪽에 있는 열의 모든 기능(및 거기에 있는 모든 예제)을 탐색할 가치가 있습니다.
2. 구조체의 배열은 매우 편리합니다. 그러나 다차원 배열에 적용할 수 있는 내장 함수(ArraySort() 등)는 작동하지 않습니다.
3. 처음에 지정된 배열 크기가 충분하다고 확신하는 경우 정적 배열을 사용할 수도 있습니다. 크기가 적당한 경우.
나는 역사에 대해 이야기하는 것이 아니라 열린 위치를 분석하고 싶습니다. 어떻게 하면 더 잘할 수 있을까요?
거의 동일하지만 HistorySelect()가 없습니다. PositionsToatal() 함수로 시작한 다음 해당 링크를 따라 Position으로 시작하는 모든 함수를 연구합니다.
배열의 위치를 정렬할 필요가 없으며 그 과정에서 최대값과 최소값을 찾을 수 있습니다.
고맙습니다. 간단한 예를 들어주실 수 있나요? 비교를 위해 적어야 합니까? 그리고 배열에 없는 경우를 제외하고 어디에 기록합니까? 글을 쓰지 않고는 어떻게 할 수 없습니다. 그런 다음 작업은 루프 패스의 한 위치에서 진행됩니다. 다른 루프 패스에 있는 경우 다른 위치를 어떻게 비교할 수 있습니까?
고맙습니다. 간단한 예를 들어주실 수 있나요? 비교를 위해 적어야 합니까? 그리고 배열에 없는 경우를 제외하고 어디에 기록합니까? 글을 쓰지 않고는 어떻게 할 수 없습니다. 그런 다음 작업은 루프 패스의 한 위치에서 진행됩니다. 다른 루프 패스에 있는 경우 다른 위치를 어떻게 비교할 수 있습니까?
int Magic= 123 ; double maxBuyPrice= 0 ; ulong maxBuyTicket= 0 ; double minSellPrice= DBL_MAX ; ulong minSellTicket= 0 ; for ( int i= 0 ;i< PositionsTotal ();i++){ ulong ticket= PositionGetTicket (i); if (ticket!= 0 ){ long magic= PositionGetInteger ( POSITION_MAGIC ); string symbol= PositionGetString ( POSITION_SYMBOL ); if (magic==Magic && symbol== Symbol ()){ long type= PositionGetInteger ( POSITION_TYPE ); if (type== POSITION_TYPE_BUY ){ if ( PositionGetDouble ( POSITION_PRICE_OPEN )>maxBuyPrice){ maxBuyPrice= PositionGetDouble ( POSITION_PRICE_OPEN ); maxBuyTicket=ticket; // тут можно и другие данные позиции запоминать в переменные } } else if (type== POSITION_TYPE_SELL ){ if ( PositionGetDouble ( POSITION_PRICE_OPEN )<minSellPrice){ minSellPrice= PositionGetDouble ( POSITION_PRICE_OPEN ); minSellTicket=ticket; // и тут } } } } } if (maxBuyTicket!= 0 ){ } if (minSellTicket!= 0 ){ }
그런 예를 들어 주셔서 감사합니다.
long magic= PositionGetInteger ( POSITION_MAGIC ); string symbol= PositionGetString ( POSITION_SYMBOL ); if (magic==Magic && symbol== Symbol ())
나는 이런 식으로 모든 것을 배치하고 x를 쓰지 않는 것을 선호하는 유일한 사람이라고 생각했습니다.
if ( PositionGetInteger ( POSITION_MAGIC )==Magic && PositionGetString ( POSITION_SYMBOL )== Symbol ())
xs - 러시아어로 번역 "알고 싶습니다" ... 나쁘게 생각하지 마십시오 ...
추신; 프로그램 디버깅 중에 가능한 모든 것을 추적하는 데 도움이 됩니다.
거래에 대한 정보를 어떻게 수집하고 사용합니까? 고문의 모든 위치, 거래량, 이익, 유형, 개시 가격에 대한 정보를 수집해야 합니다. 그런 다음 가장 최근의 위치 또는 가장 큰 위치에 대한 정보를 확인합니다. 배열에 쓰는 데 문제가 있습니다.
1. 배열을 엉망으로 만들 필요가 있습니까?
2. 구조체의 배열이나 다른 배열을 사용하는 것이 더 낫습니까?
3. 여전히 여백이 있는 메모리를 할당해야 하는 경우 동적 배열 이 필요한 이유는 무엇입니까? 정적 배열을 사용하는 것이 더 쉽지 않습니까? 아니면 역 인덱싱이 가능하기 때문에 동적 요소 없이는 불가능합니까?
OOP가 없는 코드 예제, 어떤 이유로 이 구성을 작성할 수도 없었기 때문입니다. 어렵지 않다면 감사합니다.