LoY[0][0] 주문을 열고 입찰 값(즉, 1.6134)을 받은 후 ArraySort(LoY,WHOLE_ARRAY,0,MODE_ASCEND) 함수는 배열을 첫 번째 차원을 기준으로 오름차순으로 정렬하고 배열 요소 를 맨 위 배열에서 가장 큰 값. 즉, LoY[0][0] 은 그 값과 함께 오름차순으로 정렬된 배열에서 LoY[30][0]이 됩니다. 이것은 논리적이므로 이에 동의합니다.
내 생각에 논리적이지 않고 받아들여지지 않는 것은 무엇입니까? ArraySort() 가 LoY[15][0] 값(1.61040)이 30번째를 제외한 배열의 다른 모든 요소의 값과 같다는 사실에도 불구하고 인덱스 0에 LoY[15][0]을 넣은 이유는 무엇입니까? ArraySort()LoY[30][0] 값(1.61040)이 30번째를 제외한 배열의 다른 모든 요소의 값과 같다는 사실에도 불구하고 인덱스 15에 배치됩니다.
문제. 주어진 틱에서 인덱스가 0인 요소가 LoY[1][0] 이고 인덱스가 15 인 요소가 되도록 만드는 방법 LoY[15][0] 및 인덱스 29의 요소는 LoY[30][0] 즉, 함수가 미래에 동일한 값을 가진 요소를 정렬하지 않도록 하는 방법입니다. 논리적이지 않고 무의미합니다.
Для работы с графикой в MQL5 создана специальная библиотека Graphic.mqh. В статье описан пример ее практического применения и поясняется сама суть сортировок. По каждой сортировке существует как минимум отдельная статья, а по ряду из них уже опубликованы целые исследования, поэтому здесь описывается лишь общая идея.
//функция быстрой сортировкиvoid SortArray( int &eArray[], int eFirst, int eLast)
{
int eMiddle, eTemp;
int eLeft=eFirst, eRight=eLast;
//вычисление опорного элемента
eMiddle=eArray[(eLeft+eRight)/ 2 ];
do
{
while (eArray[eLeft]<eMiddle) eLeft++;
while (eArray[eRight]>eMiddle) eRight--;
//перестановка элементовif (eLeft<=eRight)
{
eTemp=eArray[eLeft];
eArray[eLeft]=eArray[eRight];
eArray[eRight]=eTemp;
eLeft++;
eRight--;
}
}
while (eLeft<eRight);
if (eFirst<eRight) SortArray(eArray,eFirst,eRight);
if (eLeft<eLast) SortArray(eArray,eLeft,eLast);
}
MakarFX : 매우 이상하게도 새로 열린 모든 차트 에 표시를 하고 하나의 차트만 무시됩니다(
설명서와 샘플 코드를 주의 깊게 읽으십시오. 주기가 잘못되었습니다.
//--- переменные для идентификаторов графиковlong currChart, prevChart= ChartFirst () ;
int i= 0 ,limit= 100 ;
Print ( "ChartFirst = " , ChartSymbol (prevChart), " ID = " ,prevChart);
while (i<limit) // у нас наверняка не больше 100 открытых графиков
{
currChart= ChartNext (prevChart) ; // на основании предыдущего получим новый графикif (currChart< 0 ) break ; // достигли конца списка графиковPrint (i, ChartSymbol (currChart), " ID =" ,currChart);
prevChart=currChart; // запомним идентификатор текущего графика для ChartNext()
i++; // не забудем увеличить счетчик
}
for 및 while 루프가 같은 방식으로 작동한다고 말하지 마십시오. 문제는 이것이 아니라 강조 표시된 줄에 있습니다.
mql4에 대한 질문, 보다 구체적으로 ArraySort() 함수에 대한 질문
여기 내 코드가 있습니다
LoY[0][0] 주문을 열고 입찰 값(즉, 1.6134)을 받은 후 ArraySort(LoY,WHOLE_ARRAY,0,MODE_ASCEND) 함수는 배열을 첫 번째 차원을 기준으로 오름차순으로 정렬하고 배열 요소 를 맨 위 배열에서 가장 큰 값. 즉, LoY[0][0] 은 그 값과 함께 오름차순으로 정렬된 배열에서 LoY[30][0]이 됩니다. 이것은 논리적이므로 이에 동의합니다.
내 생각에 논리적이지 않고 받아들여지지 않는 것은 무엇입니까? ArraySort() 가 LoY[15][0] 값(1.61040)이 30번째를 제외한 배열의 다른 모든 요소의 값과 같다는 사실에도 불구하고 인덱스 0에 LoY[15][0]을 넣은 이유는 무엇입니까? ArraySort() LoY[30][0] 값(1.61040)이 30번째를 제외한 배열의 다른 모든 요소의 값과 같다는 사실에도 불구하고 인덱스 15에 배치됩니다.
문제. 주어진 틱에서 인덱스가 0인 요소가 LoY[1][0] 이고 인덱스가 15 인 요소가 되도록 만드는 방법 LoY[15][0] 및 인덱스 29의 요소는 LoY[30][0]
즉, 함수가 미래에 동일한 값을 가진 요소를 정렬하지 않도록 하는 방법입니다. 논리적이지 않고 무의미합니다.
도와 주셔서 감사합니다.
아마도 그런 정렬 알고리즘 일 것입니다. 배열 요소의 일부 순열이 있습니다.
다른 정렬 옵션을 사용해 보십시오.
아마도 그런 정렬 알고리즘 일 것입니다. 배열 요소의 일부 순열이 있습니다.
다른 정렬 옵션을 사용해 보십시오.
조언해주셔서 대단히 감사합니다. mql4에 다른 정렬 옵션이 있는지 알려주십시오. 그렇다면 디렉토리의 어디에 있습니까?
노력하다:
1차원 배열에 대한 true 함수이지만 다시 실행할 수 있음
노력하다:
1차원 배열에 대한 true 함수이지만 다시 실행할 수 있음
매우 감사합니다.
말해주세요,
이 코드는 열린 차트 를 찾고 기호 이름으로 레이블을 생성하지만 같은 기호를 가진 두 개의 차트가 있으면
그런 다음 하나의 차트에만 레이블을 만듭니다. 내가 뭘 잘못하고 있는 건가요?
말해주세요,
코드는 열린 차트 를 찾고 기호 이름으로 레이블을 생성하지만 두 차트에 동일한 기호가 있는 경우
그런 다음 하나의 차트에만 레이블을 만듭니다. 내가 뭘 잘못하고 있는 건가요?
동일한 기호의 차트 ID(ChartID())가 다릅니다. 그것을 써.
동일한 기호의 차트 ID(ChartID())가 다릅니다. 그것을 써.
ChartFirst ()+i
저것들. 열려 있는 모든 차트 에 대해 반복
아니면 내가 당신을 오해? 코드의 형태로 어떻게든 시각적으로 가능합니까?
매우 이상하게도 새로 열린 모든 차트 에 표시를 하고 하나의 차트만 무시됩니다(
설명서와 샘플 코드를 주의 깊게 읽으십시오. 주기가 잘못되었습니다.
for 및 while 루프가 같은 방식으로 작동한다고 말하지 마십시오. 문제는 이것이 아니라 강조 표시된 줄에 있습니다.