hi,
I didn't test your code nor the code posted below
but it might be that you have got the brackets not entirely
correct.
The code I posted below should do the
following.
When it first encounters a "Buy" then it will buy 1
contract, then sell 2, resulting in 1 short position, then buy 2, resulting in 1
long position etc.
When it first encounters a "Sell" ...... similar as
above,
hope it works now,
rgds, Ed
LastPosition=0; Buy=C > Ref(C, -1); Sell=C
< Ref(C, -1); Buy = ExRem(Buy,Sell); Sell =
ExRem(Sell,Buy);
if( LastValue( Buy ) ) {
ibc = GetTradingInterface("IB");
if( ibc.IsConnected() ) {
if(LastPosition==0)
{
ibc.PlaceOrder( Name(), "Buy", 1, "MKT", 0, 0, "Day",
False);
LastPosition=1; } else
if( LastPosition==-1) {
ibc.PlaceOrder( Name(), "Buy", 2, "MKT", 0, 0, "Day", False
);
LastPosition=1; } }
else if( LastValue( Sell ) ) {
ibc = GetTradingInterface("IB");
if( ibc.IsConnected() )
{ if( LastPosition==0 ) {
ibc.PlaceOrder( Name(), "Sell", 1, "MKT", 0, 0, "Day", False
);
LastPosition=-1;
} else if( LastPosition==1 ){
ibc.PlaceOrder( Name(), "Sell", 2, "MKT", 0, 0, "Day", False
);
LastPosition=-1;
}
}
}
----- Original Message -----
Sent: Thursday, June 09, 2005 7:08
PM
Subject: [amibroker] AUTOMATIC
TRADING
Hi, I'm trying to automate orders with AmiBroker 4.7 and
TWS but I'm not able to do it. I've written a "dummy" trading system which
buys when close is higher than the last close and sells when close is
lower than the last close (very useful in 1-minute charts to test
orders). The problem is that AB starts sending orders to Buy 2
contracts and stops. Maybe there's something wrong with brackets or
another stupid thing but it would be very helpful for me if someone in the
list provides an example code to automate orders (or test and arrange
mine).
Thanks a lot and good trading, Alberto Muņoz
This is
the AFL code:
LastPosition=0; Buy=C > Ref(C, -1); Sell=C <
Ref(C, -1); Buy = ExRem(Buy,Sell); Sell =
ExRem(Sell,Buy);
if( LastValue( Buy ) ) { ibc =
GetTradingInterface("IB");
if( ibc.IsConnected()
) { if(LastPosition==0)
{ ibc.PlaceOrder( Name(), "Buy",
1, "MKT", 0, 0, "Day", False);
LastPosition=1; } }
else { if(
LastPosition==-1) {
ibc.PlaceOrder( Name(), "Buy", 2, "MKT", 0, 0, "Day", False
);
LastPosition=1; } } }
if(
LastValue( Sell ) ) { ibc = GetTradingInterface("IB"); if(
ibc.IsConnected() ) { if( LastPosition==0
) {
ibc.PlaceOrder( Name(), "Sell", 1, "MKT", 0, 0, "Day", False
);
LastPosition=-1; } }
else { if(
LastPosition==1 )
{ ibc.PlaceOrder( Name(), "Sell", 2,
"MKT", 0, 0, "Day", False
);
LastPosition=-1; }
} }
Please note that this group is for discussion
between users only.
To get support from AmiBroker please send an e-mail
directly to SUPPORT {at} amibroker.com
For other support material
please check also: http://www.amibroker.com/support.html
Please note that this group is for discussion between users only.
To get support from AmiBroker please send an e-mail directly to
SUPPORT {at} amibroker.com
For other support material please check also:
http://www.amibroker.com/support.html
Yahoo! Groups Links
|