Dukascopy Support Board http://www.dukascopy.com/swiss/english/forex/jforex/forum/ |
|
Приведение типов - разница в тестере движка Visual JForex и тестере движка торговой платформы JForex (вер.3.4.13) http://www.dukascopy.com/swiss/english/forex/jforex/forum/viewtopic.php?f=175&t=56832 |
Page 1 of 1 |
Author: | valador [ Wed 21 Nov, 2018, 22:58 ] | |||
Post subject: | Приведение типов - разница в тестере движка Visual JForex и тестере движка торговой платформы JForex (вер.3.4.13) | |||
Для того, чтобы понять в чем разница в тестерах, предлагаю два варианта вычислений одного и того же коэффициента с помощью Visual JForex. В торговом роботе задаются внешние значения SL и TP в пипсах (из-за разночтений в понимании уточняю, что в данном контексте это 0.1 пункта, минимальное расстояние движения цены, в частности в EurUsd это 0.00001 - 1 деленное на 100 000). Вычисляется отношение SL к TP и сохраняется в отдельной переменной "ka". SL и TP внешне задаются целыми числами, хранятся в переменных "My_SL_pips" и "My_TP_pips" соответственно (целый тип "Integer"). Помимо вычисления "ka", которое по сути равно SL/TP, заданные в пипсах целые SL и TP переводятся в вещественный тип (например, был задано 5 пипсов, привели к 0.00005, то есть поделили на 100 000) "CurrentSLpips" и "CurrentTPpips" соответственно (вещественный тип "Double"). С математической точки зрения без разницы, когда и как вычислять значение "ka". Можно вычислить с помощью My_SL_pips делить на My_TP_pips, а можно CurrentSLpips делить на CurrentTPpips. Результат будет одинаковым. К сожалению к Visual JForex я не нашел информации о таком понятии как "приведение типов" в неявном случае (явное приведение типа происходит, когда значение типа "Integer" передаем в переменную типа "Double", мы как бы явно задаем задачу перевести целое в вещественное, а неявно, это когда целое делится на вещественное, результат вещественный, а целое делится на целое - результат зависит от системы). Ранее тренировался на языке mql, там всё с этим в порядке - деление целых дает целое. А чтобы не было казусов, дели вещественные и получишь точный результат. Из-за наличия такого понятия "приведения типов" в том же mql при делении целых получится целое (то есть если математически результат будет вещественным, то в результате вещественная часть просто будет отброшена, например 5/2=2, 3/2=1, 2/5=0). Так вот обнаружил для случаев неявного приведения типов, что судя по всему: 1. Тестер движка Visual JForex и тестер движка торговой платформы JForex (вер.3.4.13) по разному приводят типы. 2. Приведение типов здесь не похоже на классическое (поделил целые - получил целое). Есть два варианта результатов вычисления соотношения SL и TP: 1. результат деления - больше или равно 1 (то есть SL больше или равно TP). 2. результат деления - меньше 1 и ограничен 0 (то есть SL меньше TP). Если будем делить целые, то есть My_SL_pips делить на My_TP_pips, то результат будет: - математически, чаще всего вещественное число; - при классическом приведении типов, всегда целое число. В тестере движка Visual JForex почему-то работает чистая математика - всегда когда это должно быть математически получается вещественное, со всеми дробными разрядами. А в тестере движка торговой платформы JForex расчет такой же, только если числительное больше знаменательного, то есть в нашем случае, если SL > или = TP. Но если SL будет меньше TP мы получим результат как в mql - 0! Привожу пример блоками Visual JForex в двух вариантах (два фото). В варианте, где "ka" вычисляется с помощью вещественных "CurrentSLpips" и "CurrentTPpips" результат такой какой нужно в обоих тестерах. А в другом варианте, результат нулевой в тестере платформы JForex. РАБОЧИЙ ВАРИАНТ _____________________________________________________________________________________ НЕРАБОЧИЙ ВАРИАНТ
|
Page 1 of 1 |