MMA_Breakout_strategy_volume I (没有MM或MF) - 由WhooDoo22编码 - 页 3

 
你为什么不在转到 另一个版本之前修复这个主题的代码......如果你这样做,你会学到很多东西。
 
西蒙。


另一点......。

RE:对我来说,重要的是强调我的编码方法是我能把所有东西拼凑起来的最快速度,以确认我对第一/二卷的交易能力和价值的想法。我的生活中没有足够的时间可以用来在第一时间 "正确 "地编码所有的东西。通常情况下,我是分阶段开始项目的。例如。第一阶段。覆盖所有的功能基础,第2阶段。清理代码,3.为EA的外部视觉部分增加美感。目前,我仍然在第一阶段工作。这个EA比典型的发送订单、关闭订单的EA要多得多。我已经花了很多时间和心思来进行测试。我相信您会认可它的独特之处。

说到这里,我正在考虑为第一个OrderSend()函数"滚蛋 "的不同方案。我还不确定我的方向是什么。最终我将用一个可靠的条件完全取代 "if(OrdersHistoryTotal()==0){"。你提出了一个重要的观点,让我考虑一下这个问题。我感谢你的鼓励。

谢谢你。

 
RaptorUK:

什么是变量 当你这样做的时候,它怎么可能是一个票号?

我现在有4个真实的交易,他们的票据号码是不连续的 . .

我想我知道你的意思,这怎么可能呢,++是个好问题。
 
WhooDoo22:
西蒙。


另一点......。

RE:对我来说,重要的是强调我的编码方法是我能以最快的速度将所有东西拼凑起来,以确认我对第一/二卷的交易能力和价值的想法。我的生活中没有足够的时间可以用来在第一时间 "正确 "地编码一切。

你必须,至少,使它在功能上 正确工作......这段代码离这一点还有很长很长的路要走。 我说必须......。......这是不正确的,你可以选择,你可以继续写你的代码,当你运行ST的时候有GB的错误,并且有代码在Live或Demo上无法运行。...如果你愿意的话。
 

西蒙。

你必须,至少,。

RE:我不关心要花多长时间才能达到一个目标,我只是不断地向前耕耘,直到项目 完成。我的选择是不要有GB的错误 :)我宁愿听从我的编码同行的建设性批评,并对所提出的编码问题作出回应和对等的解决方案。这些解决方案有可能使第一/二卷的错误减少。

谢谢你。

 
WhooDoo22:

西蒙。

你必须,至少,...

RE:我不关心要花多长时间才能达到一个目标,我只是不断地向前耕耘,直到项目完成。我的选择是不要有GB的错误 :)我宁愿听从我的编码同行的建设性批评,并对所提出的编码问题作出回应和对等的解决方案。这些解决方案有可能使第一/二卷的错误减少。

谢谢你。



RaptorUK在那里给出的,过去和现在都是 建设性的批评和对你的代码的对等解决方案
 

西蒙,我将使用一个布尔变量来解决这个问题。这个布尔条件是一个常见的解决方案,它可以解决这个问题,直到我到达第二阶段。然后我可以给第一阶发送信号一个独特的条件,反映我的编码风格。谢谢你的意见。

 
WhooDoo22:

西蒙,我将使用一个布尔变量来解决这个问题。这个布尔条件是一个常见的解决方案,它可以解决这个问题,直到我到达第二阶段。然后我可以给第一阶发送信号一个独特的条件,反映我的编码风格。谢谢你的意见。

不,不会的......你的编码显示你不懂,如果你不懂,你就无法解决它。
 

西蒙,我相信我确实理解,你认为我不理解的是什么?

到目前为止,我们已经讨论了两件重要的 事情。

1.修复紧急的sl代码块。

2.删除当前的条件,"如果(OrdersHistoryTotal()==0{",用不同的条件来取代条件(我目前的解决方案是用一个布尔条件来取代当前的条件,开始订单。)

//example

if(x==false){OrderSend()...; x=true;}

/* now, x is true and the code block will not execute again. Of course, I would add code to save variables and if connection 
   is lost from the terminal server, all variables are saved. Simple.
   I understand the code is incorrect, but I wrote this for you to understand its concept, not a completely typed up code. */

这个保存变量的想法是服务器断线的常见解决方案,是由ubzen提出的。我把这个想法归功于他。

谢谢你。

 
WhooDoo22:

西蒙,我相信我是明白的,你认为我不明白的是什么?

你的start()函数中的第一行是这样的 . . .

   OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);

. . .它选择的是什么票号?好吧,票据已经被声明,没有初始变量设置,所以它将是0,所以你立即试图选择票据0,这将产生一个错误,如果你检查这个OrderSend()的返回值,你会看到,它可能是错误4108 ERR_INVALID_TICKET 。.如果你了解如何正确使用OrderSend(),你为什么要这样做?


如果你理解OrderHistoryTotal(),你就不会以你的方式使用它,你也不会说它是 ...... "只搜索唯一票据变量的交易历史,"

如果你了解 { } 大括号的工作原理,你就不会添加不需要的大括号。......它们没有增加任何东西,它们不会使你的代码更整洁或更容易阅读。

if(OrderType()==OP_BUY)                                                                     
      {
         {
         OrderModify(ticket,0,OrderOpenPrice()-5000*Point,0,0,Blue
         }
      }

可以替换为 ... .

if(OrderType()==OP_BUY)  
   OrderModify(ticket,0,OrderOpenPrice()-5000*Point,0,0,Blue);

使用变量i 作为票据号码,表明你不了解票据号码在策略测试器 之外的工作方式,即在模拟或真实账户中的工作方式。


你没有检查你的交易函数是否成功或失败,在你的代码中这是很关键的,因为你使用了下面的 . .

ticket = OrderSend(Symbol(),OP_BUY,0.05,Ask,30,0,0,"",0,0,Blue);

. . . 如果OrderSend()失败了 那么在你的代码中,当你试图使用这个变量来选择和订购票号-1的时候,显然会失败。. .