[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 793

 
artmedia70:
我们不是在问价时开买吗 ???????


这就是我所写的。"买入订单 按问价开仓"。

但在图表上你看到的是买入价。

 
PapaYozh:


这就是我所写的。"买入订单按问价开仓"。

但在图表上你看到的是买入价。

我总是把这两个价格放在图表上...在终端设置 中,我通过F8启用了显示 "Ask "价格...我也稍微纠正了一下之前关于传播的帖子--不可能是这样的。
 
artmedia70:
我们不是在Ask ??????? 上开了一个买盘吗?而且不可能有60个点的点差(如果你在缺口之后拿下),如果你在缺口之前拿下......那么欧元的325个点的点差就相当于......。:)

你的照片没有显示点。
 
PapaYozh:

你的照片没有显示出这些点。
是的,我忏悔 ....它可能会产生误导(就像你帖子中的括号,它们使我失去了你关于问题的答案的含义,并以错误的方式回答......:))
 
artmedia70:
我总是把这两个价格放在图表上...在终端设置中,我通过F8启用了Ask`ts的显示...。并对之前的帖子中关于价差的内容做了一点纠正--不可能。 。


但问价在条形图中是看不到的。

关于传播。是五位数 的价差吗?如果是,新闻点差扩大+滑点=对你来说是整整6个(60个五位数)点。

 
PapaYozh:


但问价在条形图中是看不到的。

关于传播。是五位数的价差吗?如果是,那么新闻的扩展点差+滑点=6个整数(60个五位数)的点。

这就是问题所在:四...:(
 
PapaYozh:

如果我对你的问题理解正确,你不应该被订单的关闭时间所引导。你必须从开仓信号和开仓的条形图的起点开始。我个人会做的是以下工作。

1) 创建一个日期类型的变量,如果订单成功下达,我将输入Time[0]这个值。

2) 在init()函数中,用 "0 "值初始化这个变量。 我更喜欢明确的初始化,因为在审查代码时更清楚。

3) 当出现开仓条件时,在发送OrderSend(...)请求之前,将该变量的值与Time[0]的值进行比较,如果它们不相等,则发送请求。

4)如果开仓,我将把Time[0]的值存储在同一个变量中。


谢谢你的澄清 - 但你是否认为,与其与Time[0]值进行比较,不如在OrderSend(...)请求之前给这个任务:检查在当前条上是否有一个StopLoss-y收盘?那么,我需要输入相近的StopLoss()函数,它将与我宣布的StopLoss变量一起工作?还是从根本上说,它是不可能的?对我来说很重要的一点是,即使与开仓的参数相吻合,也不能在抓到亏损的柱子上建立新的头寸。

extern double Stoploss           =1000;
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void CheckForOpen()
  {
   double ma;
   int    res;
    
//---- go trading only for first tiks of new bar
   if(Volume[0]>1) return;
//---- get Moving Average 
   ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
//---- sell conditions
   if(Open[1]>ma && Close[1]<ma)  
     {
      res=OrderSend(Symbol(),OP_SELL,Lots,Bid,30,Bid+Stoploss*Point,Bid-Takeprofit*Point,"",MAGICMA,0,Red);
      return;
     }
//---- buy conditions
   if(Open[1]<ma && Close[1]>ma)  
     {
      res=OrderSend(Symbol(),OP_BUY,Lots,Ask,30,Ask-Stoploss*Point,Ask+Takeprofit*Point,"",MAGICMA,0,Blue);
      return;
     }
//----
  }

问题是,时间因素应该最后考虑--很多时候它们会滑落--或者说对命令的解释在某种程度上变成了不同的(含糊不清)。

 
obla4ko, 创建一个数据时间变量x,并让它成为发生止损的那一栏的开盘时间。并在开放条件下设定(Time[0]!=x)。在这种情况下,x应该在一个新的被触发的停止循环中被更新。这是第一个变体。而第二种,我已经是第三次写了,在触发的止损开关后等待1个小节,这将是完全一样的,这不是符合逻辑吗?
 
PapaYozh:


但问价在条形图中是看不到的。

关于传播。是五位数的价差吗?如果是,那么价差因新闻而扩大+滑点=整整6个(60个五位数)点子

另外,在我看来,可能有一个 "发夹",随后被清理掉了:)),但 "保存在记忆中 "的时间段较小,你不会去...

而关于在历史上测试的问题:

可以一个专家顾问(一个简单的!)。- ...)在同一历史时期,用同样的参数得到完全不同的结果?

在这两次测试之间,我所做的唯一一件事是更新报价档案......而这可能导致这样的结果!?- 然后发现整个故事都是胡说八道!?

 

谁能告诉我为什么MathRound()表现得很奇怪。大的价值,小的不...

有一个简单的代码用于将一些变量的值增加10%。

if (IncreaseTP) 
   {
      LastTakeProfitS = MathRound(LastTakeProfitS+LastTakeProfitS/100*PercentTakePr);  // PercentTakePr = 10; (десять процентов) эту строку считает
      TStartS = MathRound(TStartS+TStartS/10*PercentTakePr);                          // а вот эту и все, которые ниже - нет
      TStop.Sell = MathRound(TStop.Sell+TStop.Sell/10*PercentTakePr);                 // ... причём, если деление на 100 заменить на деление на 10,
      TStartLastPosS = MathRound(TStartLastPosS+TStartLastPosS/10*PercentTakePr);     // ... то начинает считать и эти строки, но уже, естественно...
      if (TStop.SellLP<=Level_new+spread) TStop.SellLP=Level_new+spread;               // ... рассчёт становится неверным...
   }

计算值被记录下来。如果除了第一行以外的所有行都被10除以,那么这一行就算是100号,没有任何问题。

2010.08.11 19:16:20 2009.01.02 10:34 Sergitas_v1.01 EURUSD,M5: 计算功能:SLs = 11 and TPs = 66,TStartS = 60, TStop.Sell = 20, TStopLastPosS = 60, TStop.SellLP = 25

标记为绿色的是第一行代码中的内容。

但如果你把除以100(应该是这样的)

if (IncreaseTP) 
   {
      LastTakeProfitS = MathRound(LastTakeProfitS+LastTakeProfitS/100*PercentTakePr);  // PercentTakePr = 10; (десять процентов) эту строку считает
      TStartS = MathRound(TStartS+TStartS/100*PercentTakePr);                          // а вот эту и все, которые ниже - нет
      TStop.Sell = MathRound(TStop.Sell+TStop.Sell/10 0*PercentTakePr);                 // ... причём, если деление на 100 заменить на деление на 10,
      TStartLastPosS = MathRound(TStartLastPosS+TStartLastPosS/100*PercentTakePr);     // ... то начинает считать и эти строки, но уже, естественно...
      if (TStop.SellLP<=Level_new+spread) TStop.SellLP=Level_new+spread;               // ... рассчёт становится неверным...
   }

...那么除了最上面的一行之外,其他所有的行都不计算在内--初始值依然存在,就像没有添加过一样

百分之十。

2010.08.11 19:41:03 2009.01.02 10:34 Sergitas_v1.01 EURUSD,M5: 计算功能:SLs = 11 and TPs = 66,TStartS = 30, TStop.Sell = 10, TStopLastPosS = 30, TStop.SellLP = 15

帮助我了解它是什么,在哪里他妈的...:)


原因: