Документация

Описание функций

Дата: 31.12.2013
Работа с графиком и свечами

функции работы с графиками (свечи, объемы, MACD)
свечи:

GetCandleOpen(AIdx) - получить цену открытия свечи
GetCandleClose(AIdx) - получить цену закрытия свечи
GetCandleHigh(AIdx) - получить максимальную цену по свечи
GetCandleLow(AIdx) - получить минимальную цену по свечи
GetCandleDown(AIdx) - низ тела свечи
GetCandleUp(AIDx) - верх тела свечи
GetCandleAvgB(AIdx) - среднее по телу свечи (B - body)
GetCandleAvgS(AIdx) - среднее по тени свечи (S - shadow)
GetCandleType(AIdx) - тип свечи
0 = никакая (т.е. без тела)
-1 = падающая
1 = возрастающая
объем торгов:
GetCandleVolume(AIdx) - получить объем по свечи

AIdx - порядковый номер свечи(текущая свеча которая прорисовывается в данный момент имеет номер 0)
нумерация справа налево. Следующая 1 и так далее.

Пример:
Опишем фигуру "МОЛОТ"

Описание функций



тут небольшой код для описания как зеленой так и красной свечи "Молот".
промежуток от цены закрытия до цены открытия берем за единицу.
Верхняя часть должны быть меньше 0.2
Нижняя больше 1.8


(
(GetCandleOpen(1) > GetCandleClose(1))
and
((GetCandleHigh(1)-GetCandleOpen(1)) <
 0.2*(GetCandleOpen(1)-GetCandleClose(1)))
and
((GetCandleClose(1)-GetCandleLow(1))>
1.8*(GetCandleOpen(1)-GetCandleClose(1)))
)
or
(
(  GetCandleOpen(1) < GetCandleClose(1)  )
and
( (GetCandleHigh(1)-GetCandleClose(1)) <
 0.2*(GetCandleClose(1)-GetCandleOpen(1))   )
and
(
(GetCandleOpen(1)-GetCandleLow(1))>
1.8*(GetCandleClose(1)-GetCandleOpen(1))
)
)



гистограмма-индикатор MACD

GetMACDH(AIdx) - получить значение MACD по свечи

Описание функций



Условия (ветвления IF THEN)

IfThen (УСЛОВИЕ, ПАРАМЕТР1, ПАРАМЕТР2) - Функция ветвления If Then (позволяет выбрать один из двух вариантов при выполнении условия , или же не выполнении)
УСЛОВИЕ - Формула с условием
ПАРАМЕТР1 - Возвращается функцией если УСЛОВИЕ сработало
ПАРАМЕТР2 - Возвращается функцией если УСЛОВИЕ не сработало

Примеры:
Простой абстрактный пример.
Если два значения SellPrice = 14
BuyPrice = 13
IfThen(SellPrice > BuyPrice   , 1, 0)
- вернет 1. Так как 14>13.

поддерживает вложенность функций - можно строить сложные ветвления:
к примеру еще две переменных содержат значения:
highPrice30s=13.5
lowPrice=13

IfThen(SellPrice > BuyPrice   , IfThen(highPrice30s>lowPrice   , 0, 1), 0)
- сначала проверит
 SellPrice > BuyPrice (14>13)
затем
highPrice30s>lowPrice
и вернет 0.
Вот применимость этой функции к динамическом BUY SIZE:

Описание функций

В примере на рисунке если цена будет ниже цены последней партии бот будет покупать частями по 100 (партиями), если выше то по 50.

Функции для работы с данными

GetBuyPrice(количество секунд назад) - получить цену покупки (тикера) несколько секунд назад
GetSellPrice(количество секунд назад) - получить цену продажи (тикера) несколько секунд назад

пример использования:
GetBuyPrice(300) вернет buyPrice 300 секунд (т.е. 5 минут) назад
допускается писать также GetBuyPrice(5*60), GetBuyPrice(60*3*60)

Описание функций


Правило на покупку
курс вырос за 5 минут на 0.2%
в функциях все в секундах
поэтому 5 минут множим на 60
((buyPrice/GetBuyPrice(5*60))-1)*100>=0.2



Правило на продажу
курс упал за 5 минут на 0.2%

( (sellPrice/GetSellPrice(5*60)) -1 ) *100<=-0.2

если упал то будет минус 0.2
или меньше


GetBuyVolume(ASecondsFrom,ASecondsTo) - получить объем покупки за произвольный период времени

GetSellVolume(ASecondsFrom,ASecondsTo) - получить объем продажи за произвольный период времени

пример использования:
GetBuyVolume(600,300) вернет BuyVolume между 600 и 300 секунд назад (т.е. между 10 и 5 мин. назад)
GetBuyVolume(600,0) вернет BuyVolume за последние 600 секунд (т.е. 10 мин.)
допускается писать также GetBuyVolume(10*60,5*60)


Смотрим минутный график
(buyPrice - GetBuyPrice(1*60) ) - Изменение цены за 60 секунд (считается не от текущего момента, а от времени по тикеру (Время сервера)) -- Ближняя свечка к текущему моменту
GetBuyPrice(1*60) - Цена 60 секунд назад
GetBuyPrice(1*60) - GetBuyPrice(2*60) - Изменение от минуты до двух минут назад (вторая свечка от текущего момента по минутному графику)
GetBuyPrice(2*60) - GetBuyPrice(3*60) - Изменение от двух минут назад до трех минут (третья свечка от текущего момента по минутному графику)

Тоже самое для объемов

GetBuyVolume(60,0) - объем за минуту назад (объем покупки первой свечки)
GetBuyVolume(2*60,60) - объем от 2 минут до минуты назад назад (объем покупки второй свечки)
GetBuyVolume(3*60,60) - объем от 3 минут до 2 минут назад назад (объем покупки третьей свечки)






GetProfitPrice(APrice,APercent) - расчетная точка безубыточности

пример использования:
GetProfitPrice(botMinBuyPrice,0.4) вернет цену, при достижении которой получим профит 0.4%
с учетом обеих комиссий, разумеется, т.е. это чистые 0.4% будут
т.е. вместо
sellPrice>botBuyPrice*1.007

можно писать
 sellPrice>GetProfitPrice(botBuyPrice,0.3)

и это будет универсально (функция сама учитывает комиссии на покупку и на продажу по валютной паре)
т.е. сработает правильно независимо от того что торгуем: BTC/USD(0.2%) или USD/RUR(0.5%) или еще что-то

чтобы понимать сколько закладывать своего процента - можно подсчитать
GetProfitPrice(botBuyPrice,0)
это точка безубыточности. например, для BTC/USD(0.2%) будет 1.004012...
т.е. GetProfitPrice(botBuyPrice,0.3) это примерно botBuyPrice*1.007

также можно считать и с отрицательными процентами
но понимать, что 0 - это безубыточность с учетом комиссии


GetIncome() - возвращает прибыль/убыток
GetIncome(0) - вернет только прибыль (если убыток то вернет 0)
GetIncome(1) вернет так как есть (плюс - так плюс, минус - так минус)

GetRandom(x,y) - случайное целое число между x и y
Пример : GetRandom(10,100) - любое число между 10 и 100

GetMinBuyPrice(Момент времени 1 ,момент времени 2) - получить минимальную цену покупки между двумя моментами времени

GetMaxBuyPrice(Момент времени 1 ,момент времени 2) - получить максимальную цену покупки между двумя моментами времени

GetMinSellPrice(Момент времени 1 ,момент времени 2) - получить минимальную цену покупки между двумя моментами времени

GetMaxSellPrice(Момент времени 1 ,момент времени 2) - получить максимальную цену покупки между двумя моментами времени

ПРИМЕРЫ :
GetMinBuyPrice(600,0) - минимальное значение за 600 секунд.
GetMaxBuyPrice(60) - максимальное значение за 60 секунд.


Временные функции (для использования расписания по времени закупок и продаж)

MakeDateTime(День,Часы,минуты) - получить любое время (для использования в других функциях)

Если День=0 то это сегодня. например получить время 15-00 сегодня будет выглядеть как MakeDateTime(0,15,0)


HourOf() - возвращает текущее значение часов

HourOf(serverTime) если время 19:10:11 то вернет 19

MinuteOf() - возвращает текущее значение минут

MinuteOf(now) если время 19:10:11 то вернет 10

Пример расписания для локального времени - времени компьютера на котором запущен бот
(HourOf(now) > 9  and HourOf(now) <18 ) 

бот будет торговать с 9 до 18 часов


В версии 1.0.0.28 появились новые временные функции:

now - текущее время

secondsbetween(момент времени 1 , момент времени 2) - время в секундах между двумя моментами времени

minutesbetween(момент времени 1 , момент времени 2) - время в минутах между двумя моментами времени

Примеры:
secondsbetween(now,botLastBuyTime)>30

- проверка прошло ли 30 секунд со времени прошлой продажи
minutesbetween(now,botLastBuyTime)>1

- проверка прошла ли одна минута с последней продажи
Удобно использовать в правилах покупки ботом вместе с установкой ограничения на покупку по партии (Trade options - Limits - Buy Size)

secondsbetween считает все секунды!
т.е. может быть не только 30, но и 300, и 600 секунд разницы
аналогично минуты


Логические функции

and - логическое И

 (deltaVolume30s>0) and (deltaVolume1m>0) and (deltaVolume5m>0) 


or - логическое ИЛИ

(deltaVolume1h>80) or ( deltaVolume6h>40) 


not - логическое отрицание

Арифметические функции

+ сложение

SellPrice>BotBuyPrice+5


- вычитание

 SellPrice>BotBuyPrice-5


* умножение

 SellPrice>BotBuyPrice*1,5


/ деление

sellPrice>(obWallSellPrice-(obWallSellPrice-obWallBuyPrice)/3) 


Скобки ( ) - для выделения приоритета выполнения вычислений.

Функции сравнения

больше
SellPrice > BotBuyPrice


меньше
SellPrice < BotBuyPrice


равно
SellPrice = BotBuyPrice


не равно
SellPrice <> BotBuyPrice


Также больше равно
>=
и
<=
меньше равно.
Дробные числа пишутся через запятую Пример:
1,5


Разное

ln(число) - натуральный логарифм
exp(число) - е в степени
abs(число) - модуль числа


1 комментариев
24.02.2015
minutesbetween(now,botLastBuyTime)>1
- проверка прошла ли одна минута с последней продажи
 
Не учитываются часовые пояса.
now - возвращает текущее время на компе botLastBuyTime - возвращает время с биржи