Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 86
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
переделал пост 844 чтоб не писать еще раз сюда код
ну а касаемо массива с нулевым рамером - 0 это может быть целое число, может быть эквивалент булевого фальс, может быть пустотой, а может и стартовой точкой отсчета.
переделал пост 844 чтоб не писать еще раз сюда код
ну а касаемо массива с нулевым рамером - 0 это может быть целое число, может быть эквивалент булевого фальс, может быть пустотой, а может и стартовой точкой отсчета.
И, пожалуйста, не заставляйте меня за вас вставлять в нужное сообщение нужный код:
//| ProjectName |
//| Copyright 2012, CompanyName |
//| http://www.companyname.net |
//+------------------------------------------------------------------+
#property strict
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
struct myorder
{
int Ticket;
double orderopenprice;
int ordertype;
double profit;
double stoploss;
double lot;
};
myorder orders[];
int i;
int Magic=444;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
CalcOrders();
}
//+------------------------------------------------------------------+
void CalcOrders()
{
int count1=0;
for(i=OrdersTotal()-1; i>=0; i--)
{
if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) && (OrderSymbol()==Symbol())
&& (OrderMagicNumber()==Magic) && (OrderType()<2))
{
count1++;
ArrayResize(orders,count1);
orders[count1-1].Ticket=OrderTicket();
orders[count1-1].lot=OrderLots();
orders[count1-1].orderopenprice=OrderOpenPrice();
orders[count1-1].ordertype=OrderType();
orders[count1-1].profit=OrderProfit();
orders[count1-1].stoploss=OrderStopLoss();
}
}
ArraySort(orders,WHOLE_ARRAY,0,MODE_ASCEND);
}
//+------------------------------------------------------------------+
А теперь поглядите какой массив вы заполняете и по какому полю его сортируете. И, главное - зачем нужна эта сортировка? Какой в ней смысл?
И, пожалуйста, не заставляйте меня за вас вставлять в нужное сообщение нужный код:
сортировка массива ордерс, по возрастанию с нулевого значения
например если у нас 20 ордеров и 18 совершенно случайно вышел на пару пунктов в плюс и я его сразу прикрыл руками
сортировка массива ордерс, по возрастанию с нулевого значения
например если у нас 20 ордеров и 18 совершенно случайно вышел на пару пунктов в плюс и я его сразу прикрыл руками
Если тебе обязательно нужна сортировка по тикету, то придётся делать 2 массива. Один массив структур и второй двухмерный, содержащий в первом измерении тикет ордера, а во втором индекс счётчика цикла, тот индекс под которым информация об ордере хранится в массиве структур. И заполнять эти массивы одновременно в одном цикле.
Ты этот вопрос так долго пытаешься решить, что я уже и не помню цель которую ты хочешь достичь. Да и все остальные наверное.
Если всё-же правильно помню, тебе надо выбрать из списка ордеров определённый по номеру в списке. Так какие в этом проблемы??? Сделай простой одномерный массив, засунь туда тикеты, отсортируй и затем OrderSelect(массив[который нужен], SELECT_BY_TICKET) и всё... дальше делай с этим ордером что душе угодно.
Если тебе обязательно нужна сортировка по тикету, то придётся делать 2 массива. Один массив структур и второй двухмерный, содержащий в первом измерении тикет ордера, а во втором индекс счётчика цикла, тот индекс под которым информация об ордере хранится в массиве структур. И заполнять эти массивы одновременно в одном цикле.
Ты этот вопрос так долго пытаешься решить, что я уже и не помню цель которую ты хочешь достичь. Да и все остальные наверное.
Если всё-же правильно помню, тебе надо выбрать из списка ордеров определённый по номеру в списке. Так какие в этом проблемы??? Сделай простой одномерный массив, засунь туда тикеты, отсортируй и затем OrderSelect(массив[который нужен], SELECT_BY_TICKET) и всё... дальше делай с этим ордером что душе угодно.
Я уже тоже не помню чего там нужно. Но то, что делает - ему же на пользу.
Я ж специально прошу его написать сначала одно, а потом прошу внимательно поглядеть на написанное, чтобы он сам понял, что так не пойдёт - нужен ещё один массив локальный прямо в функции, который и нужно сортировать, а уже потом заполнять глобальный массив из отсортированного.
Если тебе обязательно нужна сортировка по тикету, то придётся делать 2 массива. Один массив структур и второй двухмерный, содержащий в первом измерении тикет ордера, а во втором индекс счётчика цикла, тот индекс под которым информация об ордере хранится в массиве структур. И заполнять эти массивы одновременно в одном цикле.
Ты этот вопрос так долго пытаешься решить, что я уже и не помню цель которую ты хочешь достичь. Да и все остальные наверное.
Если всё-же правильно помню, тебе надо выбрать из списка ордеров определённый по номеру в списке. Так какие в этом проблемы??? Сделай простой одномерный массив, засунь туда тикеты, отсортируй и затем OrderSelect(массив[который нужен], SELECT_BY_TICKET) и всё... дальше делай с этим ордером что душе угодно.
Не, я понимаю что есть куча способов сделать это по другому и обойтись без массивов . Зачем 2 если есть один из стрктур?
Потому, что простой массив сортируется по значениям в первом измерении массива, а как сортируется массив структур я не представляю.
Хотя вопрос интересный... Сейчас попробую сортировку массива структур.
Потому, что простой массив сортируется по значениям в первом измерении массива, а как сортируется массив структур я не представляю.
Хотя вопрос интересный... Сейчас попробую сортировку массива структур.
Потому, что простой массив сортируется по значениям в первом измерении массива, а как сортируется массив структур я не представляю.
Хотя вопрос интересный... Сейчас попробую сортировку массива структур.
вот и я не представляю что это такое и с чем его едят
но раз эту тему подняли глупо забрасывать. Там еще массивы классов есть.
Я вообще не представляю, зачем это в виде структуры. Программа mq пишется в одном файле, работа с массивом происходит в одной прокрутке скроллинга, и вмещается в один экран. Какой смысл в структуре в этом случае, ради спортивного интереса?
Да мы всё пишем ради спортивного интереса. Сначала понимаем что и как работает, а уже потом начинаем осмысливать как-бы поэффективней написать.
Что касается сортировки массива структур: как я и предполагал эксперимент не удался. Уже во время компиляции компилятор сказал что "expression has no effect"