Курсы валют
<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  
При поддержке: деньги и фен шуй.

Торговый дневник 30.11.2015 (понедельник) Отладил работу трех журналов в Abb Statements 1.24

Show »

07:57 Приехал на работу на служебном. Сегодня ночью выпал хороший снежок, 5-10 см, и относительно тепло – классная зимняя погода. Комп оказался выключенным, скорее всего на выходных вырубали свет. Загружался 1 м. 40 с. после ввода пароля, а до полной загрузки прошло аж 3 м.10 с…

08:00 Буду делать 1.24 версию AbbStatements.

08:05 Нужно сделать, чтобы спред в справочнике менялся в зависимости от брокера и периода – пока не горящий вопрос… Функция будет работать медленнее, чем расчет в запросе…

08:10 Нашел в таблице рибейтов одну запись № 42101 с текстом Корректировка и суммой -32.5399 от 25.02.2014 21:20:09 … интересно почему… Скорее всего из-за отмененных тикетов, которые на закачались в базу, как раз за 25.02.2014… Так что скорее всего правильно… Но на вывод денег эта сумма не должна пойти…

dbo_RebatesFxCash

Id_RebatesFxCash

Id_Account

Ticket

AccountNumber

RebateTime

ClientName

ClientNumder

SumRebate

Status

Balance

Note

42101

 

 

0

25.02.2014 21:20:09

Корректировка

 

-32.5399

Выполнено

8.6995

корректировка

08:48 Читаю форум  FxCash про F4u:Про МТП: http://cashforum.ru/showthread.php?t=187

09:40 Проверяю стейт по Инсте. Рибейты начисляются так: http://cashforum.ru/showthread.php?t=2

Добавил в справочник тип счета Real InstaForex, Т.к. у них лоты в 10 раз занижены против стандартных. Сдвиг времени -8 часов от ВВО (вычислил по архиву дневников за февраль 2015 г.) Нужно сделать расчет рибейтов по InstaForex

10:31 Расчет рибейтов сделан так:

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

11:14 Полный запрос для журнала Statements выглядит так:

Show »

SELECT
St.Id_Statement, Acc.Id_Account, Acc.FlagActive, Acc.AccountNumber,
Acc.AccountName, Acc.AccountCurrency, Acc.AccountLeverage, Acc.DateBegin,
Acc.DateBegin+nz(BS.LocalHour,0)/24 AS DateBegin_, Acc.DateEnd,
Acc.DateEnd+nz(BS.LocalHour,0)/24 AS DateEnd_, Acc.DaysCalendar,
Acc.DaysTrading, Acc.Deposits, Acc.DepositsCount, Acc.Credits,
Acc.CreditsCount, Acc.Bonuses, Acc.BonusesCount, Acc.Withdrawals,
Acc.WithdrawalsCount, Acc.RebatesCalc, Acc.Rebates, Acc.Balance, Acc.Equity,
Acc.BalanceMin, Acc.BalanceMax, Acc.TotalNetProfit, Acc.CreditsIn,
Acc.CreditsInCount, Acc.CreditsOut, Acc.CreditsOutCount, Acc.CreditsCancelled,
Acc.CreditsCancelledCount, Acc.CreditsStopOut, Acc.CreditsStopOutCount,
Acc.DateBeginTrading, Acc.DateEndTrading,
Acc.DateBeginTrading+nz(BS.LocalHour,0)/24 AS DateBeginTrading_,
Acc.DateEndTrading+nz(BS.LocalHour,0)/24 AS DateEndTrading_, Acc.IR,
Acc.IRCount, Acc.BalanceReset, Acc.BalanceResetCount, Acc.ReSpread,
Acc.ReSpreadCount, Acc.WithdrawalsCommission, Acc.WithdrawalsCommissionCount,
Acc.ReturnComissionWM, Acc.ReturnComissionWMCount, Acc.TotalTrades,
Acc.ProfitTrades, Acc.LossTrades, Acc.NullTrades, Acc.CancelledTrades,
Acc.OpenTrades, Acc.WorkingOrders, Acc.Id_Tables_Statements, TS.SysName,
TS.SysDatabase, TS.Id_Broker, TS.Id_BrokerServer, B.BrokerName, B.URL,
BS.Id_BrokerServerType, BS.BrokerServerName, BS.StatementName, BS.LocalHour, BST.BrokerServerType,
BST.BrokerServerTypeName, BST.KoefLots, Type.TypeCalcPL, I.Digits, I.MTP,
I.Spread, I.Percent_RebateF4U, I.Rebate_InstaForex, St.Ticket, St.OpenTime,
St.OpenTime+nz(BS.LocalHour,0)/24 AS OpenTime_, St.Type, St.Lots,
Round([Lots]/BST.KoefLots,3) AS Lots_, St.Item, St.PriceOpen, St.StopLoss,
St.TakeProfit, St.CloseTime, St.CloseTime+nz(BS.LocalHour,0)/24 AS CloseTime_,
Weekday(St.CloseTime,2) AS WeekdayCloseTime,
Weekday(St.CloseTime+nz(BS.LocalHour,0)/24,2) AS WeekdayCloseTime_, St.PriceClose,
St.Commission, [Commission]/BST.BrokerServerType AS Commission_, St.Taxes,
[Taxes]/BST.BrokerServerType AS Taxes_, St.Swap, [Swap]/BST.BrokerServerType AS
Swap_, St.Profit, [Profit]/BST.BrokerServerType AS Profit_, St.Note, St.Fillup,
St.OperatorFillup, St.FillupInsert, St.OperatorFillupInsert, St.BalanceCurrent,
St.EquityCurrent,
Round((St.PriceClose-St.PriceOpen)*I.Digits*Type.TypeCalcPL,2) AS PipsPL,
IIf(nz(St.EquityCurrent,0)=0,0,(nz(St.Profit,0)+nz(St.Commission,0)+nz(St.Taxes,0)+nz(St.Swap,0))/nz(St.EquityCurrent,Acc.Equity)*Abs(Type.TypeCalcPL)/BST.BrokerServerType)
AS ProfitPercentEquity,
IIf(nz(St.BalanceCurrent,0)=0,0,(nz(St.Profit,0)+nz(St.Commission,0)+nz(St.Taxes,0)+nz(St.Swap,0))/nz(St.BalanceCurrent,Acc.Balance)*Abs(Type.TypeCalcPL)/BST.BrokerServerType)
AS ProfitPercentBalance,
IIf(nz([BalanceCurrent],0)=0,0,[EquityCurrent]/[BalanceCurrent]) AS DrawDown,
nz(St.Profit,0)+nz(St.Commission,0)+nz(St.Taxes,0)+nz(St.Swap,0) AS
ResultOfTrade, (nz(St.Profit,0)+nz(St.Commission,0)+nz(St.Taxes,0)+nz(St.Swap,0))/BST.BrokerServerType
AS ResultOfTrade_, IIf(nz([CloseTime],0)=0,0,[CloseTime]-[OpenTime]) AS
TimeOfTrade, IIf([TimeOfTrade]>=1,Int([TimeOfTrade]) & ‘d ‘,») &
Right(‘0’ & CStr(Hour([TimeOfTrade])),2) & ‘:’ & Right(‘0’ &
CStr(Minute([TimeOfTrade])),2) & ‘:’ & Right(‘0’ &
CStr(Second([TimeOfTrade])),2) AS TimeOfTrade_,
IIf(nz(TCR.TypeCalcRebate,0)=0,0,IIf(Abs(nz([PipsPL],0))>=I.MTP,Round(I.Spread*I.Percent_RebateF4u*St.Lots*Abs(Type.TypeCalcPL)*IIf(IsNull(St.CloseTime),0,1),4)))
AS RebateCalc, IIf(nz(TCR.TypeCalcRebate,0)=0,0,IIf(nz(TCR.TypeCalcRebate,0)=1,Round(I.Rebate_InstaForex*St.Lots/BST.KoefLots*Abs(Type.TypeCalcPL),4),IIf(Abs(nz([PipsPL],0))>=I.MTP,Round(I.Spread*I.Percent_RebateF4u*St.Lots/BST.KoefLots*Abs(Type.TypeCalcPL),4))))
AS RebateCalc_, St.RebateReal,
IIf([RebateCalc_]=0,0,[RebateReal]/[RebateCalc_]) AS PercentRebateReal,
St.ProfitFactor, St.ExpectedPayoff, St.ConsecutiveProfit,
IIf([ConsecutiveProfit]>0,[ConsecutiveProfit],[ConsecutiveLoss]) AS
ConsecutiveProfit_, St.ConsecutiveLoss, St.ConsecutiveProfitCount,
IIf([ConsecutiveProfitCount]>0,[ConsecutiveProfitCount],[ConsecutiveLossCount])
AS ConsecutiveProfitCount_, St.ConsecutiveLossCount, St.ConsecutiveProfitPips,
Round(IIf([ConsecutiveProfitPips]>0,[ConsecutiveProfitPips],[ConsecutiveLossPips]),1)
AS ConsecutiveProfitPips_, St.ConsecutiveLossPips,
[DateEndTrading]-[DateBeginTrading] AS PeriodTrading,
IIf([PeriodTrading]>=1,Int([PeriodTrading]) & ‘d ‘,») & Right(‘0’
& CStr(Hour([PeriodTrading])),2) & ‘:’ & Right(‘0’ & CStr(Minute([PeriodTrading])),2)
AS PeriodTrading_, TCR.FlagUseMTP, B.Id_TypeCalcRebate

FROM (dbo_BrokerServerTypes AS BST RIGHT
JOIN (((dbo_BrokerServers AS BS RIGHT JOIN (dbo_Brokers AS B RIGHT JOIN
dbo_Tables_Statements AS TS ON B.Id_Broker = TS.Id_Broker) ON BS.Id_BrokerServer
= TS.Id_BrokerServer) LEFT JOIN dbo_TypeCalcRebates AS TCR ON
B.Id_TypeCalcRebate = TCR.Id_TypeCalcRebate) INNER JOIN dbo_Accounts AS Acc ON
TS.Id_Tables_Statements = Acc.Id_Tables_Statements) ON BST.Id_BrokerServerType
= BS.Id_BrokerServerType) INNER JOIN ((dbo_Statements AS St LEFT JOIN
dbo_TypeOperations AS Type ON St.Type = Type.Type) LEFT JOIN dbo_Items AS I ON
St.Item = I.Item) ON Acc.Id_Account = St.Id_Account;

11:16 Всего по счету 8235614 по расчету получилось рибейтов 700.507$ а реально выведено 674.32$ — т.е. не все сделки Инсты попали в возврат рибейтов… какие из них не попали сейчас вряд ли выяснишь…
11:52 Полный запрос для журнала Rebates:

Show »

SELECT Acc.FlagActive,
FxCash.Id_RebatesFxCash, Acc.Id_Account, FxCash.Ticket, FxCash.AccountNumber,
FxCash.RebateTime, FxCash.RebateTime+7/24 AS RebateTime_,
Weekday(FxCash.RebateTime,2) AS WeekdayRebateTime,
Weekday(FxCash.RebateTime+7/24,2) AS WeekdayRebateTime_, FxCash.ClientName,
FxCash.ClientNumder, FxCash.SumRebate, FxCash.Status, FxCash.Balance,
FxCash.Note, FxCash.Fillup, FxCash.OperatorFillup, FxCash.FillupInsert,
FxCash.OperatorFillupInsert, TS.Id_Broker, TS.Id_BrokerServer, B.BrokerName,
BS.BrokerServerName, BST.BrokerServerTypeName, St.Type, St.Lots,
Round([Lots]/BST.KoefLots,3) AS Lots_, St.Item, St.CloseTime,
St.CloseTime+nz(BS.LocalHour,0)/24 AS CloseTime_, St.PriceOpen, St.PriceClose,
St.Profit, St.RebateReal, nz(St.Profit,0)+nz(St.Commission,0)+nz(St.Taxes,0)+nz(St.Swap,0)
AS ResultOfTrade,
(nz(St.Profit,0)+nz(St.Commission,0)+nz(St.Taxes,0)+nz(St.Swap,0))/BST.BrokerServerType
AS ResultOfTrade_, IIf(nz([CloseTime],0)=0,0,[RebateTime]-[CloseTime]) AS
TimeOfOutRebate, Round((St.PriceClose-St.PriceOpen)*I.Digits*Type.TypeCalcPL,2)
AS PipsPL, IIf([TimeOfOutRebate]>=1,Int([TimeOfOutRebate]) & ‘d ‘,»)
& Right(‘0’ & CStr(Hour([TimeOfOutRebate])),2) & ‘:’ &
Right(‘0’ & CStr(Minute([TimeOfOutRebate])),2) & ‘:’ & Right(‘0’ &
CStr(Second([TimeOfOutRebate])),2) AS TimeOfOutRebate_,
IIf(nz([TCR].[TypeCalcRebate],0)=0,0,IIf(nz([TCR].[TypeCalcRebate],0)=1,Round([I].[Rebate_InstaForex]*[St].[Lots]*Abs([Type].[TypeCalcPL]),4),IIf(Abs(nz([PipsPL],0))>=[I].[MTP],Round([I].[Spread]*[I].[Percent_RebateF4u]*[St].[Lots]/[BST].[KoefLots]*Abs([Type].[TypeCalcPL]),4))))
AS RebateCalc_, IIf([RebateCalc_]=0,0,[RebateReal]/[RebateCalc_]) AS
PercentRebateReal, I.MTP, I.Spread, IIf(St.Lots=0 Or
I.Percent_RebateF4u=0,0,[SumRebate]/I.Percent_RebateF4u/St.Lots*BST.KoefLots)
AS SpreadReal, BST.BrokerServerType, BST.BrokerServerTypeName,
BS.BrokerServerName, B.BrokerName, TCR.TypeCalcRebate, TCR.FlagUseMTP

FROM (dbo_BrokerServerTypes AS BST RIGHT
JOIN (((((dbo_Brokers AS B RIGHT JOIN ((dbo_RebatesFxCash AS FxCash LEFT JOIN
dbo_Accounts AS Acc ON FxCash.Id_Account = Acc.Id_Account) LEFT JOIN
dbo_Tables_Statements AS TS ON Acc.Id_Tables_Statements =
TS.Id_Tables_Statements) ON B.Id_Broker = TS.Id_Broker) LEFT JOIN
dbo_BrokerServers AS BS ON TS.Id_BrokerServer = BS.Id_BrokerServer) LEFT JOIN dbo_Statements
AS St ON (FxCash.Id_Account = St.Id_Account) AND (FxCash.Ticket = St.Ticket))
LEFT JOIN dbo_Items AS I ON St.Item = I.Item) LEFT JOIN dbo_TypeOperations AS
Type ON St.Type = Type.Type) ON BST.Id_BrokerServerType =
BS.Id_BrokerServerType) LEFT JOIN dbo_TypeCalcRebates AS TCR ON
B.Id_TypeCalcRebate = TCR.Id_TypeCalcRebate;

12:36 Нужно восстановить более-менее правильное эквити по некоторым счетам в 2012 году, когда торговал одновременно на двух счетах…
12:46 Пока занялся приведением журнала Accounts под стандартные функции фильтров и сортировки…
Полный запрос для журнала Accounts:

Show »

SELECT Acc.Id_Account, Acc.FlagActive,
Acc.AccountNumber, Acc.AccountName, Acc.AccountCurrency, Acc.AccountLeverage,
Acc.DateBegin, Acc.DateBegin+nz(BS.LocalHour,0)/24 AS DateBegin_, Acc.DateEnd,
Acc.DateEnd+nz(BS.LocalHour,0)/24 AS DateEnd_, Acc.DaysCalendar,
Acc.DaysTrading, Acc.Deposits, Acc.DepositsCount, Acc.Credits,
Acc.CreditsCount, Acc.Bonuses, Acc.BonusesCount, Acc.Withdrawals, Acc.WithdrawalsCount,
Acc.RebatesCalc, Acc.Rebates, Acc.Balance, Acc.Equity, Acc.BalanceMin,
Acc.BalanceMax, Acc.TotalNetProfit, Acc.CreditsIn, Acc.CreditsInCount,
Acc.CreditsOut, Acc.CreditsOutCount, Acc.CreditsCancelled,
Acc.CreditsCancelledCount, Acc.CreditsStopOut, Acc.CreditsStopOutCount,
Acc.DateBeginTrading, Acc.DateEndTrading,
Acc.DateBeginTrading+nz(BS.LocalHour,0)/24 AS DateBeginTrading_,
Acc.DateEndTrading+nz(BS.LocalHour,0)/24 AS DateEndTrading_, Acc.IR,
Acc.IRCount, Acc.BalanceReset, Acc.BalanceResetCount, Acc.ReSpread,
Acc.ReSpreadCount, Acc.WithdrawalsCommission, Acc.WithdrawalsCommissionCount,
Acc.ReturnComissionWM, Acc.ReturnComissionWMCount, Acc.TotalTrades,
Acc.ProfitTrades, Acc.LossTrades, Acc.NullTrades, Acc.CancelledTrades,
Acc.OpenTrades, Acc.WorkingOrders, Acc.Id_Tables_Statements, Acc.Fillup,
Acc.OperatorFillup, Acc.FillupInsert, Acc.OperatorFillupInsert, B.BrokerName,
BS.BrokerServerName, BST.BrokerServerType, BST.BrokerServerTypeName,
TS.SysName, TS.SysDatabase, BS.Id_BrokerServerType, TS.Id_Broker,
TS.Id_BrokerServer, [Rebates]/[Deposits] AS RebatesPercent,
[DateEndTrading]-[DateBeginTrading] AS PeriodTrading,
IIf([PeriodTrading]>=1,Int([PeriodTrading]) & ‘d ‘,») & Right(‘0’
& CStr(Hour([PeriodTrading])),2) & ‘:’ & Right(‘0’ &
CStr(Minute([PeriodTrading])),2) AS PeriodTrading_

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

13:56 Немного позанимался программой для Аэро-Груза… Продолжаю работать над журналом Accounts

Сделал настройку фильтров для журнала Accounts– 8 шт всего (хватит думаю).

16:55 Повесил на событие Deactivate сохранение настроек
журналов
pubSaveAllFilters(iSysJournal).

В журнале Accounts при изменении флажка FlagActive_AfterUpdate — не срабатывает фильтр, а делается просто Me.Refresh.

Потестил журналы, вроде работают правильно и быстро, если включен активный счет

2015-11-30 23-36-15 Скриншот экрана

16:32 Добавил по счету 3042705 операцию под номером 99999999 BalanceReset на сумму 1726.59, т.к. висел отрицательный остаток.
16:38 Добавил по счету 2866333 операцию под номером 99999999 BalanceReset на сумму 4734.84, т.к. висел отрицательный остаток.
16:40 Добавил по счету 2861174 операцию под номером 99999999 BalanceReset на сумму 4401.51, т.к. висел отрицательный остаток.
Остаются висеть мелкие остатки по некоторым счетам..
16:56 Повесил на событие Deactivate сохранение настроек журналов Call pubSaveAllFilters(iSysJournal)
Стали нормально работать фильтры!
17:41 Решил открыть терминал F4u и проверить остатки по счетам.
На счете 2763146 висел другой остаток BalanceReset 7956.79 – исправил в стейте – остаток сошелся в 0!
На счете 2915091 висит остаток по балансу 413 центов … непонятно откуда…
18:10 Исправил остаток по счету 2678437 на 0
18:12 Исправил остаток по счету 2710376 на 0 (был 0,0674)
18:15 Из новых счетов остаются остатки по счетам:
38039 FreshForex = 0.04 – скорее всего реальный
8235614 InstaForex = 0.09 – так же реальный
2915091 = 4.13 – непонятно … — Добавил операцию под номером 99999999 BalanceReset на сумму -413.00.
3136492= 1.7069 – последний рабочий счет.
18:18 По старым счетам выверять не буду – пусть висят…
18:44 Домой еду … на семерке скорее всего …

19:47 Дома. Тестирую программу. При первом открытии журнала Account почему-то не появляются надписи на кнопках фильтров. Воткнул вызов InitVariables в событие Load формы – стали работать. Но вызов InitVariables выполняется 2 раза – в событиях Load и Activate. Нужно сделать, чтобы не было передергивания RecordSource 2 раза.

22:30 Сделал процедуру ChangeRecordSource() в журналах, которая вызывается в событии Load журналов, в Activate делается только Me.Requery
В журнале Statements при Deactivate перед сохранением фильтров включается Me.swFlagActive = True, чтобы был активным фильтр по активному счету, а журнале Accountsнаоборот Me.swFlagActive = false
22:36 В основном отладил работу журналов. Сделал обновление итогов в стейтах.
В ChangeRecordSource добавил Me.Journal_Statements_ItogsByItems.Form.RecordSource = strQueryItog
Теперь нужно двигаться дальше: завтра буду делать журнал итогов.

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