189 lines
5.7 KiB
Transact-SQL
189 lines
5.7 KiB
Transact-SQL
CREATE PROCEDURE [BO_CreateKnok]
|
|
@HttpRequestInfo NVARCHAR(MAX) = NULL,
|
|
@UserId bigint,
|
|
@OperatorId BIGINT = NULL,
|
|
-- @ApiConsumerId int,
|
|
@Currency1 NVARCHAR(50) = NULL,
|
|
@Currency2 NVARCHAR(50) = NULL,
|
|
@ExchangeId INT = NULL,
|
|
-- @TickerId INT = NULL,
|
|
@EntryPriceFrom decimal(18,8) ,
|
|
@EntryPriceTo decimal(18,8) ,
|
|
@ExitPriceFrom decimal(18,8) ,
|
|
@ExitPriceTo decimal(18,8) ,
|
|
@StopLoss decimal(18,8) ,
|
|
@Duration INT,
|
|
@PotentialProfitValue decimal(18,8) = NULL,
|
|
@PotentialProfit INT = NULL,
|
|
@HasTechnical BIT = 0,
|
|
@Technical_Header NVARCHAR(MAX) = NULL,
|
|
@Technical_Description NVARCHAR(MAX) = NULL,
|
|
@Technical_References NVARCHAR(MAX) = NULL,
|
|
@HasFundamental BIT = 0,
|
|
@Fundamental_Header NVARCHAR(MAX) = NULL,
|
|
@Fundamental_Description NVARCHAR(MAX) = NULL,
|
|
@Fundamental_References NVARCHAR(MAX) = NULL,
|
|
@Rate decimal(18,8) = NULL,
|
|
@CurrentPrice decimal(22, 8),
|
|
@alr int = 0
|
|
|
|
-- @CreationDate
|
|
-- @PublishDate
|
|
-- @IsActive BIT = 1
|
|
AS
|
|
DECLARE @TranStarted BIT,
|
|
@ERROR SMALLINT,
|
|
@RC INT,
|
|
@RowCount INT,
|
|
@ErrorMessage VARCHAR(100)
|
|
SET @TranStarted = 0
|
|
SET @RC = 0
|
|
BEGIN TRY
|
|
-- Save HttpRequestId --
|
|
DECLARE @HttpRequestId BIGINT = NULL
|
|
IF @HttpRequestInfo IS NOT NULL
|
|
BEGIN
|
|
INSERT INTO HttpRequests (HttpRequestInfo) VALUES (@HttpRequestInfo)
|
|
SET @HttpRequestId = SCOPE_IDENTITY()
|
|
END
|
|
|
|
DECLARE @CreationDate datetime2 = GETUTCDATE()
|
|
-- SET @CreationDate = ISNULL(@CreationDate, [dbo].[FN_GetSystemTime]())
|
|
DECLARE @TickerId INT = NULL
|
|
DECLARE @TickerCurrency varchar(25)
|
|
|
|
select @TickerId = t.TickerId, @TickerCurrency = t.Currency from Tickers t
|
|
left join Exchanges on Exchanges.ExchangeId = t.ExchangeId
|
|
where (t.Base=@Currency1 and t.NonBase=@Currency2) --or (t.NonBase=@Currency1 and t.Base=@Currency2)
|
|
and t.ExchangeId = @ExchangeId
|
|
|
|
IF @TickerId IS NULL
|
|
BEGIN
|
|
SET @RC = 1
|
|
SET @ErrorMessage = 'Couldn''t find symbol pair'
|
|
RAISERROR (@ErrorMessage,16,1)
|
|
END
|
|
|
|
INSERT INTO [dbo].[Signals] ([Currency1], [Currency2], [Currency], [ExchangeId], [TickerId], [CreatorUserId], EntryPriceFrom, [EntryPriceTo], ExitPriceFrom, ExitPriceTo, [StopLoss],[Duration], [HasTechnical], [Technical_Header], [Technical_Description], [Technical_References], [HasFundamental], [Fundamental_Header], [Fundamental_Description],
|
|
[Fundamental_References], [CreateDate], [PublishedDate], [PotentialProfit], [PotentialProfitValue], [KnokStatusId], [Ranks])
|
|
VALUES (@Currency1, @Currency2, @TickerCurrency, @ExchangeId, @TickerId, @UserId, @EntryPriceFrom, @EntryPriceTo,
|
|
@ExitPriceFrom, @ExitPriceTo, @StopLoss, @Duration, @HasTechnical, @Technical_Header, @Technical_Description,
|
|
@Technical_References, @HasFundamental, @Fundamental_Header, @Fundamental_Description, @Fundamental_References,
|
|
@CreationDate, GETDATE(), @PotentialProfit, @PotentialProfitValue, 1, @Rate)
|
|
|
|
|
|
DECLARE @KnokId BIGINT = SCOPE_IDENTITY()
|
|
|
|
--Update knok traiding pair rate data
|
|
Select @alr = COUNT(*) from [Knoks_Prices].dbo.[ActivePair]
|
|
where [Knoks_Prices].dbo.[ActivePair].ExchangeId = @ExchangeId
|
|
and [Knoks_Prices].dbo.[ActivePair].Base = @Currency1 and [Knoks_Prices].dbo.[ActivePair].NonBase = @Currency2
|
|
|
|
if (@alr = 0)
|
|
begin
|
|
INSERT INTO [Knoks_Prices].dbo.[ActivePair]
|
|
(ExchangeId, Base, NonBase, LastDate)
|
|
Values
|
|
(@ExchangeId, @Currency1 , @Currency2, DATEADD(day, @Duration, @CreationDate))
|
|
end
|
|
else
|
|
begin
|
|
Update [Knoks_Prices].dbo.[ActivePair] set
|
|
LastDate = DATEADD(day, @Duration, @CreationDate) Where [Knoks_Prices].dbo.[ActivePair].ExchangeId = @ExchangeId
|
|
and [Knoks_Prices].dbo.[ActivePair].Base = @Currency1 and [Knoks_Prices].dbo.[ActivePair].NonBase = @Currency2
|
|
end
|
|
INSERT INTO [Knoks_Prices].[dbo].[CRT_Data_LiveChart]
|
|
([CRTD_TargetName]
|
|
,[CRTD_CreationDate]
|
|
,[CRTD_FirstQuote]
|
|
,[CRTD_LastQuote]
|
|
,[CRTD_PairSymbol]
|
|
,[CRTD_BidOpeningValue]
|
|
,[CRTD_BidClosingValue]
|
|
,[CRTD_BidLowValue]
|
|
,[CRTD_BidHighValue]
|
|
,[CRTD_MidOpeningValue]
|
|
,[CRTD_MidClosingValue]
|
|
,[CRTD_MidLowValue]
|
|
,[CRTD_MidHighValue]
|
|
,[CRTD_DateModified]
|
|
,[CRTD_Rows]
|
|
,[ExchangeId])
|
|
Values
|
|
('LiveChart'
|
|
,@CreationDate
|
|
,0
|
|
,@CreationDate
|
|
,@Currency1 + @Currency2
|
|
,@CurrentPrice
|
|
,@CurrentPrice
|
|
,@CurrentPrice
|
|
,@CurrentPrice
|
|
,0
|
|
,0
|
|
,0
|
|
,0
|
|
,GETUTCDATE()
|
|
,0
|
|
,@ExchangeId
|
|
);
|
|
INSERT INTO [Knoks_Prices].[dbo].[CRT_Data_1Minute]
|
|
([CRTD_Period]
|
|
,[CRTD_FirstQuote]
|
|
,[CRTD_LastQuote]
|
|
,[CRTD_PairSymbol]
|
|
,[CRTD_BidOpeningValue]
|
|
,[CRTD_BidClosingValue]
|
|
,[CRTD_BidLowValue]
|
|
,[CRTD_BidHighValue]
|
|
,[CRTD_MidOpeningValue]
|
|
,[CRTD_MidClosingValue]
|
|
,[CRTD_MidLowValue]
|
|
,[CRTD_MidHighValue]
|
|
,[CRTD_DateIn]
|
|
,[CRTD_Rows]
|
|
,[ExchangeId]
|
|
)
|
|
SELECT CRTD_CreationDate
|
|
,0
|
|
,@CreationDate
|
|
,CRTD_PairSymbol
|
|
,[CRTD_BidOpeningValue]
|
|
,[CRTD_BidClosingValue]
|
|
,[CRTD_BidLowValue]
|
|
,[CRTD_BidHighValue]
|
|
,0
|
|
,0
|
|
,0
|
|
,0
|
|
,GETUTCDATE()
|
|
,0
|
|
,[ExchangeId]
|
|
FROM [Knoks_Prices].[dbo].[CRT_Data_LiveChart] (nolock)
|
|
WHERE CRTD_ID = (SELECT TOP 1 lc.CRTD_ID from [Knoks_Prices].[dbo].[CRT_Data_LiveChart] lc (nolock)
|
|
WHERE lc.ExchangeId = @ExchangeId AND lc.[CRTD_PairSymbol] = @Currency1 + @Currency2
|
|
AND dateadd(mi, datediff(mi, 0, lc.CRTD_CreationDate), 0) <= dateadd(mi, datediff(mi, 0, @CreationDate), 0)
|
|
ORDER BY lc.CRTD_CreationDate DESC)
|
|
EXEC [Knoks_Prices].[dbo].RecalcAggregations
|
|
|
|
EXEC BO_GetKnoksFull @KnokId
|
|
|
|
RETURN @RC
|
|
END TRY
|
|
|
|
BEGIN CATCH
|
|
|
|
--IF( @TranStarted = 1 )
|
|
--ROLLBACK TRANSACTION
|
|
|
|
|
|
EXEC USP_LogError
|
|
EXEC USP_RethrowError
|
|
|
|
IF @RC = 0
|
|
SET @RC = 1 ---- Unexpected Error
|
|
|
|
RETURN @RC
|
|
END CATCH
|
|
GO
|