摩台2016.0105~0324,交易時間:9:00到13:45
結果很糟,盤整根本被巴假的。
程式碼:
input double Lots = 0.1;
input int hands = 1;
input int theMagicNum = 332;
extern double startTime = 8.75;
extern double endTime = 13.75;
input string str4= "AMA Trading short and long Timeframes 1,5,15,30,60,...";
input int MATrendPeriod = 5;
void OnTick(void){
double theAMAupCurrent, theAMAupPrevious, theAMAdownCurrent, theAMAdownPrevious;
int cnt,ticket,total, symbolOrders;
int TradeMode = 1;
double curTime = (Hour()+12)%24 + Minute()/60.0;
if(Month()==1 || Month()==2) curTime++;
if(Bars<100){
Print("bars less than 100");
return;
}
theAMAupCurrent = iCustom(NULL, MATrendPeriod, "AMA", 1, 0);
theAMAupPrevious = iCustom(NULL, MATrendPeriod, "AMA", 1, 1);
theAMAdownCurrent = iCustom(NULL, MATrendPeriod, "AMA", 2, 0);
theAMAdownPrevious = iCustom(NULL, MATrendPeriod, "AMA", 2, 1);
total=OrdersTotal();
symbolOrders = 0;
for(cnt=0; cnt<total; cnt++){
if(!OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)) continue;
if(OrderType()<=OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber()==theMagicNum) symbolOrders++;
}
//------send orders starts -------
if( symbolOrders < hands && (curTime>=startTime && curTime<=endTime-0.05)){
if(AccountFreeMargin() < (1000*Lots)){
Print("We have no money. Free Margin = ",AccountFreeMargin());
return;
}
if( (theAMAupCurrent>theAMAupPrevious && theAMAupPrevious!=0) ){ //v.0.1
ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask,3, 0, 0,"AMAtrading v.0.1", theMagicNum,0,Green);
if(ticket>0){
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
}else Print("Error opening BUY order : ",GetLastError());
return;
}else if( (theAMAdownCurrent<theAMAdownPrevious && theAMAdownPrevious!=0)){ //v.0.1
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3, 0, 0,"AMAtrading v.0.1", theMagicNum,0,Red);
if(ticket>0){
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
}else Print("Error opening SELL order : ",GetLastError());
return;
}
}//------send orders ends -------
//-----orders handle starts-------
for(cnt=0;cnt<total;cnt++){
if(!OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES)) continue;
if(OrderType()<=OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber()==theMagicNum ){
if(OrderType()==OP_BUY){
if( iHigh(NULL,MATrendPeriod,0)< iCustom(NULL,MATrendPeriod,"AMA",0,0) || curTime>=endTime){
if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet)) Print("OrderClose error ",GetLastError());
return;
}
}else{
if(iLow(NULL,MATrendPeriod,0)> iCustom(NULL,MATrendPeriod,"AMA",0,0) || curTime>=endTime){
if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet)) Print("OrderClose error ",GetLastError());
return;
}
}
}
}
}
沒有留言:
張貼留言