forked from visualHFT/VisualHFT
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvmStrategyParameterFirmMM.cs
134 lines (129 loc) · 4.46 KB
/
vmStrategyParameterFirmMM.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
using System;
using System.Collections.Generic;
using System.Linq;
using System.ComponentModel;
using VisualHFT.Helpers;
using System.Data;
using VisualHFT.Model;
namespace VisualHFT.ViewModel
{
public class vmStrategyParameterFirmMM: vmStrategyParametersBase<StrategyParametersFirmMMVM>
{
public vmStrategyParameterFirmMM(Dictionary<string, Func<string, string, bool>> dialogs): base(dialogs)
{
_strategyNameForThisControl = "FirmMM";
}
private void SetParameters()
{
if (!bwSetParameters.WorkerSupportsCancellation)
{
bwSetParameters.WorkerSupportsCancellation = true; //use it to know if it was already setup
bwSetParameters.DoWork += (s, args) =>
{
try
{
args.Result = RESTFulHelper.SetVariable<List<StrategyParametersFirmMMVM>>(modelItems.ToList());
}
catch { }
};
bwSetParameters.RunWorkerCompleted += (s, args) =>
{
var res = args.Result as List<StrategyParametersFirmMMVM>;
if (res == null)
return;
};
}
if (!bwSetParameters.IsBusy)
bwSetParameters.RunWorkerAsync();
}
public override void OnSaveSettingsToDB()
{
if (modelItems == null)
return;
using (var db = new HFTEntities())
{
foreach (var setting in modelItems)
{
var existingItem = db.STRATEGY_PARAMETERS_FIRMMM.Where(x => x.Symbol == setting.Symbol && x.LayerName == setting.LayerName).FirstOrDefault();
if (existingItem != null)
{
existingItem.PositionSize = setting.PositionSize;
existingItem.MaximumExposure = setting.MaximumExposure;
existingItem.LookUpBookForSize = setting.LookUpBookForSize;
existingItem.PipsMarkupAsk = setting.PipsMarkupAsk;
existingItem.PipsMarkupBid = setting.PipsMarkupBid;
existingItem.MinPipsDiffToUpdatePrice = setting.MinPipsDiffToUpdatePrice;
existingItem.MinSpread = setting.MinSpread;
existingItem.PipsSlippage = setting.PipsSlippage;
existingItem.AggressingToHedge = setting.AggressingToHedge;
existingItem.PipsSlippageToHedge = setting.PipsSlippageToHedge;
existingItem.PipsHedgeStopLoss = setting.PipsHedgeStopLoss;
existingItem.PipsHedgeTakeProf = setting.PipsHedgeTakeProf;
existingItem.PipsHedgeTrailing = setting.PipsHedgeTrailing;
existingItem.PricingType = (int)setting.PricingType;
existingItem.TickSample = setting.TickSample;
existingItem.BollingerPeriod = setting.BollingerPeriod;
existingItem.BollingerStdDev = setting.BollingerStdDev;
}
else
db.STRATEGY_PARAMETERS_FIRMMM.Add(setting.ThisToDBObject());
db.SaveChanges();
}
}
}
private bool LoadSettingsFromDB()
{
bool bLoadedFromDB = false;
using (var db = new HFTEntities())
{
modelItems.Clear();
foreach (var setting in db.STRATEGY_PARAMETERS_FIRMMM.ToList())
{
modelItems.Add(new StrategyParametersFirmMMVM(setting));
bLoadedFromDB = true;
}
}
return bLoadedFromDB;
}
public override void OnUpdateToAllModelsIfAllSymbolsIsSelected()
{
if (string.IsNullOrEmpty(_selectedSymbol) || _selectedSymbol == "-- All symbols --")
{
foreach (var m in modelItems)
{
if (_model.PositionSize > 0)
m.PositionSize = _model.PositionSize;
if (_model.MaximumExposure > 0)
m.MaximumExposure = _model.MaximumExposure;
if (_model.LookUpBookForSize > 0)
m.LookUpBookForSize = _model.LookUpBookForSize;
if (_model.PipsMarkupAsk > 0)
m.PipsMarkupAsk = _model.PipsMarkupAsk;
if (_model.PipsMarkupBid > 0)
m.PipsMarkupBid = _model.PipsMarkupBid;
if (_model.MinPipsDiffToUpdatePrice > 0)
m.MinPipsDiffToUpdatePrice = _model.MinPipsDiffToUpdatePrice;
if (_model.MinSpread > 0)
m.MinSpread = _model.MinSpread;
if (_model.PipsSlippage > 0)
m.PipsSlippage = _model.PipsSlippage;
if (_model.PipsSlippageToHedge > 0)
m.PipsSlippageToHedge = _model.PipsSlippageToHedge;
if (_model.PipsHedgeStopLoss > 0)
m.PipsHedgeStopLoss = _model.PipsHedgeStopLoss;
if (_model.PipsHedgeTakeProf > 0)
m.PipsHedgeTakeProf = _model.PipsHedgeTakeProf;
m.PipsHedgeTrailing = _model.PipsHedgeTrailing;
if (_model.PricingType > 0)
m.PricingType = _model.PricingType;
if (_model.TickSample > 0)
m.TickSample = _model.TickSample;
if (_model.BollingerPeriod > 0)
m.BollingerPeriod = _model.BollingerPeriod;
if (_model.PositionSize > 0)
m.PositionSize = _model.PositionSize;
}
}
}
}
}