OrderMan - Ordering interface for NOW + Amibroker

TracerBullet

Well-Known Member
Good morning..
I have attached the picture for your convenient, here I want to select only crudeoil, how can I do this by autohotkey.Please help me.

Regards,
Amit
Is this question for Orderman or AHK ?

If you create order by orderman, you can modify/update/cancel/etc directly from OM. If order is already created you can link with it and then manage it.

If your question is on how to select row with AHK, then see example code in Orderbook.ahk : selectOpenOrder()
 
@TracerBullet

I really do not understand much of the coding, but can do little coding...learnt from gogling,trial and error, but I developed my trading system which places order to system but not able selectively cancel open order from order book, but I see orderman able to read the "Oderbook", so please guide with an example how to cancel order by AHK standalone, for example Crudeoil from orderbook, i.e if I run AHK it should open orderbook and cancel only crudeoil.

I find following codes from Order folder hope will easy ur effort....



/*
Order Details read from orderbook
*/
class OrderDetailsClass{
orderType := ""
buySell := ""
tradingSymbol := ""
totalQty := ""
pendingQty := ""
price := ""
triggerPrice := ""
averagePrice := ""
status := ""
nowOrderNo := ""
nowUpdateTime := ""
rejectionReason := ""
status2 := ""

isClosed(){ // Indicates whether order is in Order Book > Completed Orders
return this.status2 == "C"
}

isOpen(){ // Indicates whether order is in Order Book > Open Orders
return this.status2 == "O"
}

isComplete(){ // Indicates whether order status is "Complete"
global
return this.status == controlObj.ORDER_STATUS_COMPLETE
}
}




/*ffffffffffffffffffffffffff
*/

selectOpenOrder( searchMeOrderNo ){
global controlObj

this.open()
orderNoColIndex := this._openOrdersColumnIndex.nowOrderNo // column number containing NOW Order no in Order Book > open orders
listID := controlObj.ORDER_BOOK_OPEN_LIST
title := controlObj.ORDER_BOOK_TITLE

Loop, 3{ // Select order in Order Book. Search 3 times as a precaution
ControlGet, RowCount, List, Count, % listID, % title // No of rows in open orders
ControlSend, % listID, {Home 2}, % title // Start from top and search for order

Loop, %RowCount%{ // Get order number of selected row and compare
ControlGet, RowOrderNo, List, Selected Col%orderNoColIndex%, % listID, % title

if( RowOrderNo == searchMeOrderNo ){ // Found and Selected
return true
}
ControlSend, % listID, {Down}, % title // Move Down to next row if not found yet
}
}

return false
}

/* Clicks on cancel button in orderbook, assuming order is already selected
*/
cancelSelectedOpenOrder(){
global controlObj

window := controlObj.ORDER_BOOK_CANCEL_CONFIRMATION_TITLE
windowText := controlObj.ORDER_BOOK_CANCEL_CONFIRMATION_TEXT

ControlClick, % controlObj.ORDER_BOOK_CANCEL, % controlObj.ORDER_BOOK_TITLE,,,, NA // Click Cancel

WinWait, %window%, %windowText%, 1
WinSet, Transparent, 1, %window%, %windowText%

ControlClick, % controlObj.ORDER_BOOK_CANCEL_OK, %window%, %windowText%,,, NA // Click ok
}


/*fffffffffffffffffffffffffffffffff
*/


/* Cancel Order through orderbook
Returns true if order is Closed else false
*/
cancel(){
global orderbookObj

if( !this.isOpen() ) // Only cancel open orders
return true

Loop, 5 { // Try upto 5 times
selected := orderbookObj.selectOpenOrder( this._orderDetails.nowOrderNo )
if( selected ){
orderbookObj.cancelSelectedOpenOrder()
}
// Wait for some time for Orderbook to update
Sleep, 250 // orderbookObj.read() and orderbookObj.selectOpenOrder() should happen together
// else selectOpenOrder() will be on old data
orderbookObj.read()
this.reloadDetails()

if( this.isClosed() ){ // verify cancelled
_orderDetails == -1
return true
}
}

if( !selected ){
orderno := this._orderDetails.nowOrderNo
MsgBox, Order %orderno% Not Found in OrderBook > Open Orders
}

return false // cancel failed
}
 

TracerBullet

Well-Known Member
@TracerBullet

I really do not understand much of the coding, but can do little coding...learnt from gogling,trial and error, but I developed my trading system which places order to system but not able selectively cancel open order from order book, but I see orderman able to read the "Oderbook", so please guide with an example how to cancel order by AHK standalone, for example Crudeoil from orderbook, i.e if I run AHK it should open orderbook and cancel only crudeoil.

I find following codes from Order folder hope will easy ur effort....



/*
Order Details read from orderbook
*/
class OrderDetailsClass{
orderType := ""
buySell := ""
tradingSymbol := ""
totalQty := ""
pendingQty := ""
price := ""
triggerPrice := ""
averagePrice := ""
status := ""
nowOrderNo := ""
nowUpdateTime := ""
rejectionReason := ""
status2 := ""

isClosed(){ // Indicates whether order is in Order Book > Completed Orders
return this.status2 == "C"
}

isOpen(){ // Indicates whether order is in Order Book > Open Orders
return this.status2 == "O"
}

isComplete(){ // Indicates whether order status is "Complete"
global
return this.status == controlObj.ORDER_STATUS_COMPLETE
}
}




/*ffffffffffffffffffffffffff
*/

selectOpenOrder( searchMeOrderNo ){
global controlObj

this.open()
orderNoColIndex := this._openOrdersColumnIndex.nowOrderNo // column number containing NOW Order no in Order Book > open orders
listID := controlObj.ORDER_BOOK_OPEN_LIST
title := controlObj.ORDER_BOOK_TITLE

Loop, 3{ // Select order in Order Book. Search 3 times as a precaution
ControlGet, RowCount, List, Count, % listID, % title // No of rows in open orders
ControlSend, % listID, {Home 2}, % title // Start from top and search for order

Loop, %RowCount%{ // Get order number of selected row and compare
ControlGet, RowOrderNo, List, Selected Col%orderNoColIndex%, % listID, % title

if( RowOrderNo == searchMeOrderNo ){ // Found and Selected
return true
}
ControlSend, % listID, {Down}, % title // Move Down to next row if not found yet
}
}

return false
}

/* Clicks on cancel button in orderbook, assuming order is already selected
*/
cancelSelectedOpenOrder(){
global controlObj

window := controlObj.ORDER_BOOK_CANCEL_CONFIRMATION_TITLE
windowText := controlObj.ORDER_BOOK_CANCEL_CONFIRMATION_TEXT

ControlClick, % controlObj.ORDER_BOOK_CANCEL, % controlObj.ORDER_BOOK_TITLE,,,, NA // Click Cancel

WinWait, %window%, %windowText%, 1
WinSet, Transparent, 1, %window%, %windowText%

ControlClick, % controlObj.ORDER_BOOK_CANCEL_OK, %window%, %windowText%,,, NA // Click ok
}


/*fffffffffffffffffffffffffffffffff
*/


/* Cancel Order through orderbook
Returns true if order is Closed else false
*/
cancel(){
global orderbookObj

if( !this.isOpen() ) // Only cancel open orders
return true

Loop, 5 { // Try upto 5 times
selected := orderbookObj.selectOpenOrder( this._orderDetails.nowOrderNo )
if( selected ){
orderbookObj.cancelSelectedOpenOrder()
}
// Wait for some time for Orderbook to update
Sleep, 250 // orderbookObj.read() and orderbookObj.selectOpenOrder() should happen together
// else selectOpenOrder() will be on old data
orderbookObj.read()
this.reloadDetails()

if( this.isClosed() ){ // verify cancelled
_orderDetails == -1
return true
}
}

if( !selected ){
orderno := this._orderDetails.nowOrderNo
MsgBox, Order %orderno% Not Found in OrderBook > Open Orders
}

return false // cancel failed
}
Read AHK tutorial / reference and get a grip on it. Then try to understand code and debug it. You didnt ask any specific question, i cant explain line by line. In summary, we read orderbook from top and search for our order using orderNo field. Once order is found and selected, then we click cancel/modify button. There are some loops as error control to do action multiple times until successful.

Most of the Nest/Now specific code is in Order.ahk and Orderbook.ahk
 
Hi TracerBullet,
Thank you for the advice...but its not a day one or two job...required constant learning and practice.And I will do that.

But mean while selecting specific trading symbol on the order book, I tried following codes but no results

Please guide...please include all codes in one ahk, no gui ...

Loop {
WinWait,XXXXX
If Winexist,XXXXX
{



WinMenuSelectItem, Welcome Brokercode, ,View Order,Net Positions
sleep, 500
WinMaximize,Net Position - Brokercode
WinActivate
WinShow



cancel(){
global orderbookObj

if( !this.isOpen() ) // Only cancel open orders
return true

Loop, 5 { // Try upto 5 times
selected := orderbookObj.selectOpenOrder( this._orderDetails.nowOrderNo )
if( selected ){
orderbookObj.cancelSelectedOpenOrder()
}

}


Sleep, 300000
}

}


Regards,
Amit
 

TracerBullet

Well-Known Member
Hi TracerBullet,
Thank you for the advice...but its not a day one or two job...required constant learning and practice.And I will do that.

But mean while selecting specific trading symbol on the order book, I tried following codes but no results

Please guide...please include all codes in one ahk, no gui ...

Loop {
WinWait,XXXXX
If Winexist,XXXXX
{



WinMenuSelectItem, Welcome Brokercode, ,View Order,Net Positions
sleep, 500
WinMaximize,Net Position - Brokercode
WinActivate
WinShow



cancel(){
global orderbookObj

if( !this.isOpen() ) // Only cancel open orders
return true

Loop, 5 { // Try upto 5 times
selected := orderbookObj.selectOpenOrder( this._orderDetails.nowOrderNo )
if( selected ){
orderbookObj.cancelSelectedOpenOrder()
}

}


Sleep, 300000
}

}


Regards,
Amit
You will have to learn coding and AHK - or use Orderman directly - , i cannot handhold. There are many free programming course in coursera / udacity / edx etc that can give some basic skill in programming. Otherwise it will be too difficult for you to understand code without basic knowledge of functions, classes etc

Above code, you seem to have directly copied without understanding it.
If this is you entire file then, this.isOpen() has no meaning here - it is not defined. Similarly orderbookObj etc.

If you have indeed included all of it and only shown code snippet - then try to debug your code using Scite editor for AHK. I cannot guess your problem by looking at code. You will have to debug and atleast understand the problem and then you can ask specific questions that i can try to answer.