Вот кусок кода если поможет, здесь сортировал по объему лота, так-как массив string не сортируется от меньшего к большему и наоборот
void ShowLotPos() { double l[][2]; string s[][4]; double lotshift=0; long h[]; int n=0,Charts=0; Charts=ChartGetIDList(h); for(int i=0; i<Charts; i++) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) n++; lotshift=GetAmountLotFromOpenPos(ChartSymbol(h[i]),OP_BUY,Magic)-GetAmountLotFromOpenPos(ChartSymbol(h[i]),OP_SELL,Magic); ArrayResize(l,i+1); l[i][0]=lotshift; l[i][1]=i; ArrayResize(s,i+1); s[i][0]=ChartSymbol(h[i]); s[i][1]=(string)lotshift; s[i][2]=(string)GetAmountLotFromOpenPos(ChartSymbol(h[i]),-1,-1); s[i][3]=(string)GetProfitOpenPosInCurrency(ChartSymbol(h[i]),-1,-1); } //- if(n>0) { int on=0; for(int i=0; i<n; i++) { ArraySort(l, i, 0, MODE_ASCEND); if((double)s[(int)l[i][1]][2]==0) continue; on++; SetLabel("Symbol_"+s[(int)l[i][1]][0], " "+s[(int)l[i][1]][0], ProfitLoss((double)s[(int)l[i][1]][1]), (int)ObjectGetInteger(0,"Прибыль позиции BUY",OBJPROP_XDISTANCE,0), (int)ObjectGetInteger(0,"Прибыль позиции BUY",OBJPROP_YDISTANCE,0)+5+(14*on), 2,8,false,"Symbol"); }}}
Вот кусок кода если поможет, здесь сортировал по объему лота, так-как массив string не сортируется от меньшего к большему и наоборот
Индикатор RSI считает силу валютных пар. Значение делиться на 10 для представления типа (целые.десятые). Далее значение силы нужно занести в массив вместе с названием валютной пары. Далее нужно отсортировать по спаданию и вывести.
пример:
AUDCAD 5.6
EURUSD 4.4
AUDCHF 3.1
Вот как пробовал я:
int PowerArray[3][2] = {{AUDCADPower,"AUDCAD"},{AUDCHFPower,"AUDCHF"}, {EURUSDPower, "EURUSD"}};
ArraySort(PowerArray,WHOLE_ARRAY,0,MODE_DESCEND);
Компилятор выдаёт ошибку "constant expression required" и предупреждение "implicit conversion from 'string' to 'number'".
Вот кусок кода если поможет, здесь сортировал по объему лота, так-как массив string не сортируется от меньшего к большему и наоборот
Опять ты кучей кода завалил. Гы гы гы.
У меня несколько иное решение.
Создаем двухмерный массив, например: double Asort[ 4000, 2]
В первое измерение Asort[ i, 0] = записываем сортируемое значение.
Во второе помещаем ссылку Asort[ i, 1] = i это индекс в исходном массиве.
После сортировки, индекс в исходном массиве.узнаем из второго измерения
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте господа программисты!
Учу MQL4. Столкнулся с проблемой, решить не могу.
Сама проблема вот в чём: есть набор даных состоящих из 2 разных типов даных (string, double). Нужно отсортировать всё по double в порядке спадания.
Кому не сложно подкиньте идею, или может кусок кода.