PDA

View Full Version : Convert VTL from Server-side to Client-side



tjdm1980
11-18-2013, 06:48 PM
Hi. How do I convert VTL from Server-side to Client-side? Thanks, and specifically, the NewsTraderEA:

'User defined variables
Dim PointsAway as Integer = 100 'Points Away, number of points above and below the current price where the orders will be placed
Dim TP as Integer = 300 'Take Profit, exact amount of points from open price (set to 0 to disable)
Dim SL as Integer = 100 'Stop Loss, hard stop from open price (set to 0 to disable)
Dim NYear as Integer = 2013 'News Year, broker time not PC time (set to 0 to enable EA every day)
Dim NMonth as Integer = 11 'News Month, broker time not PC time (set to 0 to enable EA every day)
Dim NDay as Integer = 18 'News Day, broker time not PC time (set to 0 to enable EA every day)
Dim NHour as Integer = 11 'News Hour, broker time not PC time
Dim NMin as Integer = 16 'News Minute, broker time not PC time
Dim NSec as Integer = 0 'News Second, broker time not PC time
Dim CTCBN as Integer = 1 'Numbers of Candles in ( Five Minute chart ) To Check Before News, for determining highs & lows (when it is 1 it checks the current candle) (set to 0 to disable, 1 for default)
Dim SecBPO as Integer = 20 'Seconds Before Pending Orders, number of seconds before news when pending orders will be placed
Dim SecBMO as Integer = 1 'Seconds Before Modifying Orders, number of seconds before news when orders will stop being modified
Dim SecBAO as Integer = 5 'Seconds Before Adjacent Orders, number of seconds before news when orders will be brought close to current price
Dim STWAN as Integer = 60 'Seconds To Wait After News, number of seconds after news to wait before deleting pending orders
Dim OCO as Boolean = True 'Order Cancel Other, will cancel the other pending order if one of them is activated but only after news time
Dim BEPoints as Integer = 50 'Break Even Points, number of points in profit before the stop loss is moved to Break Even + BEOffset (set to 0 to disable)
Dim BEOffset as Integer = 10 'Break Even Offset, number of points to move beyond Break Even (allows to cover Broker Commissions etc.) (set to 0 to disable)
Dim TrailPoints as Integer = 300 'Trailing Stop, number of points to a trailing stop (set to 0 to disable)
Dim TrailOffset as Integer = 100 'Trailing Stop Offset, number of points profit required before starting to trail stops (set to 0 to disable)
Dim TrailImmediate as Boolean = False 'Trailing Stop active when trade opened, EA will trail immediately when true (set to false to start trailing when in profit)
Dim MM as Boolean = False 'Money Management, if true uses Risk Percentage, if false uses Lot Size and Stop Loss distance
Dim RiskPercent as Double = 0.5 'Risk Percentage, percent amount of account to risk when Money Management set to true, overrides Lot Size
Dim TradingLots as Double = 0.1 'Lot Size, number of lots to trade when Money Management set to false
Dim MaxSpread as Integer = 0 'Maximum Spread, Cancels Pending Orders if Spread exceeds this setting (set to 0 to disable)
Dim AddSpreadToSL as Boolean = True 'Adds the Spread to the Stop Loss, if true you can set lower SL
Dim AllowBuys as Boolean = True 'Set to false to switch off Buy Trades, default setting is true
Dim AllowSells as Boolean = True 'Set to false to switch off Sell Trades, default setting is true
Dim CurrencyPair as String = "EUR/USD" 'Currency pair to be traded at news time

'# Declear Form variables
Dim Flag as Boolean
Dim oResult As VTLServerApplication.NewOrderResultEnum

'Global variable to be used in code
Dim h,l,ho,lo,hso,lso,htp,ltp,sp, spread as Double
Dim Property_Id As VTLGeneral.ENUM_ACCOUNT_INFO_DOUBLE
Dim _position as VTLGeneral.CPosition
Public Dim Highs as Object
Public Dim Lows as Object
Dim i As Integer
Dim SecOfDay as Integer
Dim SecOfNews as Integer
Dim OrdersCondition as Integer
Dim Point as Double

'Main function

Public Sub main()

Flag = true
Point = 0.0001


End Sub

Public Sub OnTick()

If Flag = False then exit sub
Flag = False

'Delete all pending order if spread is greater than max spread
IF MaxSpread <> 0 Then

IF spread > MaxSpread Then

OrdersDeleteAll

End IF
End IF

'Find working Days

IF ( Year ( DateTime.Now ) = NYear OR NYear = 0 ) Then
IF ( Month ( DateTime.Now ) = NMonth OR NMonth = 0 ) Then
IF ( DateAndTime.Day ( DateTime.Now ) = NDay OR NDay = 0 ) Then

OrdersCondition = CheckOrdersCondition

SecOfDay = Hour ( DateTime.Now ) * 3600 + Minute ( DateTime.Now ) * 60 + Second ( DateTime.Now )
SecOfNews = NHour * 3600 + NMin * 60 + NSec

'Open Order
IF ((SecOfDay < SecOfNews) AND ( SecOfDay > ( SecOfNews - SecBPO ) ) ) Then
'if before news but after news minus BPO
Calculate_All



IF ( OrdersCondition = 0 ) Then 'if we have no orders and both buys and sells are allowed

IF (AllowBuys) Then OpenBuyStop()

IF (AllowSells) Then OpenSellStop()

ElseIF ( OrdersCondition = 1 AND AllowBuys ) Then 'if we only have a sell stop and only buys are allowed
OpenBuyStop()

ElseIF ( OrdersCondition = 10 AND AllowSells ) Then 'if we only have a buy stop and only sells are allowed
OpenSellStop()
End IF
End IF

'Modify Order
IF ( ( secofday < secofnews) AND ( secofday > ( secofnews - SecBPO ) ) AND ( secofday < ( secofnews - SecBMO ) ) ) Then
'if before news but after news minus BPO and before news minus BMO
DoModify()
End IF

'Delete Order

IF ( ( secofday > secofnews ) AND ( secofday < ( secofnews + STWAN ) ) AND OCO )
'if after news and within wait time and we are using one cancels other
IF ( OrdersCondition = 1001 ) Then 'if we have a buy and a sell stop
DeleteSellStop()
End IF

IF ( OrdersCondition = 110 ) Then 'if we have a sell and a buy stop
DeleteBuyStop()
End If

End If

IF ( ( secofday > secofnews ) AND ( secofday > ( secofnews + STWAN ) ) ) Then
'if after news and after wait time
IF ( OrdersCondition = 11 ) Then 'if we have a buy stop and a sell stop

DeleteSellStop()
DeleteBuyStop()
End IF

IF (( OrdersCondition = 1) OR ( OrdersCondition = 1001 ) ) Then 'if we have a sell stop or a buy and a sell stop
DeleteSellStop()
End If

IF ( ( OrdersCondition = 10 ) OR ( OrdersCondition = 110 ) ) Then 'if we have a buy stop or a sell and a buy stop
DeleteBuyStop()
End If
End IF


End IF
End IF
End IF

Flag = True

End Sub

'## Functions to be used in code
Private Function LotsOptimized() as Double

Dim FreeMargin as Double
Dim tLot as Double

Property_Id = VTLGeneral.ENUM_ACCOUNT_INFO_DOUBLE.ACCOUNT_EFF_MA RGIN
FreeMargin = ClientCode.AccountInfoDouble ( Property_Id )

If MM = true then
tLot = FreeMargin * RiskPercent / 1000
tLot = CInt( tLot / SL * 100 )
LotsOptimized = CDbl( tLot / 100 )
Else
LotsOptimized = TradingLots
End If

End Function

Private Function CheckOrdersCondition() as Integer
Dim Result as Integer = 0
Dim Ptype as Integer
Dim i as integer = 1
Dim mOrder as VTLGeneral.Order

IF ClientCode.PositionsTotal() > 0

For i = 1 To ClientCode.PositionsTotal()

IF ClientCode.OpenPositionByIndex(i).SymbolName.Tostr ing() = CurrencyPair Then

Ptype = ClientCode.OpenPositionByIndex(i).BuySell

IF Ptype = 1 Then 'BUY Position
Result = Result + 1000
ElseIF Ptype = -1 Then 'Sell Position
Result = Result + 100
End IF

End IF

Next i
End If

IF ClientCode.OrdersTotal() > 0

For i = 1 To ClientCode.OrdersTotal()

mOrder = ClientCode.OrderByIndex(i)

IF mOrder.SymbolName.Tostring() = CurrencyPair AND mOrder.OrderTicket = 0 Then

PType = mOrder.BuySell

IF Ptype = 2 Then 'BUY Stop Position
Result = Result + 10
ElseIF Ptype = -2 Then 'Sell Stop
Result = Result + 1
End IF

End IF

Next i

End If

CheckOrdersCondition = Result

End Function

Public Function OpenBuyStop() As Integer
Dim cPair as VTLGeneral.CSymbol
cPair = ClientCode.GetSymbolByName( CurrencyPair )
Dim OrderResult As VTLServerApplication.CallingResultsEnum

OrderResult = ClientCode.NewLimitOrder(2,cPair.ID ,LotsOptimized(), ho, hso, htp)

Return CINT( OrderResult )

End Function

Public Function OpenSellStop() as Integer
Dim cPair as VTLGeneral.CSymbol
cPair = ClientCode.GetSymbolByName( CurrencyPair )
Dim OrderResult As VTLServerApplication.CallingResultsEnum

OrderResult = ClientCode.NewLimitOrder(-2,cPair.ID ,LotsOptimized(), lo, lso, ltp)

'Thread.Sleep(500)

Return CINT(OrderResult)

End Function

Public Sub DoModify()
Dim dOrder as VTLGeneral.Order
Dim m As Integer

IF ClientCode.OrdersTotal() > 0

For m = 1 To ClientCode.OrdersTotal()

dOrder = ClientCode.OrderByIndex(m)

If dOrder.OrderTicket = 0 AND dOrder.SymbolName = CurrencyPair Then
IF dOrder.BuySell = 2 Then
IF dOrder.LimitPrice > ho OR dOrder.LimitPrice > ho Then
ClientCode.UpdateLimitOrder( dOrder.OrderID, dOrder.Lots, ho, hso, htp )
End IF
ElseIF dOrder.BuySell = -2 Then
IF dOrder.LimitPrice > lo OR dOrder.LimitPrice <lo Then
ClientCode.UpdateLimitOrder ( dOrder.OrderID, dOrder.Lots, lo, lso, ltp )
End If
End If
End IF

Next m
End If

End Sub

Public Sub DoBE()

Dim osl,be,bof as Double
Dim b as Integer
Dim beOrder as VTLGeneral.Order
Dim bePosition as VTLGeneral.CPosition
Dim cBid as Double
Dim cAsk as Double

IF ClientCode.OrdersTotal() > 0

For b = 1 To ClientCode.OrdersTotal()

beOrder = ClientCode.OrderByIndex(b)
IF beOrder.OrderTicket > 0 AND beOrder.SymbolName = CurrencyPair Then
osl = beOrder.SL
IF beOrder.BuySell = -1 Then 'Main position buy, managed order sell
bePosition = ClientCode.OpenPositionByTicket(beOrder.OrderTicke t)
be = bePosition.Price + ((BEPoints + BEOffset) * Point)
bof = bePosition.Price + (BEOffset * Point)
cBid = ClientCode.SymbolInfoDouble(CurrencyPair,VTLGenera l.ENUM_SYMBOL_INFO_DOUBLE.SYMBOL_BID)
IF (cBid > be AND (osl < bof OR osl = 0 ))
ClientCode.UpdateSLTPOrder ( beOrder.OrderID, beOrder.Lots, bof, beOrder.TP )
End IF
IF (cBid < osl AND osl <> 0) Then 'if bid lower than buy stop level, close
ClientCode.DeleteSLTPOrder (BeOrder.OrderID)
END IF
Elseif beOrder.BuySell = 1 Then 'Main position sell, managed order buy
bePosition = ClientCode.OpenPositionByTicket(beOrder.OrderTicke t)
be = bePosition.Price - ((BEPoints + BEOffset) * Point)
bof = bePosition.Price - (BEOffset * Point)
cAsk = ClientCode.SymbolInfoDouble(CurrencyPair,VTLGenera l.ENUM_SYMBOL_INFO_DOUBLE.SYMBOL_ASK)
IF (cAsk < be AND (osl > bof OR osl = 0 ))
ClientCode.UpdateSLTPOrder ( beOrder.OrderID, beOrder.Lots, bof, beOrder.TP )
End IF
IF (cAsk > osl AND osl <> 0) Then 'if ask higher than sell stop level, close
ClientCode.DeleteSLTPOrder (BeOrder.OrderID)
END IF
End If
bof = osl
osl = be

End If

Next b
End if
End Sub

Public Sub DoTrail()

Dim osl,tot as Double
Dim tl As Double
Dim t as Integer
Dim tOrder as VTLGeneral.Order
Dim tPosition as VTLGeneral.cPosition
Dim tBid, tAsk as Double

IF ClientCode.OrdersTotal() > 0

For t = 1 To ClientCode.OrdersTotal()

tOrder = ClientCode.OrderByIndex(t)
IF tOrder.OrderTicket > 0 AND tOrder.SymbolName = CurrencyPair Then
osl = tOrder.SL
IF tOrder.BuySell = -1 Then 'Main position buy, managed order sell
tPosition = ClientCode.OpenPositionByTicket(tOrder.OrderTicket )
tBid = ClientCode.SymbolInfoDouble(CurrencyPair,VTLGenera l.ENUM_SYMBOL_INFO_DOUBLE.SYMBOL_BID)
tot = tPosition.Price + ((TrailPoints + TrailOffset) * Point )
tl = tBid - (TrailPoints * Point)
If ((TrailImmediate = False AND tBid > tot) OR TrailImmediate = True) Then
'is bid higher than open plus trail and offset setting or is TrailImmediate=true
IF ( osl < tl OR osl = 0 ) Then 'is stop loss less than bid minus the trail setting
'OrderModify(OrderTicket(), OrderOpenPrice(), tl, OrderTakeProfit(), Green);
ClientCode.UpdateSLTPOrder ( tOrder.OrderID, tOrder.Lots, tl, tOrder.TP )
End if
IF ( tBid < osl AND osl <> 0) ' if bid lower than buy stop level, close
ClientCode.DeleteSLTPOrder (tOrder.OrderID)
End IF
End If
End IF
IF tOrder.BuySell = 1 Then 'Main position sell, managed order buy
tPosition = ClientCode.OpenPositionByTicket(tOrder.OrderTicket )
tAsk = ClientCode.SymbolInfoDouble(CurrencyPair,VTLGenera l.ENUM_SYMBOL_INFO_DOUBLE.SYMBOL_Ask)
tot = tPosition.Price - ((TrailPoints + TrailOffset) * Point )
tl = tAsk + (TrailPoints * Point)
If ((TrailImmediate = False AND tAsk < tot) OR TrailImmediate = True) Then
'is bid higher than open plus trail and offset setting or is TrailImmediate=true
IF ( osl > tl OR osl = 0 ) Then 'is stop loss less than bid minus the trail setting
'OrderModify(OrderTicket(), OrderOpenPrice(), tl, OrderTakeProfit(), Green);
ClientCode.UpdateSLTPOrder ( tOrder.OrderID, tOrder.Lots, tl, tOrder.TP )
End if
IF ( tAsk > osl AND osl <> 0) ' if bid lower than buy stop level, close
ClientCode.DeleteSLTPOrder (tOrder.OrderID)
End IF
End If
End IF
End If


Next t
End IF



End Sub

Public Sub Calculate_All()
Dim vHigh as Integer = VTLGeneral.ENUM_HISTORY_TYPE.HIS_HIGH
Dim vLow as Integer = VTLGeneral.ENUM_HISTORY_TYPE.HIS_LOW
Dim pFive as Integer = VTLGeneral.ENUM_PERIOD.FIVE_MINUTE


IF ((SecBPO <> SecBAO) And (PointsAway < 10000)) Then
IF ((secofday<secofnews) And (secofday>(secofnews-SecBPO)) And (secofday<(secofnews-SecBAO))) Then
'if before news but after (news minus BPO) and before (news minus BAO)
PointsAway = PointsAway + 10000
End IF
End IF

IF ((SecBPO <> SecBAO) And (PointsAway >= 10000)) Then
IF ((secofday<secofnews) And (secofday>(secofnews-SecBPO)) And (secofday>=(secofnews-SecBAO))) Then
'if before news but after (news minus BPO) and after (news minus BAO)
PointsAway = PointsAway - 10000
END IF
End If

'Get High and Low price in selected bars
IF CTCBN = 0 Then

h = ClientCode.SymbolInfoDouble(CurrencyPair,VTLGenera l.ENUM_SYMBOL_INFO_DOUBLE.SYMBOL_BID)
l = ClientCode.SymbolInfoDouble(CurrencyPair,VTLGenera l.ENUM_SYMBOL_INFO_DOUBLE.SYMBOL_BID)

Else

Dim pSymbol as VTLGeneral.cSymbol
pSymbol = ClientCode.GetSymbolByName( CurrencyPair )
Highs = ClientCode.GetChartHistory(pSymbol.ID, pFive, vHigh, ClientCode.Bars(pSymbol.ID, pFive))
Lows = ClientCode.GetChartHistory(pSymbol.ID, pFive, vLow, ClientCode.Bars(pSymbol.ID, pFive))

h = Highs( Ubound(Highs) - 1 )
l= Lows ( Ubound(Lows) - 1 )

For i = 1 To CTCBN

IF Highs( Ubound(Highs)- i ) > h Then h = Highs(Ubound(Highs)- i)
IF Lows ( Ubound(Lows) - i ) < l Then l = Lows( UBound(Lows) - i)

Next i

End IF

sp = ClientCode.SymbolInfoDouble(CurrencyPair,VTLGenera l.ENUM_SYMBOL_INFO_DOUBLE.SYMBOL_BID) - ClientCode.SymbolInfoDouble(CurrencyPair,VTLGenera l.ENUM_SYMBOL_INFO_DOUBLE.SYMBOL_ASK)

Dim spread as Double = sp/Point

ho = h + sp + ( PointsAway * Point )
lo = l - ( PointsAway * Point )

'Calculate Stop Loss Price
IF SL = 0 Then

hso = 0
lso = 0

Elseif AddSpreadToSL = True then

hso = ho - sp - ( SL * Point ) 'Bid+(PointsAway*Point)-(SL*Point); //hso=Ask+(PipsAway-SL)*Point; //hso=h+sp;
lso= lo + sp + ( SL * Point ) 'Ask-(PointsAway*Point)+(SL*Point); //lso=Bid-(PipsAway-SL)*Point; //lso=l;

Else

hso = ho - ( SL * Point ) ' //Ask+(PointsAway*Point)-(SL*Point)
lso = lo + ( SL * Point ) ' //Bid-(PointsAway*Point)+(SL*Point)

End IF
'Calculate Profit Target price
IF TP = 0 Then

htp = 0
ltp = 0

Else

htp = ho + ( TP * Point )
ltp = lo - ( TP * Point )

End IF

End Sub

''' The function is generated when a new tick is received for any symbol


Private Function OrdersDeleteAll()
Dim Result as Integer

Result = DeleteBuyStop
Result = Result + DeleteSellStop

Return Result

End Function

Private Function DeleteBuyStop()
Dim i as Integer
Dim dlOrder as VTLGeneral.Order

IF ClientCode.OrdersTotal() > 0

For i = 1 To ClientCode.OrdersTotal()

dlOrder = ClientCode.OrderByIndex(i)

IF dlOrder.SymbolName.Tostring() = CurrencyPair AND dlOrder.OrderTicket = 0 Then

IF ClientCode.OrderByIndex(i).BuySell = 2 Then

ClientCode.DeleteLimitOrder ( ClientCode.OrderByIndex(i).OrderId )
Return 1

End IF

End IF

Next i

End If

Return 0

End Function

Private Function DeleteSellStop ()
Dim i as Integer
Dim dlOrder as VTLGeneral.Order

IF ClientCode.OrdersTotal() > 0

For i = 1 To ClientCode.OrdersTotal()

dlOrder = ClientCode.OrderByIndex(i)

IF dlOrder.SymbolName.Tostring() = CurrencyPair And dlOrder.OrderTicket = 0 Then

IF ClientCode.OrderByIndex(i).BuySell = -2 Then

ClientCode.DeleteLimitOrder ( ClientCode.OrderByIndex(i).OrderId )
Return 1

End IF

End IF

Next i

End If
Return 0

End Function
''' <summary>
''' Generatd after calling the CloseMarketOrder and receiving its result from the server
''' </summary>

Public Sub CloseOrderResult(ByRef Result As VTLServerApplication.NewOrderResultEnum, ByRef AtPrice As Double, ByRef PosOrOrder As Short, ByRef OrderId As Integer, ByRef BuySell As VTLServerApplication.OperationTypeEnum, ByRef Lots As Double, ByRef Symbol As VTLServerApplication.CSymbol, ByRef ServerTime As String, ByRef OpenTicket As Integer)
'''TODO: Implement the handler

End Sub

''' <summary>
''' Generatd after calling the NewMarketOrder and receiving its result from the server
''' </summary>

Public Sub NewOrderResult(ByRef Result As VTLServerApplication.NewOrderResultEnum, ByRef AtPrice As Double, ByRef PosOrOrder As Short, ByRef OrderId As Integer, ByRef BuySell As VTLServerApplication.OperationTypeEnum, ByRef Lots As Double, ByRef Symbol As VTLServerApplication.CSymbol, ByRef ServerTime As String)
select case CINT(Result)
case 1
Dim operation As String
if BuySell = 1 then
operation = "Buy"
else
operation = "Sell"
end if
Msg(operation & " order accepted by ticket #" & OrderId & " @ " & CSTR(AtPrice) & " $" & CSTR(Symbol.Name))
case 2
Msg("NewOrderResult: Not Enough Money")
case 3
Msg("NewOrderResult: Trading is Closed")
case 4
Msg("NewOrderResult: Unable to get a quote on this symbol due to market conditions")
case 5
Msg("NewOrderResult: Unable to get a quote due to a bad connection")
case 7
Msg("NewOrderResult: Position is in pending mode")
case else
Msg("NewOrderResult: Undefined Result")
end select

End Sub

Public Sub Msg(msg As String)
GUI.MsgDialog(msg)
End Sub

''' <summary>
''' Generatd after calling the NewLimitOrder and receiving its result from the server
''' </summary>

Public Sub NewLimitOrderResult(ByRef Result As VTLServerApplication.NewOrderResultEnum, ByRef OrderId As Integer, ByRef ServerTime As String)
select case CINT(Result)
case 1
'Flag = false
'OrdersCondition = 100
' Msg(" Pending order accepted by ticket #" & OrderId & " @ " & CSTR(ServerTime) )
case 2
Msg("NewOrderResult: Not Enough Money")
case 3
Msg("NewOrderResult: Trading is Closed")
case 4
Msg("NewOrderResult: Unable to get a quote on this symbol due to market conditions")
case 5
Msg("NewOrderResult: Unable to get a quote due to a bad connection")
case 7
Msg("NewOrderResult: Position is in pending mode")
case else
Msg("NewOrderResult: Undefined Result")
end select


End Sub

''' <summary>
''' Generatd after calling the NewSLTPOrder and receiving its result from the server
''' </summary>

Public Sub NewSLTPOrderResult(ByRef Result As VTLServerApplication.NewOrderResultEnum, ByRef OrderId As Integer, ByRef ServerTime As String)
'''TODO: Implement the handler

End Sub

''' <summary>
''' Generatd after calling the UpdateLimitOrder and receiving its result from the server
''' </summary>

Public Sub UpdateLimitOrderResult(ByRef Result As VTLServerApplication.NewOrderResultEnum, ByRef OrderId As Integer, ByRef ServerTime As String)
'''TODO: Implement the handler

End Sub

''' <summary>
''' Generatd after calling the DeleteLimitOrder and receiving its result from the server
''' </summary>

Public Sub DeleteLimitOrderResult(ByRef Result As VTLServerApplication.NewOrderResultEnum, ByRef OrderId As Integer)
'''TODO: Implement the handler

End Sub

''' <summary>
''' Generatd after calling the DeleteSLTPOrder and receiving its result from the server
''' </summary>

Public Sub DeleteSLTPOrderResult(ByRef Result As VTLServerApplication.NewOrderResultEnum, ByRef OrderId As Integer)
'''TODO: Implement the handler

End Sub

''' <summary>
''' Generatd after calling the UpdateSLTPOrder and receiving its result from the server
''' </summary>

Public Sub UpdateSLTPOrderResult(ByRef Result As VTLServerApplication.NewOrderResultEnum, ByRef OrderId As Integer, ByRef ServerTime As String)
'''TODO: Implement the handler

End Sub

Hassan-HS
11-19-2013, 05:24 AM
Dear sir,



Sure you can convert any VTL server script to VTL client script in two phases.


1- Convert the syntax of instructions from VB.NET syntax to VBA.
2- Convert the names of VTL server built in functions to VTL client.

The following documentation links can assist you in mapping.

1-VTL Server. (http://www.hybrid-solutions.com/support/index.php?/Knowledgebase/Article/View/2566)

2-VTL Client. (http://www.hybrid-solutions.com/support/index.php?/Knowledgebase/Article/View/2567)

The following presentation can assist you in learning the VTL syntax.

1-VTL Course (http://www.hybrid-solutions.com/VTL%20Course.pdf).

Note:

If you do not have a programming skills you can get a bids on this this project by posting it in VFXLancer (VFXLancer.com).

Hassan-HS
01-09-2014, 09:19 AM
Dear Sir,


Please update us if every thing is clear now or not, and let me know if you need any further assistance.