Вадим, я бы сделал так же как Вы отписали! Поэтому я и задал вопрос. Думал, может я что не учёл. Пока ещё наблюдаю за своей логикой, и за логикой других программистов. Так как кроме основной логики, вижу, что нужно учитывать ряд факторов.
RefreshRates() обновляет историю в потоке эксперта. MarketInfo() берёт данные с сервера. Обновлять не требуется. Лишний тормоз.
Если обновлять надо, то простой вызов RefreshRates() может ничего не дать. Надо как-то контроллировать и обрабатывать событие прихода всей истории.
crespo1985: привет как пользоваться программой metaeditor?
Ну здаров! Как хочешь, так и пользуйся! Вам не сюда с такими вопросами.. Тут форум программистов..
Zhunko:
RefreshRates() обновляет историю в потоке эксперта. MarketInfo() берёт данные с сервера. Обновлять не требуется. Лишний тормоз.
Если обновлять надо, то простой вызов RefreshRates() может ничего не дать. Надо как-то контроллировать и обрабатывать событие прихода всей истории.
Да. Я так понимаю, RefreshRates() обновляет рыночные данные (их историю до текущего времени), и далее переменная рыночного окружения использует последнее из полученных значении. На сколько я понимаю, это единственный логичный вариант. По сему, эта функция написано будет проще и шустрее, и, логичнее, и практичнее, и надёжнее, вот так?
Да. Я так понимаю, RefreshRates() обновляет рыночные данные (их историю до текущего времени), и далее переменная рыночного окружения использует последнее из полученных значении. На сколько я понимаю, это единственный логичный вариант. По сему, эта функция написано будет проще и шустрее, и, логичнее, и практичнее, и надёжнее, вот так?
Доброго дня! Простите за банальность. Строки из робота, робот у меня уже не первый год, и в принципе цикл такого вида неизмено кочует из одного в другой.
функция Кима имеет параметра время = "Дата и время в секундах с 1970 года"
я пробовал 2 варианта
и оба выдают профит не за текущий день, а полный профит по всей истории....
int t=( TimeCurrent()-( (Hour()*3600) +(Minute()*60)+Seconds() ) );
int t=( (Hour()*3600) +(Minute()*60)+Seconds() );
//+----------------------------------------------------------------------------+//| Автор : Ким Игорь В. aka KimIV, http://www.kimiv.ru |//+----------------------------------------------------------------------------+//| Версия : 19.02.2008 |//| Описание : Возвращает суммарный профит в валюте депозита |//| закрытых с определённой даты позиций |//+----------------------------------------------------------------------------+//| Параметры: |//| sy - наименование инструмента ("" - любой символ, |//| NULL - текущий символ) |//| op - операция (-1 - любая позиция) |//| mn - MagicNumber (-1 - любой магик) |//| dt - Дата и время в секундах с 1970 года ( 0 - с начала истории) |//+----------------------------------------------------------------------------+double GetProfitFromDateInCurrency(string sy="", int op=-1, int mn=-1, datetime dt=0)
{
double p=0;
int i, k=OrdersHistoryTotal();
if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (mn<0 || OrderMagicNumber()==mn) {
if (dt<OrderCloseTime()) {
p+=OrderProfit()+OrderCommission()+OrderSwap();
}
}
}
}
}
}
return(p);
}
Доброго дня! Простите за банальность. Строки из робота, робот у меня уже не первый год, и в принципе цикл такого вида неизмено кочует из одного в другой.
А почему у меня ордерс тотал минус один? А верно ли, что цикл идет на уменьшение переменной и?
Цикл считает индекс от 0 до Тотал-1 или от Тотал-1 до 0. Потому нужен знак минуса или знак меньше < .
Через получать данные через MarketInfo()даже для инструмента данного окна по-моему будет накладно по ресурсам, Вы так не считаете?
Zhunko:
Для обновления истории надо отдельную функцию писать.
Я не совсем понимаю логики написания отдельной функции. Ведь функция RefreshRates() сама по себе служит для обновления данных предопределённых переменных. А Bid и Ask это, как раз-таки и есть предопределённые переменные. Если функция RefreshRates() обновляет предопределённые переменные, то зачем писать какую-то дополнительную функцию?Можно пояснить?
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Вадим, я бы сделал так же как Вы отписали! Поэтому я и задал вопрос. Думал, может я что не учёл. Пока ещё наблюдаю за своей логикой, и за логикой других программистов. Так как кроме основной логики, вижу, что нужно учитывать ряд факторов.
RefreshRates() обновляет историю в потоке эксперта. MarketInfo() берёт данные с сервера. Обновлять не требуется. Лишний тормоз.
Если обновлять надо, то простой вызов RefreshRates() может ничего не дать. Надо как-то контроллировать и обрабатывать событие прихода всей истории.
привет как пользоваться программой metaeditor?
Ну здаров! Как хочешь, так и пользуйся! Вам не сюда с такими вопросами.. Тут форум программистов..
RefreshRates() обновляет историю в потоке эксперта. MarketInfo() берёт данные с сервера. Обновлять не требуется. Лишний тормоз.
Если обновлять надо, то простой вызов RefreshRates() может ничего не дать. Надо как-то контроллировать и обрабатывать событие прихода всей истории.
Да. Я так понимаю, RefreshRates() обновляет рыночные данные (их историю до текущего времени), и далее переменная рыночного окружения использует последнее из полученных значении. На сколько я понимаю, это единственный логичный вариант. По сему, эта функция написано будет проще и шустрее, и, логичнее, и практичнее, и надёжнее, вот так?
Да. Я так понимаю, RefreshRates() обновляет рыночные данные (их историю до текущего времени), и далее переменная рыночного окружения использует последнее из полученных значении. На сколько я понимаю, это единственный логичный вариант. По сему, эта функция написано будет проще и шустрее, и, логичнее, и практичнее, и надёжнее, вот так?
Я бы так:
Для обновления истории надо отдельную функцию писать.
2 часа пытаюсь написать тестовый кусок, для дальнейшего тестирования разных условий.
Не работает!
подскажите ошибку пожалуйста
смысл чтобы ордера открывались по прошествии 2пп в свою сторону.
открывается sell и с концами...
Доброго дня! Простите за банальность. Строки из робота, робот у меня уже не первый год, и в принципе цикл такого вида неизмено кочует из одного в другой.
А почему у меня ордерс тотал минус один? А верно ли, что цикл идет на уменьшение переменной и?
функция Кима имеет параметра время = "Дата и время в секундах с 1970 года"
я пробовал 2 варианта
и оба выдают профит не за текущий день, а полный профит по всей истории....
Доброго дня! Простите за банальность. Строки из робота, робот у меня уже не первый год, и в принципе цикл такого вида неизмено кочует из одного в другой.
А почему у меня ордерс тотал минус один? А верно ли, что цикл идет на уменьшение переменной и?
Я бы так:
Через получать данные через MarketInfo() даже для инструмента данного окна по-моему будет накладно по ресурсам, Вы так не считаете?
Для обновления истории надо отдельную функцию писать.
Я не совсем понимаю логики написания отдельной функции. Ведь функция RefreshRates() сама по себе служит для обновления данных предопределённых переменных. А Bid и Ask это, как раз-таки и есть предопределённые переменные. Если функция RefreshRates() обновляет предопределённые переменные, то зачем писать какую-то дополнительную функцию?Можно пояснить?