Курсы валют
<a href="https://www.instaforex.com/ru/" target="blank">ИнстаФорекс портал"</a>
Новости от FOREXPF.RU
<a href="https://www.instaforex.com/ru/">Форекс портал</a>
Июль 2019
Пн Вт Ср Чт Пт Сб Вс
« Июн    
1234567
891011121314
15161718192021
22232425262728
293031  
При поддержке: деньги и фен шуй.

Торговый дневник 02.12.2015 (среда) Сделал расчет маржи в сделке и % маржи от баланса (Abb Statements 1.26)

Show »

Приехал на служебном. Сегодня оттепель – идет небольшой дождик и +2+3 градуса. В общем не зимняя погода

07:55 С утра потестировал программу, вроде все работает как надо. Делаю версию 1.26. Нужно убрать двойной вызов передергивания фильтров в событиях Load и Activate журналов.
07:58 В функцию pubInitJournal()  добавил параметр Optional lLoad As Boolean = True При событии Activate инициализируются фильтры и сортировки, при Load– нет.
10:23 Привел журнал Tables_Statements к стандартным функциям фильтров и сортировок, добавил поля DateBeginTrading, DateEndTrading из таблицы dbo_Accounts.
Полный запрос по журналу Tables_Statements:

Show »

SELECT Acc.Id_Account, Acc.FlagActive,
TS.Id_Tables_Statements, TS.SysId, TS.Id_Broker, TS.Id_BrokerServer,
TS.SysName, TS.SysDatabase, TS.Fillup, TS.OperatorFillup, TS.FillupInsert,
TS.OperatorFillupInsert, Acc.DateBeginTrading, Acc.DateEndTrading,
Acc.DateBeginTrading+nz(BS.LocalHour,0)/24 AS DateBeginTrading_,
Acc.DateEndTrading+nz(BS.LocalHour,0)/24 AS DateEndTrading_,
[DateEndTrading]-[DateBeginTrading] AS PeriodTrading,
IIf([PeriodTrading]>=1,Int([PeriodTrading]) & ‘d ‘,») & Right(‘0’
& CStr(Hour([PeriodTrading])),2) & ‘:’ & Right(‘0’ &
CStr(Minute([PeriodTrading])),2) AS PeriodTrading_, BS.BrokerServerName,
B.BrokerName, BS.LocalHour, BST.BrokerServerType, BST.BrokerServerTypeName

FROM (((dbo_Tables_Statements AS TS LEFT
JOIN dbo_BrokerServers AS BS ON TS.Id_BrokerServer = BS.Id_BrokerServer) LEFT
JOIN dbo_Brokers AS B ON TS.Id_Broker = B.Id_Broker) LEFT JOIN
dbo_BrokerServerTypes AS BST ON BS.Id_BrokerServerType =
BST.Id_BrokerServerType) LEFT JOIN dbo_Accounts AS Acc ON
TS.Id_Tables_Statements = Acc.Id_Tables_Statements;

11:03 Нужно в стейте сделать расчет % маржи от депозита в сделке. Формула Margin из Excel такая:

Show »

=ЕСЛИ(НЕ(ЕЧИСЛО($Dxx));»»;

ЕСЛИ($Exx=»YM«;600;

ЕСЛИ($Exx=»FDAX«;3000*1.56;

ЕСЛИ($Exx=»FTSE«;2000*1.98;

ЕСЛИ(ИЛИ($ExxES«;$ExxNQ«;$ExxGOLD«;$Exx=»ZG«);Fxx*2;

ЕСЛИ(ЛЕВСИМВ($Exx;3)=»USD«;1000;

ЕСЛИ(ПРАВСИМВ($Exx;3)=»JPY«;$Fxx*1000/100;

$Fxx*1000))))))*$Dxx/$G$9*100)

Зависит от:

$G$9
— AccountLeverage
ввидечисла (1000/500/200/100)

$Dxx – Lots

$Exx – Item

FxxPriceOpen

Решил поискать в инете расчет маржи: http://www.nwfbroker.com/ru/articles/margin

XXX/USD: 100000$*A*B*n   где A — текущая котировка по данной валютной паре, B — размер кредитного плеча
USD/XXX: 100000$*B*n      где B — размер кредитного плеча
XXX/YYY:  100000$*C*B*n  где C — текущая котировка по паре XXX/USD,B — размер кредитного плеча

Пример: Вычислим размер маржи для открытия 1,5 лотов в sell по паре AUD/USD при условии кредитного плеча 1:200. Цена открытия 0,7863. Расчитываем маржу 100000$*0,7863*(1/200)*1,5 = 589,725

12:38 По кросс-курсам маржа зависит от котировок других валют, поэтому пока сделал попроще (как в стейте Excel):

Show »

= IIF(St.Item=’YM’, 60000,

IIF(St.Item=’FDAX’, 300000*1.56,

IIF(St.Item=’FTSE’, 200000*1.98,

IIF(St.Item=’ES’ Or St.Item=’NQ’ Or
St.Item=’GOLD’ Or St.Item=’ZG’, 250000 * PriceOpen,

IIF(Left(St.Item,3)= ‘USD’,100000,

IIf(Right(St.Item,3)=’USD’, 100000 *
St.PriceOpen ,

IIF(Right(St.Item,3)= ‘JPY’, 1000 *
St.PriceOpen ,

1000 * St.PriceOpen))))))) * Lots_ /
Leverage as Margin

13:49 Проверяю расчет % маржи от баланса – цифры завышены в 10 раз по сравнению со стейтом Excel
15:48 Проверил расчет маржи в программе по калькулятору трейдера: http://www.alpari.ru/ru/trading/calculator/ – считает правильно по валютам с USD, значит в стейте Excel был неправильный расчет!
По евройене маржа завышена ~ в 2 раза в программе… но это непринципиально пока

16:34 В журнал Statements добавил колонки Margin by trade и % margin of balance
17:04 Увеличил размер шрифта в журнале Statements у полей Result of trades и Rebates Real до 9 п., чтобы реальные деньги немного выделялись от других цифр.
17:16 Изменил условное форматирование лотов, чтобы выделялись лоты >= 0,1
17:22 Проверяю размер лотов, он несоответствует на классических и центовых счетах. На центовиках судя по всему лоты меньше в 100 раз стандартных, а не в 10 раз!!! Теперь и расчет маржи соответствует стейту в Excel. Изменил округление расчета лотов Lots_ до 4 знаков и форматирование в журналах.

2015-12-02 17-22-00 Скриншот экрана

17:54 Выявил интересную вещь: несоответствие лотов по некоторым сделкам на счете 3136492, как раз по которым насчитаны маленькие рибейты…
Тикеты в базе:
82218118 0,2743 лотов – в стейте 0,0041 лот
82220242 0,2702 лотов – в стейте 0,0100 лот
82209482 0,1346 лотов – в стейте 0,0100 лот
82142697 0.1123 лотов — в стейте 0,0100 лот

Скорее всего ошибка при закачке, т.к. все эти сделки были закрыты встречными… Нужно проверить закачку, чтобы обновлялись лоты…
18:05 И теперь RebateCalc_ неправильно считается = в 10 раз занижено … дома проверю и исправлю …
18:43 Дома. Исправил расчет RebateCalc_

strSQL = strSQL + «, IIf(nz(TCR.TypeCalcRebate,0)=0,0»
strSQL = strSQL + «, IIf(nz(TCR.TypeCalcRebate,0)=1,Round(I.Rebate_InstaForex*St.Lots*Abs(Type.TypeCalcPL),4)»
strSQL = strSQL + «, IIf(Abs(nz([PipsPL],0))>=I.MTP,Round(I.Spread*I.Percent_RebateF4u*St.Lots/10*Abs(Type.TypeCalcPL),4)))) AS RebateCalc_»

и SpreadReal: strSQL = strSQL + «, IIf(St.Lots=0 Or I.Percent_RebateF4u=0,0,[SumRebate]/I.Percent_RebateF4u/St.Lots*10) AS SpreadReal»

Вместо деления на BST.KoefLots просто подставил 10 – неправильно считаются рибейты по классических счетам…
19:24 Придется добавить в справочник еще одно поле KoefRebatesДобавил и решил сразу сделать универсальные функции для работы со справочниками.
Сделаны функции инициализации и сохранения настроек справочников pubInitGuide(iId__Guide As Integer, Optional lLoad As Boolean = True) As Boolean, pubSaveGuide(iId__Guide As Integer) As Boolean

00:56 Долго общались с Ольгой, Ирой и Женей… Параллельно пытался работать…
В итоге переделал все справочники под универсальные функции, нужно завтра потестить и закончить с этим…

Так же нужно сделать перерасчет рибейтов и реального спреда с учетом KoefRebates

Оставить комментарий