Рассмотрим периоды торговли по некоторой валютной паре, когда котировки близки к значениям, имеющим в своей записи два последних нуля, например: 1,1900; 118,00, 90,00. Значения таких котировок назовем «круглыми ценами». На следующем рисунке представлен пример торговли «вблизи круглых дат».
При торговле вблизи круглых цен значения котировки в течение длительного периода обычно незначительно отличаются от круглой цены. Поэтому представляет интерес алгоритм, позволяющий автоматически формировать сигнал о приближении к круглой цене.
Будем считать, что изменение котировок всех валютных пар происходит с дискретным шагом – пунктом, который, в большинстве случаев, принимает следующие значения:
Point=0.0001
Point=0.001
Point=0.01
Point=0.1
Point=1
Тогда алгоритм определения круглой цены выглядит следующим образом:
1. Определим значения некоторого множителя MultiPlier1, зависящие от величины пункта Point выбранной валютной пары, на основе следующего условия:
при умножении текущей котировки на множитель MultiPlier1 получаем запись котировки, в которой все цифры располагаются слева от десятичной точки. Например:
|
|
Если Point=0.0001, то MultiPlier1=10000
Если Point=0.001, то MultiPlier1=1000
Если Point=0.01, то MultiPlier1=100
Если Point=0.1, то MultiPlier1=10
Если Point=1, то MultiPlier1=1
Значение множителя MultiPlier1 можно определить с помощью следующего фрагмента программы:
MultiPlier1=1;
// вычислим значение множителя MultiPlier1
// для выявления котировок с двумя последними нулями
if Point < 0.001 then
{ // Point вида 0.0001, котировка вида 9.9999
MultiPlier1=10000;
}
else
{
if Point < 0.01 then
{ // Point вида 0.001, котировка вида 99.999
MultiPlier1=1000;
}
else
{
if Point < 0.1 then
{ // Point вида 0.01, котировка вида 999.99
MultiPlier1=100;
}
else
{
if Point < 1.0 then
{ // Point вида 0.1, котировка вида 9999.9
MultiPlier1=10;
}; // if Point < 1.0
}; // if Point < 0.1
}; // if Point < 0.01
}; // if Point < 0.001
2. Найти величину Price1, равную произведению значения текущей котировки и множителя MultiPlier1.
3. Найдем величину Mod1, равную остатку от деления величины Price1 на 100:
Mod1=Mod(Price1,100);
4. Будем считать, что значения котировки находятся вблизи круглой цены, т.е. переменная Signal1=1, если
Mod1<10 или Mod1>90:
if (Mod1 < 10 and Mod1 > 90) then
Signal1=1
else
Signal1=0;