diff --git a/MT5Connector/MT5Connector.cpp b/MT5Connector/MT5Connector.cpp index 78d279f8..130cbc77 100755 --- a/MT5Connector/MT5Connector.cpp +++ b/MT5Connector/MT5Connector.cpp @@ -51,9 +51,15 @@ public struct CMqlBookInfo void convertSystemString(wchar_t* dest, String^ src) { - pin_ptr wch = PtrToStringChars(src); - memcpy(dest, wch, wcslen(wch) * sizeof(wchar_t)); - dest[wcslen(wch)] = '\0'; + if (src != nullptr) { + pin_ptr wch = PtrToStringChars(src); + memcpy(dest, wch, wcsnlen(wch, 1000) * sizeof(wchar_t)); + dest[wcsnlen(wch, 1000)] = L'\0'; + } + else + { + dest[0] = L'\0'; + } } #define _DLLAPI extern "C" __declspec(dllexport) @@ -278,7 +284,7 @@ _DLLAPI int _stdcall getStringValue(int expertHandle, int paramIndex, wchar_t* r _DLLAPI int _stdcall getULongValue(int expertHandle, int paramIndex, unsigned __int64* res, wchar_t* err) { return Execute([&expertHandle, ¶mIndex, res]() { - *res = (unsigned long)MtAdapter::GetInstance()->GetCommandParameter(expertHandle, paramIndex); + *res = (unsigned __int64)MtAdapter::GetInstance()->GetCommandParameter(expertHandle, paramIndex); return 1; }, err, 0); } @@ -286,7 +292,7 @@ _DLLAPI int _stdcall getULongValue(int expertHandle, int paramIndex, unsigned __ _DLLAPI int _stdcall getLongValue(int expertHandle, int paramIndex, __int64* res, wchar_t* err) { return Execute([&expertHandle, ¶mIndex, res]() { - *res = (long)MtAdapter::GetInstance()->GetCommandParameter(expertHandle, paramIndex); + *res = (__int64)MtAdapter::GetInstance()->GetCommandParameter(expertHandle, paramIndex); return 1; }, err, 0); } @@ -306,4 +312,4 @@ _DLLAPI int _stdcall getUIntValue(int expertHandle, int paramIndex, unsigned int *res = (unsigned int)MtAdapter::GetInstance()->GetCommandParameter(expertHandle, paramIndex); return 1; }, err, 0); -} \ No newline at end of file +} diff --git a/MTApiService/MtMqlTradeRequest.cs b/MTApiService/MtMqlTradeRequest.cs index 7e3037d3..873422dd 100755 --- a/MTApiService/MtMqlTradeRequest.cs +++ b/MTApiService/MtMqlTradeRequest.cs @@ -9,9 +9,9 @@ namespace MTApiService [DataMember] public int Action { get; set; } [DataMember] - public uint Magic { get; set; } + public ulong Magic { get; set; } [DataMember] - public uint Order { get; set; } + public ulong Order { get; set; } [DataMember] public string Symbol { get; set; } [DataMember] @@ -25,7 +25,7 @@ namespace MTApiService [DataMember] public double Tp { get; set; } [DataMember] - public uint Deviation { get; set; } + public ulong Deviation { get; set; } [DataMember] public int Type { get; set; } [DataMember] @@ -36,5 +36,9 @@ namespace MTApiService public DateTime Expiration { get; set; } [DataMember] public string Comment { get; set; } + [DataMember] + public ulong Position { get; set; } + [DataMember] + public ulong PositionBy { get; set; } } } diff --git a/MtApi5/MtConverters.cs b/MtApi5/MtConverters.cs index 73d355ee..e1e47336 100755 --- a/MtApi5/MtConverters.cs +++ b/MtApi5/MtConverters.cs @@ -149,7 +149,7 @@ namespace MtApi5 return new ArrayList { (int)request.Action, request.Magic, request.Order, request.Symbol, request.Volume , request.Price, request.Stoplimit, request.Sl, request.Tp, request.Deviation, (int)request.Type - , (int)request.Type_filling, (int)request.Type_time, exp, request.Comment }; + , (int)request.Type_filling, (int)request.Type_time, exp, request.Comment, request.Position, request.PositionBy }; } #endregion