Страница 3 из 6

Добавлено: Чт фев 10, 2011 11:10 am
Николай Тарасов
Да, и, конечно же, "1 Справочник MQL4 - Содержание", собственной персоной (см. рисунок).


Что тут хочется сказать?
Очень удобная структура у справочника.
Отточенная, проверенная временем.
Её можно просто максимально близко воспроизвести.
А о прочих премудростях C++ и Delphi большинству пользователей знать и не требуется. :wink:
Достаточно лишь того, что есть в Справочнике MQL4.


Михаил, Александр, Man (простите, не знаю вашего настоящего имени).
Сделайте что-то подобное. :!:
И, уверяю вас, масса вопросов к вам отпадут сами собой.

Мой небольшой личный опыт программирования для FT2
(а, судя по форумам, опыт многих других) показывает,
что масса времени тратится на поиски всякой ерунды.
Часто правил элементарного синтаксиса и пунктуации.

Заметьте, ведь никто не просит от вас каких-то вычурных алгоритмов.
Всем надо получить то, к чему уже привык в MT4 или иной торговой оболочке.
А FT2 всего лишь симулятор. И он должен максимально полно соответствовать реальной "среде обитания".

Так дайте народу, чего он хочет.
И улыбка к вам не раз ещё вернётся.
:wink:



PS
Похоже, от сравнений FT2 с MT4 никуда не деться.
Так что, логичнее будет (да и выгоднее для всех),
если FT будет стремиться соответствовать народному любимцу.
:wink:

Добавлено: Чт фев 10, 2011 2:12 pm
FT Support
Здравствуйте, Николай,

По поводу функции YearOf, HourOf....
Все они являются встроенными функциями Delphi. На английском форуме мы с tonyb обсуждали функцию HourOf для C++ а не для Delphi поэтому тут никаких сложных агоритмов придумывать не нужно, достаточно просто вызвать встроенные функции.

http://4programmers.net/Delphi/YearOf
http://4programmers.net/Delphi/HourOf

да, справка конечно далеко не совершенна, но мы будем её дорабатывать

Добавлено: Чт фев 10, 2011 3:19 pm
Николай Тарасов
FT Support писал(а):Здравствуйте, Николай,
...
да, справка конечно далеко не совершенна, но мы будем её дорабатывать
Да уж, пожалуйста. Будьте так добры.
И срочно, срочно! Сего-дня же! :wink:

* * *
Вообще какая-то странная ситуация получается.
Вроде бы Михаил ищет способы продвижения своего продукта.
Интересуется, как попасть в десятку, выдаваемую интернет-поисковиками.
Но в то же время не особо обращает внимание на насущные потребности своих клиентов.
Делает тихонько свою машинку. Так - для себя.
Улучшает то, что считает нужным, не обращая особого внимания на то, о чём говорят (просто кричат!) благожелательные пользователи.
Существует в режиме, что называется "тихо сам с собою я веду беседу".

* * *
Буду конструктивным.
Вам бы маркетолога профессионального, а то и фирму маркетинговую нанять. Вот бы они вам расставили приоритеты.
Грамотно, а не как придётся.

На худой конец самим можно проучиться на каких-нибудь курсах повышения квалификации
в области маркетинга и/или стратегического менеджмента. MBA (Master of Business Administration), например.

Вот тогда бы вы в своих планах начали учитывать такие вещи, как:
- понимание своих клиентов;
- стоимость затрат на первичное и вторичное привлечение покупателей;
- целевые группы и агрегирование рынка и т.д., и т.п..

И сайт (форум) бы у вас поддерживали, извините, не "Винтики" и "Шпунтики" с железными сердцами,
а какие-нибудь посредники-коммуникаторы, чтобы держали руку на пульсе и правильно отслеживать обратную связь.
Или курировали хотя бы.


PS
Можете, конечно, удалить эти мои излияния. Да и забыть.
При любом раскладе - вам решать.

Добавлено: Пт фев 11, 2011 9:28 am
FT Support
Здравствуйте, Николай,

Мы и так стараемся учесть потребности наших клиентов, может Вы не заметили, но очень много просьб, высказанных здесь на форуме (и не только) уже были воплощены в жизнь.

Но учтите и тот факт, что мы не можем удовлетворить всех и сразу у нас нет сотен сотрудников, которые бы это делали, мы скромная компания, которая постепенно разрабатывает продукт (эволюция на лицо).

Мы и впредь будем делать те вещи, которые нужны большинству клиентов, это наша политика, Ваше право с ней не соглашаться.

Добавлено: Пт фев 11, 2011 9:52 am
Николай Тарасов
Дай да Бог.

Error of Objects Time

Добавлено: Чт фев 17, 2011 8:57 am
Николай Тарасов
Здравствуйте.

Заметил ошибку отображения на графике графических объектов, выставляемых заранее перед графиком цены (см. рисунок).

Причём, не имеет значения, как на график попадают опережающие объекты. Из скрипта или вручную - всё едино.

Пока мне попадались ошибки не более, чем на 1 бар.
В общем-то, это не страшно. Но всё же.
Здесь ляп, там ляп. Глядишь, и на ложку дёгтя наберётся.
Я имею в виду, что возможно, что индикаторы и стратегии у вас тем же больны. А это уже может быть чувствительно для пользователей.

В MT4 такого не замечал.

Пересчёт всех данных не помог. Объекты, где были, там и остались.



PS
Я тут вспомнил.
Ведь у вас все бары сразу известны (потому что из минуток рассчитываются) - ещё до постройки опережающих объектов.
Значит, их сразу можно расставлять на свои места (бары) правильно.
Поэтому подобная путаница с барами недопустима изначально.
И бросающегося в глаза (во время тестирования) поджимания друг к другу вертикальных линий быть не должно.

Проверьте алгоритм, перерисовывающий бары (новые и старые) и опережающие объекты.

Добавлено: Чт фев 17, 2011 7:21 pm
FT Support
Здравствуйте, Николай,

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

Похоже, у нас снова недопонимание

Добавлено: Пт фев 18, 2011 4:22 am
Николай Тарасов
FT Support писал(а):Здравствуйте, Николай,

Не хорошо будет если программа будет "знать будущие бары" это уже не тренажер получится ведь в реальной жизни всё не так, в реальной жизни неизвестно будет ли работать сервер брокера в ближайшее время или нет и т.д.
поэтому линии, нарисованные "в будущее" никак не могут считаться константными
Так или иначе, не хорошо, что выставленная с опережением вертикальная линия с собственной координатой '2008.11.07 20:00', при подходе к ней графика цены оказалась не на своём месте (наличие бара '2008.11.07 20:00' можете проверить сами), а на предыдущем баре '2008.11.07 16:00' (см. рисунок 'Error of Objects Time' выше).


PS
Чтобы отловить данную ошибку, повыставляйте несколько опережающих вертикальных линий в произвольном порядке.

Можно взять что-то другое (тренды или прямоугольники). Но вертикальные линии удобнее - у них легче смотреть time-координату (простым наведением курсора).

И после того, как до них доползёт "змейка" цены, сравните формальные и фактические координаты ваших линий.

* * *
Понятно, что описанная проблема будет проявляться не на всех объектах, а судя по всему лишь на тех, которые выпадают на другую рабочую неделю от текущей. Поэтому лучше тестировать график H4.

* * *
Можно, конечно, ваш скрипт 'ObjectsTest' подработать для этих целей.
Но вручную получается не хуже.

Добавлено: Пт фев 18, 2011 9:41 am
FT Support
Здравствуйте, Николай,

Пока что воспроизвести проблему не удалось, вертикальная линия на 2008.11.07 20:00 вела себя нормально (см скриншот)

Можете ли Вы прислать нам проект или темплейт, на котором будет видна проблема?

Ошибка позиционирования

Добавлено: Пт фев 18, 2011 7:39 pm
Николай Тарасов
Постараюсь.
Хотя лучше ещё раз на словах попробую всё разъяснить.

Во-первых, речь идёт не о проблеме с конкретной вертикальной линией '2008.11.07 20:00'.
Проблема имеет систематический характер.

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

А вы, вероятно, выставляли вертикаль именно на дату '2008.11.07 20:00' через свойства объекта. Этого-то, как раз, делать и не стоило.



Лично я рекомендую такую последовательность действий.

1. Запустите тестирование (кнопка "Старт Тест"). График цены (желательно H4) должен поползти вправо.

2. Вручную выставите три-четыре опережающие (на чистой, незанятой ещё части графика правее последнего бара) вертикальные линии в случайном порядке (куда и как придётся).

3. Далее наблюдайте. "Змейка цены" должна подползать всё ближе и ближе к вашим линиям.

4. Иногда видимое расстояние между линиями может скачкообразно уменьшаться (схлапываться). Надо полагать, хотя и не факт, из-за выходных дней, "вываливающихся" с временной оси.

/Тут стоит заметить странность.
Ладно если бы, эти выходные обнаруживали себя по факту (то есть когда бары уже были бы нарисованы возле ваших линий). Но схлапывание наблюдается заранее - еще задолго до того, как "змейка цены" прикасается к вашим линиям./

5. После прохождения фронта цены за ваши линии (правее их) прекратите тестирование (кнопки "Пауза" или "Стоп Тест").

6. Наведите курсор на график цены и шёлкните колёсико мышки (аналог сочетания клавиш 'Ctrl+F' в MT4).
Должно появиться перекрестие вертикальной и горизонтальной чёрных информационных линий, отражающее текущие координаты курсора на графике цены.

7. Проверьте координаты всех ваших линии, попеременно наводя на них курсор.
Сравнивайте координату, которая указывается во всплывающей характеристике вашей вертикальной линии (справа сбоку от курсора), и координату курсора (снизу на временной шкале).

* * *
Я заметил, что ошибка позиционирования наблюдается лишь у тех линий, которые во время теста были подвергнуты процедуре схлапывания. И то не у всех.
А у каких именно - это уж вопрос к вам, дорогие наши разработчики.



PS
Для чистоты эксперимента можно переделать ваш скрипт "Тест Объектов", чтобы он равномерно (или в случайном порядке) обстреливал график опережающими вертикальными метками.

Но у меня и в ручном режиме всё замечательно воспроизводится.
Думаю, и у вас получится.
Вона я какой "Манускрипт" наваял. :wink:
Куда уж подробнее?

Загадочное исчезновение. // Дым без огня?

Добавлено: Пт фев 18, 2011 8:54 pm
Николай Тарасов
Ха!
Решил сейчас проверить то, что вам предложил выше.
Попробовал раз, другой, пятый - не выходит.
Проблема пропала куда-то. :?

Засомневался было. Вот, мол, - думаю, - поднял шум, а подтверждений нет.
Но вспомнил, что есть документ - рисунок 'Error of Objects Time' (см. выше).
Ведь было такое? Было. И многократно.
Что в ручном, что в автоматическом режиме.

* * *
В общем, есть версия, что в тот период времени процессор у меня работал в перегруженном режиме (100%).
Я тогда сканировал диски Антивирусником, в Delphi редактировал код, тестировал FT, слушал AudioJet, смотрел MT-терминал и интернет одновременно. А перегруженность в частности проявлялась в регулярном "притормаживании" ("подвисании") видео-клипов.

Вероятно, всё это могло способствовать смещению объектов на временной оси в FT.
Помнится такую тонкость в MT4 описывали.
Что мол, "если процесс вычисления не успеет завершиться на момент прорисовки (появления) следующего тика, то" у вас будет то-то, и то-то.

* * *
Понаблюдаю ещё.
Может, всё и наладится.
В любом случае, Александр, благодарю вас за отзывчивость!



PS:
Раз уж снова привлёк ваше внимание, озвучу ещё пару вопросов-предложений:

1. Вы знаете, что при первоначальном тестировании (самом первом, после запуска FT) недоступны никакие кнопки. Ни "+", ни "-". Ни одна из кнопок для установки объектов. Все они (кроме одной кнопки - "Пауза") изображаются неяркими красками и "нажать" (курсором) на них не возможно.
После остановки (нажатия на паузу) все кнопки "оживают" и становятся доступными.
* * *
Вроде мелочь, но всё же, думаю, стоит сказать о ней.

2. Не понял, как можно удалять ненужные скрипты? Неужели только вручную, самостоятельно вычищая папки FT со скриптами?
Было бы не плохо удаление скриптов сделать столь же легким, как и их установку. То есть чрез нажатие каких-нибудь кнопок внутри самой программы.

3. Планирует ли Михаил дополнить ScriptInterfaceUnit функциями для работы с экранными координатами? Такими как:
1. Added new function ChartToScrX - converts index to screen x coordinate
2. Added new function ChartToScrY - converts price to screen y coordinate
3. Added new function ScrToChartX - converts screen x coordinate to index
4. Added new function ScrToChartY - converts screen y coordinate to price

Продолжаю делиться опытом

Добавлено: Вс фев 20, 2011 12:06 pm
Николай Тарасов
Отловил у себя ошибку, которая, как выяснилось, возникла, при не совсем корректном переводе MT4-кода на Delphi-код.
Дело в том, что MT4-функцию MathFloor() (см. рисунок) нельзя и просто так заменить на Delphi-функцию Trunc(). Иначе проблем в отрицательной области значений аргумента не избежать.
Но можно сделать вот так:

Код: Выделить всё

var
   x:  Double;
// ...
   x:= ...;                                                              
   x:= Trunc(x+(Abs(Trunc(x))+1))-(Abs(Trunc(x))+1); 
Либо же можно сделать специальную функцию с одноимённым названием.

Функция Floor()

Добавлено: Вс фев 20, 2011 12:49 pm
Николай Тарасов
Итак, прошу любить и жаловать - функция Floor() - полный Delphi-аналог MQL4-функции MathFloor().

Код: Выделить всё

  function Floor(x: Double): Double;
  // Функция возвращает числовое значение, представляющее наибольшее целое
  // число, которое меньше или равно x. Это полный Delphi-аналог
  // функции double MathFloor(double x) в MQL4 (MetaQuotes Language 4).
  // Пример:
  //   Наименьшее целое от 2.8 есть 2.
  //   Наименьшее целое от -2.8 есть -3.
  var
    y:  Double;
  begin
    y:= Trunc(x + (Abs(Trunc(x))+1)) - (Abs(Trunc(x))+1);
    Result := y;
  end;
PS
Простите, выяснилось, что такая функция в Delphi уже есть.
Подробнее смотрите здесь: http://www.helloworld.ru/texts/comp/lan ... th5104.htm

Теперь я знаю!!! :?

Добавлено: Пн фев 21, 2011 8:33 am
Николай Тарасов
FT Support писал(а):Здравствуйте, Николай,
...
Можете ли Вы прислать нам проект или темплейт, на котором будет видна проблема?
Здравствуйте, Александр.
Спасибо, что спросили про темплейт. :wink:
Теперь я знаю что это такое.

Темплейтами (template - копир по-английски) называются записи с экрана компьютера.

Эта технология - аналог создания скриншотов (screenshot - снимок (копия) экрана). Только программы, которые это делают (например, UVScreenCamera 4.5.0.98 - см. приложение или http://sweet.211.ru/action/download/downloadid/6494/), не фотографируют экран, а делают видеозаписи.

А это очень удобно, чтобы создавать целые видеоуроки.
Вот такие, например: http://www.youtube.com/user/Terranin#p/u
Всем рекомендую.


PS
Обмен обогащает. Не правда ли?

Добавлено: Вт фев 22, 2011 1:04 pm
FT Support
Здравствуйте, Николай,

1) Ошибку с "прыгающими" вертикальными линиями мы так и не отловили (а следовательно исправить пока что не сможем). Да, линии действительно перемещаются, но только за счёт несуществующих баров (например выходных) после перемещения линий их показания остаются правильными если только линия не была изначально установлена на несуществующий бар.
Проверял я всё именно так как Вы сказали в первый раз (установил много вертикальных линий впереди графика и запустил тестирование) после этого сравнивал показания линий с фактическими координатами на графике.

2) Да, действительно была проблема с недоступными кнопками после начала тестрования, но насколько помню мы её уже исправили, по кайней мере на скорую руку воспроизвести на последней версии не получилось. Какая версия у Вас?

3) Скрипты, Индикаторы, Стратегии пока что можно удалить только вручную из папки, но не думаю что это большая проблема, насколько помню в МТ тоже нельзя ничего удалить пользуясь лишь интерфейсом терминала

4) Не советую использовть имя функции "Floor" так как оно совпадает с именем встроенной Delphi функции, которая делает прямопротивоположные вещи (http://www.helloworld.ru/texts/comp/lan ... th5104.htm)

5) Не совсем согласен по поводу темплейтов, Темплейт в переводе с англ. это "шаблон", а записи экрана сложно назвать шаблонами, обычно их называют скринкастами (http://en.wikipedia.org/wiki/Screencast) для записи видео мы обычно используем Camtasia Studio: http://www.techsmith.com/camtasia/ отличная программа.

Добавлено: Вт фев 22, 2011 6:14 pm
Николай Тарасов
Здравствуйте, Александр.

1. Благодарю за ответ.

2. Версия Forex Tester 2 у меня самая последняя (v.2.6.10 06/09/2010), судя по тому, что пишет FT при проверке обновления.
А неактивные кнопки - такая, право, мелочь.
Я даже думал, что это как-то связано с защитой программы от взлома (перехвата управления). :wink:
Как часто повторяет моя супруга: "Значит так надо! Чего привязался?" :?

3. Я и не знал, что в Delphi есть готовая функция Floor(). Посмотрел вашу ссылку. Оказывается, Floor() делает именно то, что MathFloor() в MQL4. То есть округляет показания условного градусника до нижней риски на шкале. Сравните сами:
-5.7 округляется до -6 аналогично тому, как -2.8 округляется до -3;
+5.7 округляется до +5 аналогично тому, как +2.8 округляется до +2.

* * *
Надо будет сделать пометку на моём сообщении про Foolr(), чтобы не вводить других в заблуждение.



4. Чтобы правильно округлять числа с давних пор использую следующую формулу:

Код: Выделить всё

  x := Floor(x + 5/9); // 5/9 := 0.555555555555555...
В MS Excel это выглядит так:

Код: Выделить всё

  x := ЦЕЛОЕ(x + 5/9);
При таком подходе не обрубаются весомые хвосты. А вес от далекоотстоящих элементов числа последовательно и бережно передаётся ближестоящим.
Примеры последовательного (бережного) округления (по градуснику):
1) 0.4444 ~ 0.444 ~ 0.44 ~ 0.4 ~ 0;
2) 0.4445 ~ 0.445 ~ 0.45 ~ 0.5 ~ 1.
--
Понятно, что водоразделом между 0 и 1 в таком случае является не 0.5 = 1/2, а 0.444444444444444... = 4/9 (см. рисунки).
При этом: 4/9 = 0.444444444444444... ~ 1.
---
Доказательство правильности такого подхода:
1) Известно, что 9/9 = 1.
2) Но 9/9 = 0.999999999999999...
Для полного соответствия дроби "9/9" единице "1" формально не хватает супер миниатюрного числа v = 0.000000000000000...1 = 1/10^N (где N - бесконечно большое натуральное число).
3) Именно такого сверх миниатюрного числа v (ню) формально не хватает для того, чтобы число "0.444444444444444... = 4/9" можно округлить сначала до "0.444444444444444...5", а потом и до "1" по правилам последовательного округления.
4) Но частица v формально равна "0" (нулю), так как:
v = 1 - 9/9 = (9-9)/9 = 0.
5) Поэтому можно спокойно считать, что 4/9 = 4/9 + v = 0.444444444444444...5 ~ 1.  :!:
* * *
Этот подход полностью соответствует тому, как меня учили округлять в школе.
Разработал его, когда в студенчестве сделал программу для построения двух-трёхмерных графиков на основе экспериментальных данных с применением метода наименьших квадратов, похожих на те, что сейчас делает Excel (очень похожий пример смотрите здесь: http://forextester.ru/forum/viewtopic.php?p=3504#3504). Причём первые графики я рисовал символами (звёздочками '*') на экране с разрешением 80 символов на 25 строк. Поэтому вопрос с округлением поначалу стоял довольно ярко, если не сказать крупно. :wink:
Это потом уже у меня появилась область построения 800х600 монохромных точек...
С тех пор использую свой алгоритм везде во избежание разного рода проблем с округлением.
Всем рекомендую.


6. Модификация правильного (бережного) метода округления до нужной точности:

Код: Выделить всё

  x := Floor(x/Precision + 5/9) * Precision;
  // Precision := 0.1 - округление до 0.1
  // Precision := 10  - округление до 10
  
  // Precision := 0.25 - округление до 0.25
  // Precision := 4    - округление до 4
7. Использую многоязычный Lingvo x3 (http://www.lingvo.com). Знаете ли, очень удобно переводить, например, украинские тексты. :wink:
Китайские, правда, ещё не попробовал. :wink:
Ну, так вот, словарь LingvoScience выдаёт вот такие смыслы для Template: "1) копир; 2) лекало; 3) темплет; 4) шаблон; 5) эталон".

8. Благодарю за Camtasia Studi. Обязательно попробую.

Добавлено: Чт фев 24, 2011 10:29 am
Николай Тарасов
Здравствуйте, Александр.
Здравствуйте, Михаил.

Давно хочу спросить вас о защите скриптов, стратегий и индикаторов, написанных для FT2.

Есть какие-то успешные решения этого вопроса?
Или прятать код на машине клиента - дело бессмысленное?
Кому надо - всё равно разберётся?

Возможно, у вас есть опыт сотрудничества, когда защиту пользовательского софта обеспечивает ваша программа с её собственной защитой от перехвата управления?

Если нет, то, интересно, как вы относитесь к подобному сотрудничеству?

Добавлено: Чт фев 24, 2011 2:26 pm
FT Support
Здравствуйте, Николай,

Какую именно защиту Вы имеете в виду? защиту от декомпиляции? ну из dll и так довольно сложно получить удобочитаемый алгоритм работы программы :)

Если Вы имеете в виду защиту от переноса на другой компьютер то я бы порекомендовал привязаться к железу компьютера как делает это тестер или лучше к регистрационному ключу самого тестера.

Добавлено: Чт фев 24, 2011 3:57 pm
Николай Тарасов
1. Да-да, я имел в виду именно "защиту от декомпиляции".

Раньше передо мной не вставало такой задачи.
Почитал интернет...

Везде пишут, что код прочитать и внести необходимые поправки - дело одного-двух дней.

Неужели теперь всё мало-мальски ценное из скрипта нужно переносить на сервер (сайт)? Но сайт тоже можно взломать.
Замкнутый круг какой-то!


2. Думаю, можно ещё делать встройку авторских скриптов, индикаторов и стратегий прямо в FT2.
В таком случае никаких dll-файлов, доступных для декомпиляции не будет и в помине.
Понятно, что не просто так, а да денежки. :wink:


3. А как в скрипте узнать регистрационный ключ самого тестера?
Разве у вас есть такая функция?

Добавлено: Пт фев 25, 2011 9:58 am
FT Support
Здравствуйте, Николай,

1. Вы скорее всего видели обсуждение декомпиляции МТ скриптов и советников, там действительно всё намного сложнее защитить, но в нашем случае dll просто так декомпилировать не получится, это сможет сделать только специалист.

2. Ну это разве что за большие денежки ))) не так всё просто

3. Прямой функции нет, но можно прочитать файл options.dat, ключ сохранён там.

Добавлено: Пт фев 25, 2011 11:19 am
Николай Тарасов
FT Support писал(а):Здравствуйте, Николай,

1. Вы скорее всего видели обсуждение декомпиляции МТ скриптов и советников, там действительно всё намного сложнее защитить, ...
Именно так. Правда, в MT5, пишут, этой проблемы уже нет.
Не знаю, стоит ли этой информации доверять.
Как считаете?
Мне думается, что за MT5 просто ещё не брались по настоящему.
Предмета исследования не было.
Да и круга заинтересованных лиц (заказчиков) тоже.
А пообещать можно, что угодно.
FT Support писал(а):..., но в нашем случае dll просто так декомпилировать не получится, это сможет сделать только специалист.
О-о-о! Это радует, поскольку сильно упрощает мою задачу!!! :wink:
FT Support писал(а):
Николай Тарасов писал(а): 2. Думаю, можно ещё делать встройку авторских скриптов, индикаторов и стратегий прямо в FT2.
В таком случае никаких dll-файлов, доступных для декомпиляции не будет и в помине.
Понятно, что не просто так, а да денежки.
2. Ну это разве что за большие денежки ))) не так всё просто
Я имел в виду не прямую оплату вам от меня, а опосредованную (от клиентов).
Суть в том, что вам под своим брендом можно выпускать (продавать) версии тестировщика с рассширенным (за счёт соавторов-партнёров) функционалом. За более дорогую цену, разумеется.
Как делить поступления (размер авторских отчислений) - тема отдельного разговора.
FT Support писал(а): 3. Прямой функции нет, но можно прочитать файл options.dat, ключ сохранён там.
Ну, вы в своём репертуаре, Александр.
Всё-то из вас, программистов, клещами да гвоздодёром вытаскивать приходится.
И впрямь, команда треминаторов с "железными" сердцами. :wink:
Надеюсь, интернет, поможет.
Спасибо и на этом.

Добавлено: Пт фев 25, 2011 12:01 pm
Николай Тарасов
Файл options.dat прочитал MS Excel'ем.
Делал так:
1. Навёл курсор на файл.
2. Через правую кнопку мышки выбрал Excel в качестве программы для просмотра файла (см. раздел "Открыть с помощью").
3. Сохранил одноимённый options.xcl со всем списком из 179-ти переменных (констант).

Теперь надо это же сделать в скрипте (индикаторе и стратегии).
Как сделаю, отпишу.

Добавлено: Пн фев 28, 2011 11:20 am
FT Support
Здравствуйте, Николай, не нужно гвоздодёра :), вот функция, с помощью которой можно достать регистрационный ключ программы:

Код: Выделить всё

function GetFTKey(): string;
var FolderPath, optDatPath, line: string;
    handleOpt: TextFile;

begin
  FolderPath := ExtractFileDir(ParamStr(0));
  optDatPath := FolderPath+'\options.dat';

  result := '';

  if FileExists(optDatPath) then
    begin
     AssignFile(handleOpt, optDatPath);
     Reset(handleOpt);
     while not Eof(handleOpt) do
     begin
       Readln(handleOpt, line);
       if (Copy(line, 0, 16) = 'RegistrationKey=') then
       begin
         result := Copy(line, 17, 66);
         break;
       end;
     end;
     CloseFile(handleOpt);
   end
end;

Добавлено: Пн фев 28, 2011 2:56 pm
Николай Тарасов
Даже не знаю, что сказать.
Вы кудесник, Александр.
Браво!



PS:
На основе этого кода можно ещё
GetFTHardwareID() и GetFTUserName() сделать.

Манипуляции с индикаторами из скрипта

Добавлено: Чт мар 03, 2011 1:38 pm
Николай Тарасов
Добрый утро, Александр.
Не поможете мне?

Что-то не помню, можно ли в MT4 прикреплять к графику, видоизменять и убирать с графика индикаторы из скрипта.
Кажется, нет.

А можно ли в FT2 это делать?