文章 "如何使用抛物线转向(Parabolic SAR)指标设置跟踪止损(Trailing Stop)"

 

新文章 如何使用抛物线转向(Parabolic SAR)指标设置跟踪止损(Trailing Stop)已发布:

在创建交易策略时,我们需要测试多种多样的保护性止损。这时,一个随着价格变动而动态调整止损位的想法浮现在我的脑海中。抛物线转向(Parabolic SAR)指标无疑是最佳选择。很难想到有比这更简单且视觉上更清晰的指标了。

追踪止损(Trailing Stop)是一种自动调整止损位置以跟随价格变动的机制,它确保保护性止损始终与价格保持一定距离。这种方法允许交易者在不过早平仓的情况下,保护部分已累积的利润。每当市场价格远离开仓价格时,追踪止损会自动收紧止损位,使其与当前价格保持指定的距离。然而,如果价格接近开仓价格,止损价位则保持不变。这为交易者提供了保护,使其避免遭受由于市场波动而导致的损失。 

但是,如果你需要一个更专业的滑动止损程序版本,你可以使用MQL5编写一个函数来扩展标准工具的功能。

有一个程序函数,它接收所需的价格来设置止损价。该程序会检查一些禁止性因素,如“StopLevel”水平——即止损不能设置得比最小允许距离更近,或“FreezeLevel”水平——即在此距离内不能修改持仓或挂单。换句话说,如果价格已经接近持仓订单的止损位置,且距离小于“FreezeLevel”水平,那么将会触发止损,并且禁止修改。追踪止损还有一些其他参数设置,这些参数设置在移动止损水平到指定价格之前也会被检查,例如仓位的交易品种和magic数字(一种用于识别和管理仓位或订单的标识符)。所有这些标准都在将止损位置移动到指定水平之前立即进行检查。

抛物线转向(Parabolic SAR)指标可完美地作为止损位置的“指示”。

作者:Artyom Trishkin

 
感谢您提供这篇有趣的文章。只是快速阅读了一下。掌握了基本知识。在手机上。以后我会在家里的电脑上更详细地熟悉它,并在我的项目 中类比使用其中的文件。
 
Roman Shiredchenko 项目 中类比使用其中包含的文件。

不客气。很快就会有一篇关于尾随类的文章--作为这个主题的逻辑结论。

可以说,它们的使用会更加正确,对我来说也会更加方便。

 

感谢您的文章、

但我希望你能修改一下,以避免 fp 数字的截断错误:

        pos_profit_pt= int ((tick.bid - pos_open) / Point ());              // 计算仓位利润(点数 

        pos_profit_pt= (int) MathRound((tick.bid - pos_open) / Point ());              // 计算仓位利润(点数 
 
文章写得很透彻,但对于一个相对较小的主题来说,篇幅过长。不是每个人都能应付自如。
 
但一切都从头到尾解释清楚了...可以为拖网连接其他指标,例如 MA。
 
Artyom Trishkin #:

不客气。我们很快就会推出一篇关于拖班的文章--作为本专题的逻辑结论。

在我看来,它们将被更正确、更方便地使用。

谢谢 - 我已将示例添加到我的机器人中:

//--- 如果不是新条 - 退出处理程序
   if(!IsNewBar())
      return;
и 
//--- 在交易类对象中设置神奇数字
   ExtTrade.SetExpertMagicNumber(InpMagic);

 

我正在研究这样一个主题....

//+------------------------------------------------------------------+
//| 管理未结头寸:追踪止损
//+------------------------------------------------------------------+
void ManageOpenPositions(string Sym, int mn)
  {
   if(TrailingStop > 0)
    for(int i = 0; i < PositionsTotal(); i++)
     {
      if(PositionGetSymbol(i)==Sym) // 选择并检查位置是否在当前符号上
      if(PositionGetString(POSITION_SYMBOL) == Sym)
      if(PositionGetInteger(POSITION_MAGIC)==mn || mn == -1)
        {
         ulong  ticket = (ulong)PositionGetInteger(POSITION_TICKET);      // 获取位置票
...

我也会在工作中研究您提出的变体:

//+------------------------------------------------------------------+
//| StopLoss 跟踪功能由 StopLoss 价格值决定。
//+------------------------------------------------------------------+
void TrailingStopByValue(const double value_sl, const long magic=-1, const int trailing_step_pt=0, const int trailing_start_pt=0)
  {
//--- 价格结构
   MqlTick tick={};
//---------------------在周期内,按开放职位总数
   int total=PositionsTotal();
   for(int i=total-1; i>=0; i--)
     {
      //--- 获取下一张位置票
      ulong  pos_ticket=PositionGetTicket(i);
      if(pos_ticket==0)
         continue;
         
      //--- 获取符号和位置魔力
      string pos_symbol = PositionGetString(POSITION_SYMBOL);
      long   pos_magic  = PositionGetInteger(POSITION_MAGIC);
      
      //--- 跳过与符号和魔法过滤器不匹配的位置
      if((magic!=-1 && pos_magic!=magic) || pos_symbol!=Symbol())
         continue;
         
      //--- 如果未获得价格 - 继续
      if(!SymbolInfoTick(Symbol(), tick))
         continue;
...
 

有谁能详细解释一下,或者贴出这样一个 EA 的现成代码(或文件)?




WITHOUT ROBOT! 在手动打开的所有仓位上不断移动 sl。