下载MetaTrader 5

请观看如何免费下载自动交易

有趣的脚本?
因此发布一个链接 -
让其他人评价

喜欢这个脚本? 在MetaTrader 5客户端尝试它

EA

Nevalyashka_BreakdownLevel - MetaTrader 5EA

| Chinese English Русский Español Deutsch 日本語 Português

发布者:
Vladimir Karputov
显示:
825
等级:
投票: 24
已发布:
2017.08.18 11:05

思路的作者 — Vladimir KhlystovMQL5 代码的作者 — barabashkakvn.

交易策略: 在所选时间间隔内最高价/最低价的突破。为了恢复亏损的仓位,本EA交易使用了 "Nevalyashka" 策略和马丁格尔技术来增加手数。

本EA交易在指定时间间隔,从"Time start(开始时间)" 到 "Time end(结束时间)"之间计算最高价和最低价:

Nevalyashka BreakdownLevel

如果价格超过了这个时间段的最高价,就建立买入仓位,如果价格低于最低价,就建立卖出仓位。止损设在这个期间反向的边界上,也就是说,对于买入仓位就是最低价,而对于卖出仓位就是最高价。获利是根据控制区间的高度来设置的,

如果 "Use time close" 设为 true, the "Time close" 参数 (关闭所有仓位的时间) 就被激活。

对于"Time start""Time end" 和 "Time close" 这些参数,只考虑小时数和分钟数。

根据止损平仓是在 OnTradeTransaction 中监控的.

当 "DEAL_ENTRY_OUT" (en: "出场") 被找到时,检查交易的注释栏位,如果 注释中包含 "sl", 意思就是交易由止损关闭:

      if(deal_symbol==m_symbol.Name() && deal_magic==m_magic)
         if(deal_entry==DEAL_ENTRY_OUT)
           {
            MqlDateTime str1;
            TimeToStruct(TimeCurrent(),str1);
            //--- 有可能是根据获利来平仓的
            if(StringFind(deal_comment,"tp",0)!=-1 || deal_profit>=0.0)
              {
               TradeDey=str1.day;
               return;
              }
            //--- 有可能是根据止损来平仓的
            if(StringFind(deal_comment,"sl",0)!=-1)
              {
               if(TradeDey!=str1.day)
                 {
                  Print("侦测到止损平仓!");

                  double loss=MathAbs(deal_profit/m_symbol.TickValue()/deal_volume);

                  if(deal_type==DEAL_TYPE_SELL) // the buy position is closed
                    {
                     double SL=m_symbol.Bid()+loss*m_symbol.Point();
                     double TP=m_symbol.Bid()-loss*m_symbol.Point();
                     double Lot=LotCheck(deal_volume*InpK_martin);
                     if(Lot==0.0)
                        return;
                     OpenSell(SL,TP,Lot,"Nevalyashka");

                    }
                  if(deal_type==DEAL_TYPE_BUY) // 卖出仓位被关闭
                    {
                     double SL=m_symbol.Ask()-loss*m_symbol.Point();
                     double TP=m_symbol.Ask()+loss*m_symbol.Point();
                     double Lot=LotCheck(deal_volume*InpK_martin);
                     if(Lot==0.0)
                        return;
                     OpenBuy(SL,TP,Lot,"Nevalyashka");
                    }
                  return;
                 }
              }
           }

建立一个与关闭仓位相反方向的仓位 (如果交易类型是 "DEAL_TYPE_SELL", 就是关闭了买入仓位; "DEAL_TYPE_BUY" 意思就是一个卖出仓位被关闭), 而增加手数为乘以K. martin. 如果仓位是获利关闭的,EA交易就会等到下个时间段的开始时间 "Time end", 然后再重复上面的过程.

 "No loss" 参数是指要盈亏平衡; 当达到了仓位利润的一半时,止损要移动到仓位的开盘价格处。

在 EURUSD,M30 上的测试例子:

Nevalyashka BreakdownLevel 测试 EURUSD M30

本文译自 MetaQuotes Software Corp. 撰写的俄文原文
官方代码: https://www.mql5.com/ru/code/18645

Boa_ZigZag_Arrows_HTF Boa_ZigZag_Arrows_HTF

在输入参数中带有时段选择选项的 Boa_ZigZag_Arrows 指标。

AutoTradeLevels AutoTradeLevels

本指标使用短的水平线来标示所有进行过的交易。

Boa_ZigZag_channel Boa_ZigZag_channel

一个基于 Boa_ZigZag 指标峰谷的通道。

ZigZag_channel ZigZag_channel

一个基于 ZigZag 指标峰谷的通道。