交易原理:
Short (SELL) entry – MACD 指標在零以上,從上至下並且穿過頂端的信號線。
重要提示:從我們的分析上排除一些 MACD 指標微不足道的變化 (圖表上的小 ‘山丘’),我們介紹一種補充檢測‘山丘’大小的辦法如下:指標的大小應該在最低價的最後5個單元(5*Point,對於 USD/CHF = 0.0005 和 USD/JPY = 0.05).
步驟 1 – 編寫智能交易的描述
在智能交易的導航窗口處,點擊鼠標右鍵並且選擇在菜單中的“創建新智能交易”。創建智能交易的初始提醒將會詢問你進入數據中心。在顯示窗口,填寫智能交易的名稱(名稱) – MACD Sample,作者(作者) -指出你的名字, 鏈接 (連接) -你網頁的鏈接,注解 (注解) – MACD-基本智能交易的測試范例。
步驟 2 –創建程序的基本結構
測試智能交易的源代碼將只占據一點位置,但是還是有些量經常很難抓住,特別是我們不是專業的編成工作者 – 另外,我們不需要這些描述,不是嗎?
一個標准智能交易的結構構想,讓我們看看以下部分的描述:
退出智能交易…
返回的結果很簡單,只有4種。
現在讓我們嘗試一步一步地區完成列出的計劃:
extern double TakeProfit = 50;extern double Lots = 0.1;extern double TrailingStop = 30;extern double MACDOpenLevel=3;extern double MACDCloseLevel=2;extern double MATrendPeriod=26;
MetaQuotes語言4 是需要“外部變量”輔助的。外部變量可以從外部設定,在智能交易程序源代碼設定之後不可以修改。提供一個額外的靈活性。在我們的程序中,MATrendPeriod 變量作為外部變量指定。 在程序開始我們插入這個變量。
extern double MATrendPeriod=26;
// 初始數據檢測// 確認智能交易運行正常非常重要//圖表和用戶設置不能出現任何錯誤// 變量(Lots, StopLoss, TakeProfit,// TrailingStop) 我們的情況需要檢測TakeProfit// 圖表中少於100 柱 if(Bars<100) { Print("少於 100柱"); return(0); } if(TakeProfit<10) { Print("贏利少於10"); return(0); // 檢測TakeProfit }
int start() { double MacdCurrent, MacdPrevious, SignalCurrent; double SignalPrevious, MaCurrent, MaPrevious; int cnt, ticket, total;// 簡化代碼//數據放置在內部變量中 MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0); MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1); SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0); SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1); MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,0); MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,1);
現在,用 iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0)代替,您可以在源代碼中使用 MacdCurrent。
total=OrdersTotal(); if(total<1) {
if(AccountFreeMargin()<(1000*Lots)) { Print("沒有資金.自由保證金 = ", AccountFreeMargin()); return(0); }
// 盡可能檢測看漲倉位 (BUY) if(MacdCurrent<0 && MacdCurrent>SignalCurrent && MacdPrevious MathAbs(MacdCurrent)>(MACDOpenLevel*Point) && MaCurrent>MaPrevious) { ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point, "macd sample",16384,0,Green); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY 開單 : ",OrderOpenPrice()); } else Print("錯誤 opening BUY order : ",GetLastError()); return(0); }
附加的檢驗‘山丘’的大小上面已經給出了描述。 MACDOpenLevel變量是一個用戶指定變量,它不可能改變程序文本,但是卻有很大的靈活性。在程序開始我們插入這個變量的描述。
// 盡可能的檢測賣空倉位(SELL) if(MacdCurrent>0 && MacdCurrentSignalPrevious && MacdCurrent>(MACDOpenLevel*Point) && MaCurrent { ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point, "macd sample",16384,0,Red); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL 開單 : ",OrderOpenPrice()); } else Print("錯誤SELL定單開倉 : ",GetLastError()); return(0); }
return(0); }
//進入市場的正確性非常重要// 但是更重要的是安全退出...for(cnt=0;cnt { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType()<=OP_SELL && // 檢驗開倉 OrderSymbol()==Symbol()) // 檢驗貨幣對 {
“cnt” – ” 是一個循環的變量必須在程序開始指定如下:
int cnt = 0;
if(OrderType()==OP_BUY) // 打開看張倉位 {
if(MacdCurrent>0 && MacdCurrentSignalPrevious && MacdCurrent>(MACDCloseLevel*Point)) { OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); //平倉 return(0); //退出 }
// 檢測追蹤止損if(TrailingStop>0) { if(Bid-OrderOpenPrice()>Point*TrailingStop) { if(OrderStopLoss() { OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop, OrderTakeProfit(),0,Green); return(0); } } }
我們停止操作符。
}
else //賣空倉位 {
if(MacdCurrent<0 && MacdCurrent>SignalCurrent && MacdPrevious(MACDCloseLevel*Point)) { OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); //平倉 return(0); // 退出 }
// 檢測追蹤止損if(TrailingStop>0) { if((OrderOpenPrice()-Ask)>(Point*TrailingStop)) { if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0)) { OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop, OrderTakeProfit(),0,Red); return(0); } } }
關閉所有殘留開倉。
} } } return(0);}
這樣一步一步地編寫我們的智能交易…
步驟3 – 集中程序的結果代碼
讓我們打開智能交易的設定:使用按鈕打開”屬性…”菜單。在窗口內指定運行參量的外部設定:
從先前部分集中全部代碼:
//+------------------------------------------------------------------+//| MACD Sample.mq4 |//| Copyright © 2005, MetaQuotes Software Corp. |//| http://www.metaquotes.net/ |//+------------------------------------------------------------------+extern double TakeProfit = 50;extern double Lots = 0.1;extern double TrailingStop = 30;extern double MACDOpenLevel=3;extern double MACDCloseLevel=2;extern double MATrendPeriod=26;//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+int start() { double MacdCurrent, MacdPrevious, SignalCurrent; double SignalPrevious, MaCurrent, MaPrevious; int cnt, ticket, total;// 檢測初始化數據// 確定智能交易在圖表中運行正常非常重要// 用戶在外部變量交易中不會產生任何錯誤// 外部變量 (標准手數, 止損,贏利,// 追蹤止損) 在這種情況下,我們檢測圖表中贏利水平要小於100 柱 if(Bars<100) { Print("少於 100柱"); return(0); } if(TakeProfit<10) { Print("贏利少於10"); return(0); // 檢測贏利水平 }// 簡化代碼和加速通道// 數據被放置在內部變量中 MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0); MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1); SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0); SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1); MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,0); MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,1); total=OrdersTotal(); if(total<1) { // 沒有指定開單 if(AccountFreeMargin()<(1000*Lots)) { Print("沒有資金. 自由保證金 = ", AccountFreeMargin()); return(0); } // 盡可能檢測看漲倉位 (BUY) if(MacdCurrent<0 && MacdCurrent>SignalCurrent && MacdPrevious<SignalPrevious && MathAbs(MacdCurrent)>(MACDOpenLevel*Point) && MaCurrent>MaPrevious) { ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"macd sample",16384,0,Green); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY 定單開倉 : ",OrderOpenPrice()); } else Print("錯誤BUY定單開倉 : ",GetLastError()); return(0); } // 盡可能檢測賣空倉位(SELL) if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious && MacdCurrent>(MACDOpenLevel*Point) && MaCurrent<MaPrevious) { ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"macd sample",16384,0,Red); if(ticket>0) { if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL 定單開倉 : ",OrderOpenPrice()); } else Print("錯誤SELL定單開倉 : ",GetLastError()); return(0); } return(0); } // 正確進入市場很重要, // 但正確退出市場更重要... for(cnt=0;cnt<total;cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType()<=OP_SELL && // 檢測開倉 OrderSymbol()==Symbol()) // 檢測貨幣對 { if(OrderType()==OP_BUY) // 看漲倉位開倉 { // 需要平倉嗎? if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious && MacdCurrent>(MACDCloseLevel*Point)) { OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); //平倉 return(0); // 退出 } // 檢測追蹤止損 if(TrailingStop>0) { if(Bid-OrderOpenPrice()>Point*TrailingStop) { if(OrderStopLoss()<Bid-Point*TrailingStop) { OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green); return(0); } } } } else // 去賣空倉位 { // 需要平倉嗎? if(MacdCurrent<0 && MacdCurrent>SignalCurrent && MacdPrevious<SignalPrevious && MathAbs(MacdCurrent)>(MACDCloseLevel*Point)) { OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // 平倉 return(0); //退出 } // 檢測追蹤止損 if(TrailingStop>0) { if((OrderOpenPrice()-Ask)>(Point*TrailingStop)) { if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0)) { OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red); return(0); } } } } } } return(0); }// 結束
對於最後智能交易的確認,只需要指定外部變量值 “Lots = 1″, “Stop Loss (S/L) = 0″ (not used), “Take Profit (T/P) = 120″ (appropriate for one-hour intervals), “Trailing Stop (T/S) = 30″. 當然,你可以使用自己的值。按 “編寫”按鈕,如果沒有任何錯誤信息出現 (你可以從 MetaEditor的列表中復制), 按 “保存”鍵保存智能交易。
外_匯_邦 WaiHuiBang.com交易由一個平行鏈到另一個平行鏈的工作流如下:用戶在平行鏈 A上創建一個交易以向平行鏈 B發送信息。該交易被發送至平行鏈 A的一個核對人。該
DApp到底是什麼?從2009年中本聰發明了比特幣之後,比特幣火了,現在區塊鏈也跟著火了,然後隨之而來的是DApp火了。火歸火,小編發現其
傳統的HTTP超文本媒體傳輸協議,是全世界統一的全局信息格式協議,它的制定為分發和顯示信息提供了規范,至今已應用20年。我們今天所訪問的幾
舉步維艱的實體企業在融資時,怎樣才能更容易獲得金融機構的信任?在上下游跨度很大的供應鏈領域,實體企業怎樣有效提高供應鏈管理效率,降低成本?
2018年,一場具有顛覆性意義的技術革命,正在瘋狂來襲,主角就是——區塊鏈。 區塊鏈技術,被認為是繼蒸汽機、電力、互聯網之後,下一代顛覆
香港黃金期貨就是國際黃金期貨,它與芝加哥商業交易所/紐約黃金期貨11年2月份的黃金期貨合約價格是一樣的,一手是
在全倉單一品種單一合約單邊的情況下,如果不做pz且不做日內操作的情況下是不能翻倍的,因期貨交易所要求的保證金比
外匯交易系統是炒外匯需要的完整的交易規則和體系,缺少外匯交易系統的外匯交易是無法進行穩定長久的獲利的。一些炒外匯新手入門學習外匯
最佳答案: 抖音小店可以在商家後台進入,可以選擇今日頭條、郵箱/手機、抖音賬號、火山賬號等任何一種渠
最佳答案: 抖音小店的申請主體可以是個人、個體工商戶、企業等,不同的申請主體需要的申請條件不同,其中