EA: Patterns_EA - 页 2

 
Morexod:



见模式条款。

第 5 项 = 3 个行业

第 3 项 = 18 个交易

p.5 + p.3 = 21 tr.

但 p.2 = 200 tr 而不是 <= 21 tr。

Expert Advisor 适用于对冲账户。不可能在其中反转一个仓位。您必须关闭一个仓位并打开另一个仓位。
 
Artyom Trishkin:
Expert Advisor 适用于对冲账户。不可能反转一个仓位。您必须关闭一个仓位并打开另一个仓位。

已优化

总是一个仓位(波段) - 市场上总是只有一个仓位 = 200 个订单

任何头寸 - 任何头寸 = 185 个订单

在 "任何头寸 "条件下,订单数量应多于 "市场中始终只有一个头寸 "条件下的订单数量

 
Morexod:

优化正在进行中。

始终一个仓位(波段)- 市场上始终只有一个仓位 = 200 个订单

任何头寸 - 任何头寸 = 185 个订单

任何头寸 "条件下的订单数量应多于 "市场中始终只有一个头寸 "条件下的订单数量。

在 "任何头寸 - 任何头寸 "的情况下,会触发对账户最大允许总交易量的限制 - 因为它会不加区分地打开所有头寸。在某些情况下,账户允许的总交易量会出现溢出,这时就会停止开仓。

在只有一个仓位(波段)--"只有一个仓位"--的情况下,只有当初始设定的开仓量大于允许的最大值时,限制才会起作用。正如作者所承诺的那样,EA 会简单地将该手数调整为可能的手数。

也许您在可视模式下查看会更方便,而不是试图根据报告中的订单数量 过早下结论?;)

 
fxsaber:

这就是代码的来源:

int OnInit()
  {
//--- 设置交易参数
   if(!SetTradeParameters())
      return INIT_FAILED;

函数本身。可能导致你所暗示的情况的模式已被禁用。

//+------------------------------------------------------------------+
//| 设置交易参数|
//+------------------------------------------------------------------+
bool SetTradeParameters()
  {
//--- 设置符号
   ResetLastError();
   if(!symbol_info.Name(Symbol()))
     {
      Print(__FUNCTION__,": Error setting ",Symbol()," symbol: ",GetLastError());
      return false;
     }
//--- 获取价格
   ResetLastError();
   if(!symbol_info.RefreshRates())
     {
      Print(__FUNCTION__,": Error obtaining ",symbol_info.Name()," data: ",GetLastError());
      return false;
     }
   if(account_info.MarginMode()==ACCOUNT_MARGIN_MODE_RETAIL_NETTING)
     {
      Print(__FUNCTION__,": ",account_info.MarginModeDescription(),"-account. EA should work on a hedge account.");
      return false;
     }
//--- 自动设置灌装类型
   trade.SetTypeFilling(GetTypeFilling());
//--- 安装 Magik
   trade.SetExpertMagicNumber(InpMagic);
//--- 滑动设置
   trade.SetDeviationInPoints(InpDeviation);
//--- 批量设置,修正输入值
   lot=CorrectLots(InpVolume);
//-- 关闭异步订单发送模式
   trade.SetAsyncMode(false);
//---
   return true;
  }
//+------------------------------------------------------------------+

还是我误解了你的提示?

 
Artyom Trishkin:

这就是代码的来源:

功能本身。可能导致你所建议的情况的模式已被禁用。

还是我误解了你的提示?

这种情况同步 模式有关。

 
该模式在此 EA 中不起作用:InpModeOpened===OPENED_MODE_SWING
 
kwlin_089:
该模式在此 EA 中不起作用:InpModeOpened===OPENED_MODE_SWING

为什么?

我查看了代码,发现

//+------------------------------------------------------------------+
//| 交易功能|
//+------------------------------------------------------------------+
int Trade(const ENUM_PATTERN_TYPE &pattern_type,const int index)
  {
   ENUM_POSITION_TYPE type=patt.PositionPattern(pattern_type);
   int number=0,last_total=list_trade_patt.Total();
//--- 市场上始终只有一个仓位 买入或卖出
   if(InpModeOpened==OPENED_MODE_SWING)
     {
      if(type==POSITION_TYPE_BUY && NumberSell()>0) CloseSell();
      if(type==POSITION_TYPE_SELL && NumberBuy()>0) CloseBuy();
     }
//--- 只有一个买入位置
   if(InpModeOpened==OPENED_MODE_BUY_ONE)
     {
      if(NumberBuy()>0) return WRONG_VALUE;
      if(type==POSITION_TYPE_SELL) return last_total;
     }
//--- 任意数量 购买
   if(InpModeOpened==OPENED_MODE_BUY_MANY)
      if(type==POSITION_TYPE_SELL) return last_total;
//--- 只有一个卖出位置
   if(InpModeOpened==OPENED_MODE_SELL_ONE)
     {
      if(NumberSell()>0) return WRONG_VALUE;
      if(type==POSITION_TYPE_BUY) return last_total;
     }
//--- 卖出的任意数量
   if(InpModeOpened==OPENED_MODE_SELL_MANY)
      if(type==POSITION_TYPE_BUY) return last_total;
//--- 所有检查均已通过,或选择了任何菌落 чество любых позиций - открываем позицию
   if(to_logs)
      Print(__FUNCTION__,": To open ",(type==POSITION_TYPE_BUY ? "Buy" : "Sell")," position by pattern ",patt.DescriptPattern(pattern_type));
   if(OpenPosition(pattern_type))   
      list_trade_patt.Delete(index);
//--- 返回未结头寸的数量
   return last_total-list_trade_patt.Total();
  }
//+------------------------------------------------------------------+
  1. 如果是摇摆模式。
    1. 如果有必要打开购买,并且有销售,则关闭销售。
    2. 如果需要打开销售,但有购买,则关闭购买。
  2. 如果所有检查都通过,则打开所需的仓位。
还是我理解错了?请解释一下。
 
Artyom Trishkin:

为什么?

我正在看代码,我看到了:

  1. 如果是摇摆模式。
    1. 如果有必要打开购买且有销售,则关闭销售。
    2. 如果需要开仓卖出,但有买入,则关闭买入。
  2. 如果所有检查都通过,则打开所需的仓位。
还是我理解错了?解释一下。

Artem,据我所知,我们谈论的是 "消失 "头寸。在 mt4 中,这些是 SL 和 TP。我无法判断 mt5 的情况...

 
Алексей Тарабанов:

Artem,据我所知,我们谈论的是 "消失 "仓位。在 mt4 中,这些是 SL 和 TP。我无法判断 mt5....。

因此,在 MT5 中也是一样。如果买入 0.1,止损是卖出 0.1 的止损单。
触发时不会有头寸。要反转仓位,您需要卖出 0.2
 
Artyom Trishkin:
因此在 MT5 中也是一样。如果买入 0.1,止损就是卖出 0.1 的止损单。
触发时不会有头寸。要反转仓位,您需要卖出 0.2。

您知道得更清楚,但有时有人更喜欢检查。