EA: 普里亚(Puria)方法

 

普里亚(Puria)方法:

一款基于普里亚(Puria)方法的交易系统。

普里亚(Puria)方法

作者: Vladimir Karputov

 

你好,弗拉基米尔。很抱歉在这里提问,我在重新安装 Windows 之后无法打开 MT-5,因为我在将我的净账户更改为对冲账户时没有保存密码。您能告诉我该怎么做吗?登录名是已知的。

谢谢。

 
Shara1:

你好,弗拉基米尔。很抱歉在此提问,我在重装 Windows 后无法打开 MT-5,因为我在将净账户更改为对冲账户时没有保存密码。您能告诉我该怎么做吗?登录名已知。

谢谢。

你无能为力。虽然很残忍,但这也是为将来打预防针:密码和登录名应该保留。
 
Vladimir Karputov:
没办法。虽然很残忍,但这也是为将来打预防针:密码和登录信息应该保留。

所以我必须下载一个新的并注册?

如果我还没有Admiralmarketing的演示?

谢谢。

 
你好,弗拉基米尔、

- MinProfitStep(最小盈利步长,以点为单位)"。
- MinProfitPercent("最小盈利步长 "下的手数系数)。


我怀疑这个函数是为 Netting 账户类型编写的,而 EA 代码不是为 "对冲账户 "设计的。

您能否检查一下该功能是否能在 "对冲 "账户上正确运行??

谢谢

 
Edviao:
你好,弗拉基米尔

- MinProfitStep(最小盈利步长,以点为单位)"
- MinProfitPercent("最小盈利步长 "下的手数系数)"

我认为这些函数不能有效或正确地工作。
,我怀疑该函数是为净额结算账户类型编写的,而 EA 代码不是为 "对冲账户 "设计的。

您能否检查一下该功能是否能在 "对冲 "账户上正常运行??

谢谢

从 EA 的描述来看

市场 持有的头寸不超过一个,因此建议净额结算账户和对冲账户都使用

- 因此,它在这两个账户上都能使用。尽管它在净额结算方面可能有自己的细微差别,但我不建议将其用于净额结算。

 
你好,弗拉基米尔、
在此 EA 中添加以下功能是否合理?

谢谢。

TrailingFrequency = 10; (Trailing, in seconds (< "10" -> only on a new bar)" (跟踪,以秒为单位(< "10" -> 仅在新的条形图上))
 
Edviao:
你好,弗拉基米尔
在此 EA 中添加以下功能是否合理?

谢谢。

"TrailingFrequency = 10; (跟踪,以秒计(<"10" -> 仅在新条形图上)"

我认为这不是个好主意。

 
Vladimir Karputov:

我认为这不是个好主意。

感谢您分享您的观点。

亲爱的弗拉基米尔

我对"MinProfitStep"和"MinProfitPercent"函数的代码做了一些改进
,我认为使用新代码后,EA 将能从这些函数中获得更有效的结果。如果您能与我分享您对更新的看法、建议或意见,我将非常高兴。

else
   if (ExtMinProfitStep > 0) 
   {
      int d=0;
      for(int i=PositionsTotal()-1; i>=0; --i){
         if(m_position.SelectByIndex(i)){ // 通过索引选择位置,以便进一步访问其属性
            if(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==m_magic) {
               if(m_position.PositionType() != POSITION_TYPE_BUY && m_position.PositionType() != POSITION_TYPE_SELL)
                  continue;
               
               int      ActSide = m_position.PositionType() == POSITION_TYPE_SELL ? -1: +1;
               ulong    ActTicket = m_position.Ticket();
               double   ActLot = m_position.Volume();
               double   LastOpenPrice = NormalizeDouble(m_position.PriceOpen(), _Digits);
                  
               if (!HistorySelectByPosition(m_position.Identifier()))
                  continue;
               
               if (HistoryDealsTotal() > 1){
                  ulong ActDealTicket = HistoryDealGetTicket(HistoryDealsTotal() - 1);
                  LastOpenPrice = NormalizeDouble(HistoryDealGetDouble(ActDealTicket, DEAL_PRICE), _Digits);
               }
               
               if (ActSide * (NormalizeDouble(m_position.PriceCurrent(), _Digits) - (LastOpenPrice + ActSide * ExtMinProfitStep)) >= 0){
                  double lot_check=LotCheck(ActLot*InpMinProfitPercent);
                  
                  if(lot_check>0.0)
                     m_trade.PositionClosePartial(ActTicket,lot_check);
               }
            }
         }
      }
   }
}
 

这是干什么用的?

   if(ExtMinProfitStep > 0)
     {
      int d=0;
      for(int i=PositionsTotal()-1; i>=0; --i)
        {
         if(m_position.SelectByIndex(i))  // 通过索引选择位置,以便进一步访问其属性
           {
            if(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==m_magic)
              {
               int      ActSide        = (m_position.PositionType()==POSITION_TYPE_SELL)?-1:1;
               ulong    ActTicket      = m_position.Ticket();
               double   ActLot         = m_position.Volume();
               double   LastOpenPrice  = NormalizeDouble(m_position.PriceOpen(),m_symbol.Digits());
               if(!HistorySelectByPosition(m_position.Identifier()))
                  continue;
               if(HistoryDealsTotal() > 1)
                 {
                  ulong ActDealTicket=HistoryDealGetTicket(HistoryDealsTotal()-1);
                  LastOpenPrice=NormalizeDouble(HistoryDealGetDouble(ActDealTicket, DEAL_PRICE),m_symbol.Digits());
                 }
               if(ActSide*(NormalizeDouble(m_position.PriceCurrent(),m_symbol.Digits())-(LastOpenPrice+ActSide*ExtMinProfitStep))>= 0)
                 {
                  double lot_check=LotCheck(ActLot*InpMinProfitPercent);
                  if(lot_check>0.0)
                     m_trade.PositionClosePartial(ActTicket,lot_check);
                 }
              }
           }
        }
     }

为什么不用它的方法来定位

价格开仓

获取开仓价格


?

Документация по MQL5: Стандартная библиотека / Торговые классы / CPositionInfo / PriceOpen
Документация по MQL5: Стандартная библиотека / Торговые классы / CPositionInfo / PriceOpen
  • www.mql5.com
PriceOpen - CPositionInfo - Торговые классы - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

你好,弗拉基米尔,很抱歉这么晚才回复。

这是为了找出最后的部分收盘价。