买入止损 卖出止损 网格顾问作为一个类别 - 页 2

 

我正在一点一点地增加功能。开始时,如果没有头寸,也没有挂单,就会放置挂单止损。版本说明附在类文件中。

//+------------------------------------------------------------------+
//| 1.001:                                                           |
//|   when starting, sets Buy stop and sell stop                     |
//+------------------------------------------------------------------+

ds

 

有趣的是--CBuyStopSellStopGrid::RefreshRates(void)函数会检查出零的 asc-bid 值。

这真的是一种可能的情况吗?

总的来说--没有更多的评论,代码是相当透明和清晰的。

 
George Merts:

有趣的是--CBuyStopSellStopGrid::RefreshRates(void)函数会检查出零的 asc-bid 值。

这种情况真的可能吗?

总的来说,没有其他评论,代码是相当透明和清晰的。


是的,这就是生活,在这里一切皆有可能。一般来说,检查因为测试器而输入的零值(大约是一年前:当开始第一个t=few ticks时,测试器给出了零值)。

我正在一点一点地增加功能。在OnTradeTransaction 中,如果有一个头寸("DEAL_ENTRY_IN"),我们就删除挂单并重新设置两个停止挂单。

//+------------------------------------------------------------------+
//| 1.001:                                                           |
//|   when starting, sets Buy stop and sell stop                     |
//| 1.002:                                                           |
//|   OnTradeTransaction: if DEAL_ENTRY_IN delete all pending orders,|
//|   and, sets Buy stop and sell stop                               |
//+------------------------------------------------------------------+

买涨停卖涨停网格1.002

到目前为止,我们有这样的缺点。

  1. 在每一个刻度上,检查头寸和挂单的数量。
  2. 无法控制交易操作(挂单下达)--如果挂单未下达,专家顾问不处理相关情况。
  3. 一组没有头寸的头寸--这种情况不被处理,也就是说,如果我们关闭了一个买入头寸,然后又开了一个卖出头寸......。
 
Vladimir Karputov:

是的,这就是生活,一切皆有可能。一般来说,对零值的检查是由于测试人员而引入的(大约一年前有一个案例:当开始第一个t=few ticks时,测试人员给出了零值)。

我正在一点一点地增加功能。在OnTradeTransaction 中,如果有一个头寸("DEAL_ENTRY_IN"),我们就删除挂单并重新设置两个停止挂单。


到目前为止,我们有这样的缺点。

  1. 在每一个刻度上,检查头寸和挂单的数量。
  2. 无法控制交易操作(挂单下达)--如果挂单未下达,专家顾问不处理相关情况。
  3. 一组没有头寸的头寸--例如,不处理的情况是,比如说,我们开了一个买入头寸,然后又开了一个卖出头寸......

截图上显示的算法将无法工作。为了使该算法发挥作用,你必须做到以下几点。

当收到买入信号时,在第一根蜡烛的高点上方放置一格买入止损单。低于收盘价,就会有一个卖出止损单。订单应该被关闭,不是因为盈利或亏损,而是因为另一个信号。只要有或多或少的理智信号,这个系统就会一直发挥作用。

这只是一个变体;你可以用不同的方式做所有事情。

 
Ibragim Dzhanaev:

如果信号或多或少是理智的,这样的系统将总是有效的。

写成 "如果你在低点买入,在高点卖出,你将永远处于盈利状态 "会更好。

谁在争论?问题是要找到 "合理的信号"。

 

1.003版。

//+------------------------------------------------------------------+
//| 1.001:                                                           |
//|   when starting, sets Buy stop and sell stop                     |
//| 1.002:                                                           |
//|   OnTradeTransaction: if DEAL_ENTRY_IN delete all pending orders,|
//|   and, sets Buy stop and sell stop                               |
//| 1.003:                                                           |
//|   OnTradeTransaction: DEAL_ENTRY_IN                              |
//|      DEAL_TYPE_BUY => ClosePositions(POSITION_TYPE_SELL)         |
//|      DEAL_TYPE_SELL => ClosePositions(POSITION_TYPE_BUY)         |
//|   PlacesXXXX:                                                    |
//|      "RefreshRates()" is now inside the "PlacesXXXX"             |
//|   OnTradeTransaction:                                            |
//|      a "while" loop for "PlacesXXXX"                             |
//+------------------------------------------------------------------+

  • 现在,当一个头寸被打开时,关闭所有的对立头寸。
  • 当前价格的获取已被移至PlacesBuy和PlacesSell功能内,以防止出现缺口和滑落。
  • OnTradeTransaction 中,挂单是在一个while循环中进行的--所以说,我们是在打服务器的主意 :)- 这不是最好的解决方案,但它将暂时保留。

实际上,现在我们可以思考了。

  1. 增加仓位的最佳方式是什么(手数计算)?
  2. 如何对待对立的立场...

 
George Merts:

更好的方法是写 "如果你在低点买入,在高点卖出,你将永远处于盈利状态"。

谁在争论?问题是要找到 "合理的信号"。


最简单和最明显的选择。


 
我可以加入你们吗?
 

或者说,它是这样的。


 
Artiom Morochin:
我可以加入你们吗?

完成了。连接仓库,从仓库更新项目文件。

原因: