Ламерский вопрос

Образцы, куски исходников, вопросы. Обсуждаем программирование.
Сообщение
Автор
Аватара пользователя
Terranin
Site Admin
Сообщения: 846
Зарегистрирован: Вс июл 23, 2006 12:01 pm

#51 Сообщение Terranin » Вс сен 09, 2007 3:12 pm

VVV писал(а):
Terranin писал(а):Похоже бага, сравнивал по параметрам валюте и тамфрейму а имя забыл проверить. Исправил, выпущу обновление в ближайшие 2 дня. Эта бага проявляется только когда параметры 2х индикаторов полностью совпадают.
Спасибо, будем ждать :)
Выложил обновление. Можно скачивать.
Asta la vista
Mike

Komanch
Сообщения: 42
Зарегистрирован: Пн апр 02, 2007 9:04 am
Откуда: Красноярск

#52 Сообщение Komanch » Ср сен 10, 2008 6:30 am

Доброго времени суток. Вот такой вопрос у меня - как получить доступ к последней по времени закрытой позиции, направление, прибыль и т. д? Как я понимаю, для этого есть фкнкция OrderSelect, флаг надо установить SELECT_BY_POS. А каким образом нумеруются ордера в списке? Т. е. какой номер имеет последняя по времени закрытая поза.

Аватара пользователя
Terranin
Site Admin
Сообщения: 846
Зарегистрирован: Вс июл 23, 2006 12:01 pm

#53 Сообщение Terranin » Ср сен 10, 2008 1:14 pm

Komanch писал(а):Доброго времени суток. Вот такой вопрос у меня - как получить доступ к последней по времени закрытой позиции, направление, прибыль и т. д? Как я понимаю, для этого есть фкнкция OrderSelect, флаг надо установить SELECT_BY_POS. А каким образом нумеруются ордера в списке? Т. е. какой номер имеет последняя по времени закрытая поза.
Позиции нумеруются от 0 и до HistoryTotal - 1, последняя позиция и есть последняя закрытая. Выбирать нужно из журнала истории OrderSelect(SELECT_BY_POS, MODE_HISTORY, HistoryTotal - 1)
Asta la vista
Mike

Komanch
Сообщения: 42
Зарегистрирован: Пн апр 02, 2007 9:04 am
Откуда: Красноярск

#54 Сообщение Komanch » Чт сен 11, 2008 8:21 am

ОК, сенкс. А посмотреть результат этой сделки функцией OrderProfit или OrderProfitPips. Т. е. эти функции для закрытых позиций тоже актуальны?

И ещё - непонятны мне слегка типы ордеров в TTradePositionType...
Чем отличается тип "tp_Buy" от "tp_BuyLimit" или "tp_BuyStop"? Просвети, плиз....

Аватара пользователя
Terranin
Site Admin
Сообщения: 846
Зарегистрирован: Вс июл 23, 2006 12:01 pm

#55 Сообщение Terranin » Чт сен 11, 2008 1:44 pm

Komanch писал(а):ОК, сенкс. А посмотреть результат этой сделки функцией OrderProfit или OrderProfitPips. Т. е. эти функции для закрытых позиций тоже актуальны?

И ещё - непонятны мне слегка типы ордеров в TTradePositionType...
Чем отличается тип "tp_Buy" от "tp_BuyLimit" или "tp_BuyStop"? Просвети, плиз....
Функции актуальны, а с ордерами чего ж непонятного? tp_BuyLimit - отложенный ордер на покупку ниже цены, tp_BuyStop - отложенный ордер на покупку выше цены, tp_Buy - открытая позиция на покупку.
Asta la vista
Mike

Komanch
Сообщения: 42
Зарегистрирован: Пн апр 02, 2007 9:04 am
Откуда: Красноярск

#56 Сообщение Komanch » Пт сен 12, 2008 3:20 am

Ну, вроде понял... Спасибо. Я просто торгую через Форекс Клуб, а у них такая терминология не используется, там попроще...

Аватара пользователя
Hunter
Сообщения: 49
Зарегистрирован: Сб ноя 21, 2009 10:22 am
Откуда: Санкт-Петербург

#57 Сообщение Hunter » Пн май 10, 2010 6:15 pm

Здравствуйте.
В Дельфи почему-то не работает функция Round()
То есть в таком виде она работает:
Round(2.55)
А вот в таком (с указанием, до какого знака округлять) не работает:
Round(2.55, 1)
Подскажите, пожалуйста, в чем можт быть дело?
Дилетанту всё понятно. Специалисту ничего не понятно.

Аватара пользователя
Terranin
Site Admin
Сообщения: 846
Зарегистрирован: Вс июл 23, 2006 12:01 pm

#58 Сообщение Terranin » Пн май 10, 2010 6:48 pm

Hunter писал(а):Здравствуйте.
В Дельфи почему-то не работает функция Round()
То есть в таком виде она работает:
Round(2.55)
А вот в таком (с указанием, до какого знака округлять) не работает:
Round(2.55, 1)
Подскажите, пожалуйста, в чем можт быть дело?
Используйте RoundTo(2.55, -1);
Asta la vista
Mike

Аватара пользователя
Hunter
Сообщения: 49
Зарегистрирован: Сб ноя 21, 2009 10:22 am
Откуда: Санкт-Петербург

#59 Сообщение Hunter » Вс авг 08, 2010 4:58 pm

Снова здравствуйте! Спасибо за обновление, замечательно!
Но непонятно вот что:
8. В интерфейсных файлах API для Delphi переменные типа string заменены на AnsiiString для совместимости с новой версией Delphi которая использует строки формата Unicode.

У меня прекрасно работают старые DLL с использованием string. Создаю новые, тоже со string, и тоже работает!
Какую функцию Вы мне рекомендуете использовать?
Дилетанту всё понятно. Специалисту ничего не понятно.

Аватара пользователя
Terranin
Site Admin
Сообщения: 846
Зарегистрирован: Вс июл 23, 2006 12:01 pm

#60 Сообщение Terranin » Вс авг 08, 2010 5:56 pm

Hunter писал(а):Снова здравствуйте! Спасибо за обновление, замечательно!
Но непонятно вот что:
8. В интерфейсных файлах API для Delphi переменные типа string заменены на AnsiiString для совместимости с новой версией Delphi которая использует строки формата Unicode.

У меня прекрасно работают старые DLL с использованием string. Создаю новые, тоже со string, и тоже работает!
Какую функцию Вы мне рекомендуете использовать?
Это только для Delphi 2010 +, они перешли на строки Unicode где каждый символ задается 2мя байтами. Все предыдущие версии Delphi будут работать со старыми библиотеками. Поэтому пришлось прописать все строки как AnsiString для указания что там 1 байт на символ.
Asta la vista
Mike

Аватара пользователя
Hunter
Сообщения: 49
Зарегистрирован: Сб ноя 21, 2009 10:22 am
Откуда: Санкт-Петербург

#61 Сообщение Hunter » Сб ноя 27, 2010 11:36 pm

Здравствуйте.
Программой пользуюсь давно, но только сейчас обнаружил:
если стратегия устанавливает отложенный ордер, но он не открывается, и стратегия его через некоторое время удаляет, то этот ордер не попадает в список ордеров MODE_HISTORY. Так и должно быть?
Дилетанту всё понятно. Специалисту ничего не понятно.

Аватара пользователя
Terranin
Site Admin
Сообщения: 846
Зарегистрирован: Вс июл 23, 2006 12:01 pm

#62 Сообщение Terranin » Вс ноя 28, 2010 12:22 am

Hunter писал(а):Здравствуйте.
Программой пользуюсь давно, но только сейчас обнаружил:
если стратегия устанавливает отложенный ордер, но он не открывается, и стратегия его через некоторое время удаляет, то этот ордер не попадает в список ордеров MODE_HISTORY. Так и должно быть?
Да, так и есть. Когда писался этот блок подумалось а нафиг они нужны несработавшие в журнале, только засорять будут. И соответсвенно поиск в журнале будет занимать больше времени.
Asta la vista
Mike

Аватара пользователя
Hunter
Сообщения: 49
Зарегистрирован: Сб ноя 21, 2009 10:22 am
Откуда: Санкт-Петербург

#63 Сообщение Hunter » Ср мар 13, 2013 7:50 pm

В справке по индикатору Bollinger Bands указано, как выставить его параметры для советника:
'35;2.00;0;Close' (Период, отклонение, шифт, цена)
-- а как указать, какой тип скользящей средней (простая, экспоненициальная и т.п.)?
Дилетанту всё понятно. Специалисту ничего не понятно.

FT Support
Сообщения: 329
Зарегистрирован: Сб июл 11, 2009 3:59 pm

#64 Сообщение FT Support » Чт мар 14, 2013 4:58 pm

Параметры для любого индикатора можно задать, посмотрев на них в "ручном режиме", параметры задаются в том же порядке и должны буква в букву соответствовать тому, что видно в окне свойств индикатора.

Аватара пользователя
Hunter
Сообщения: 49
Зарегистрирован: Сб ноя 21, 2009 10:22 am
Откуда: Санкт-Петербург

#65 Сообщение Hunter » Вт мар 19, 2013 9:36 am

FT Support писал(а):Параметры для любого индикатора можно задать, посмотрев на них в "ручном режиме", параметры задаются в том же порядке и должны буква в букву соответствовать тому, что видно в окне свойств индикатора.
Делаю так:
'35;2.00;0;Close;Simple (SMA)'
-- не помогает. То ли там скрытые пробелы есть?
Дилетанту всё понятно. Специалисту ничего не понятно.

FT Support
Сообщения: 329
Зарегистрирован: Сб июл 11, 2009 3:59 pm

#66 Сообщение FT Support » Вт мар 19, 2013 4:25 pm

Странно, должно работать. Возможно проблема в том, что в Вашей системе нужно использовать запятую как разделитель разрядов ("2,00" вместо "2.00").
Получается ли использовать другие индикаторы?

Аватара пользователя
Hunter
Сообщения: 49
Зарегистрирован: Сб ноя 21, 2009 10:22 am
Откуда: Санкт-Петербург

#67 Сообщение Hunter » Вт мар 19, 2013 5:44 pm

Боллинджер пишет 'illegal value' (в том поле, где вручную задается Simple (SMA)). Большой беды в этом нет, можно остановить стратегию в начале тестирования и вручную установить значение, а потом продолжить тест.
С другими индикаторами проблем не было, за исключением ЗигЗага - но это не Ваш ЗигЗаг, а самодельный. Работает хорошо, но при ручном тестировании если приостановить тест и отмотать назад - за последний экстремум ЗигЗага, то начинает работать неправильно. На всякий случай - вдруг Вам будет интересно - прикрепляю файл с кодом этого ЗигЗага.
Вложения
iZZpoints.zip
(1.67 КБ) 685 скачиваний
Дилетанту всё понятно. Специалисту ничего не понятно.

Аватара пользователя
Hunter
Сообщения: 49
Зарегистрирован: Сб ноя 21, 2009 10:22 am
Откуда: Санкт-Петербург

#68 Сообщение Hunter » Вт май 14, 2013 10:00 am

При отладке советника нужно узнать, какое значение принимает переменная в определенный момент.
Как это сделать? Например, как записать в текстовый файл или вывести в виде сообщения?
Дилетанту всё понятно. Специалисту ничего не понятно.

Аватара пользователя
Terranin
Site Admin
Сообщения: 846
Зарегистрирован: Вс июл 23, 2006 12:01 pm

#69 Сообщение Terranin » Вт май 14, 2013 1:54 pm

Hunter писал(а):При отладке советника нужно узнать, какое значение принимает переменная в определенный момент.
Как это сделать? Например, как записать в текстовый файл или вывести в виде сообщения?
Можно выводить сообщение функцией Print, она пишет в журнал его можно видеть во время работы программы и он сохраняется в файл. Можно писать напрямую в какой-нибудь файл самому. Можно использовать команду Breakpoint - ставит на паузу, выводит окно сообщения.
Asta la vista
Mike

Аватара пользователя
Hunter
Сообщения: 49
Зарегистрирован: Сб ноя 21, 2009 10:22 am
Откуда: Санкт-Петербург

#70 Сообщение Hunter » Пн ноя 25, 2013 7:00 am

Подскажите, пожалуйста, почему в нижеприведенном коде не работает строка {1} (и, соответственно, не работает строка {2}).
Пришлось их закомментировать и заменить строкой {3}, но это не совсем то, что мне нужно.
Заранее спасибо!

// Пересчитывает баланс торговой системы после закрытия сделки
// Возвращает значение баланса
function GetCurrentBalanceTS(var LCOrder: integer; myDeposit: double; N: string): double;
var
k: integer;
infoorder: TTradePosition;
begin
result := myDeposit;
for k := LCOrder to HistoryTotal - 1 do
begin
if OrderSelect(k, SELECT_BY_POS, MODE_HISTORY) then
if (OrderComment = Commentar + Symbol + N) then
if k > LCOrder then
//{1} if GetOrderInfo(OrderTicket, infoorder) then
begin
LCOrder := k;
//{2} result := result + infoorder.profit + infoorder.swap + infoorder.commission;
{3} result := result + OrderProfit;

end;
end;
end;
Дилетанту всё понятно. Специалисту ничего не понятно.

Аватара пользователя
Hunter
Сообщения: 49
Зарегистрирован: Сб ноя 21, 2009 10:22 am
Откуда: Санкт-Петербург

#71 Сообщение Hunter » Ср дек 25, 2013 5:19 pm

Хм... Приходят сообщения на е-мейл, что в теме появился ответ; заглядываю - а ответа нет...
Дилетанту всё понятно. Специалисту ничего не понятно.

Ответить