|
|
|
|
@ -1,5 +1,5 @@
@@ -1,5 +1,5 @@
|
|
|
|
|
{-# LANGUAGE OverloadedStrings #-} |
|
|
|
|
{-# LANGUAGE DeriveDataTypeable #-} |
|
|
|
|
{-# LANGUAGE OverloadedStrings #-} |
|
|
|
|
|
|
|
|
|
module Broker.QuikBroker.Trans2QuikApi ( |
|
|
|
|
Trans2QuikApi(..), |
|
|
|
|
@ -12,30 +12,30 @@ module Broker.QuikBroker.Trans2QuikApi (
@@ -12,30 +12,30 @@ module Broker.QuikBroker.Trans2QuikApi (
|
|
|
|
|
quikSendTransaction |
|
|
|
|
) where |
|
|
|
|
|
|
|
|
|
import Foreign |
|
|
|
|
import Foreign.C.Types |
|
|
|
|
import Foreign.C.String |
|
|
|
|
import Foreign.Marshal.Array |
|
|
|
|
import Control.Monad |
|
|
|
|
import Control.Monad.Trans.Except |
|
|
|
|
import Control.Error.Util |
|
|
|
|
import Control.Monad.IO.Class |
|
|
|
|
import System.Win32.DLL |
|
|
|
|
import System.Win32.Types |
|
|
|
|
import Codec.Text.IConv |
|
|
|
|
import Control.Concurrent |
|
|
|
|
import Control.Error.Util |
|
|
|
|
import Control.Exception.Safe |
|
|
|
|
import Data.IORef |
|
|
|
|
import Data.Time.Clock |
|
|
|
|
import Data.Time.Calendar |
|
|
|
|
import Data.Ratio |
|
|
|
|
import Data.Typeable |
|
|
|
|
import Control.Monad |
|
|
|
|
import Control.Monad.IO.Class |
|
|
|
|
import Control.Monad.Trans.Except |
|
|
|
|
import qualified Data.ByteString as BS |
|
|
|
|
import qualified Data.ByteString.Lazy as BL |
|
|
|
|
import Data.IORef |
|
|
|
|
import Data.Ratio |
|
|
|
|
import qualified Data.Set as S |
|
|
|
|
import qualified Data.Text as T |
|
|
|
|
import Data.Text.Encoding |
|
|
|
|
import Data.Time.Calendar |
|
|
|
|
import Data.Time.Clock |
|
|
|
|
import Data.Typeable |
|
|
|
|
import Foreign |
|
|
|
|
import Foreign.C.String |
|
|
|
|
import Foreign.C.Types |
|
|
|
|
import Foreign.Marshal.Array |
|
|
|
|
import System.Log.Logger |
|
|
|
|
import Codec.Text.IConv |
|
|
|
|
import System.Win32.DLL |
|
|
|
|
import System.Win32.Types |
|
|
|
|
|
|
|
|
|
type QuikErrorCode = LONG |
|
|
|
|
|
|
|
|
|
@ -468,8 +468,10 @@ defaultTransactionReplyCb state transactionResult errorCode replyCode transId or
@@ -468,8 +468,10 @@ defaultTransactionReplyCb state transactionResult errorCode replyCode transId or
|
|
|
|
|
|
|
|
|
|
maybecb <- hlTransactionCallback <$> readIORef state |
|
|
|
|
case maybecb of |
|
|
|
|
Just cb -> cb (transactionResult == ecSuccess) (toInteger transId) (toInteger orderNum) |
|
|
|
|
Just cb -> cb ((transactionResult == ecSuccess) && (replyCode /= rcInsufficientFunds)) (toInteger transId) (toInteger orderNum) |
|
|
|
|
Nothing -> return () |
|
|
|
|
where |
|
|
|
|
rcInsufficientFunds = 4 |
|
|
|
|
|
|
|
|
|
defaultOrderCb :: IORef Quik -> LONG -> DWORD -> CLLong -> LPSTR -> LPSTR -> CDouble -> CLLong -> CDouble -> LONG -> LONG -> CIntPtr -> IO () |
|
|
|
|
defaultOrderCb state mode transId dnumber classCode secCode price balance value sell status desc = do |
|
|
|
|
|