標籤

二元樹 (1) 字串常數池 (1) 投資 (3) 每月損益 (37) 例外處理 (1) 泛型 (2) 股票 (15) 指標 (5) 英文 (8) 基本資料型別 (1) 期貨 (1) 程式交易 (10) 量化投資 (5) 亂亂寫 (3) 概念 (3) 資料結構 (3) 演算法 (3) 數學 (3) 轉型 (1) AMA (1) ArrayList (1) assert (1) BeautifulSoup (1) C/C++ (8) casting (1) ClassCastException (1) classpath (1) Collection (4) Comparable (1) comparTo() (1) constructor (1) database (3) Debian (1) Dropbox (2) EA (2) enum (1) equals() (2) exception (3) extends (1) ffmpeg (1) final (1) Git (1) HashMap (1) HashSet (1) hasNext() (1) HTS (3) instanceof (1) IS-A (1) Iterator (1) JAVA (43) length (1) Linux (31) List (1) Mac (6) Map (1) ML (2) MT4 (6) MySQL (2) next() (1) NullPointerException (1) Number (1) Numpy (2) OpenCart (1) OpenCV (3) OSX (1) overloading (1) overriding (3) pandas (2) PHP (8) PriorityQueue (1) Python (11) Queue (1) random() (1) reverse() (1) Samba (1) SCJP (21) sqrt() (1) synchronized (1) talib (1) ufw (1) uTorrent (1) var-args (2) VHF (1) vim (2) Yhoo知識+ (4)

2016年3月26日 星期六

AMA 5分線,摩台2016.0105~0324

AMA 5分線,連續兩次波動進場,K棒整支低於或高於AMA出場。
摩台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;
              }
          }
      }
    }
  }



沒有留言:

張貼留言