[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 262

 
Valdemar:

先生们,你们能告诉我,当我把这个计时功能插入我的EA代码中时,我在哪里犯了错误?

编译器只是用错误来淹没我。



在你在另一个函数内声明一个函数的地方。

int init()
  {
  
bool isTradeTimeInt (int hb=05,int mb=50,int he=23,int me=00) 
    {
 
Roll:

参见指定函数的第10个参数。设为0。

OrderSend(g_symbol_284, OP_BUY, Lots, g_ask_528 - gi_164 * g_point_400, Slippage, l_price_40, l_price_32, 0, g_magic_112, "Newest", MediumBlue) 。

发现这一行,该怎么改?

 
Starting:

使用方法很简单--我运行这个脚本...

这正是你需要证明的。也就是说,你需要有代码 来确定正确的顺序。这样的情况有几十种,你不可能为每一种情况都保存一个特殊的函数来简化代码。它必须为每一种情况而写。
你可以在这里找到类似功能的例子。 来自KimIV的有用功能。

如果现成的不合适,你可以通过类比现有的建立自己的。
 
Bicus:

这里的计算是基于价格的惯性。即第一笔订单的止损被触发,第二笔订单处于盈利状态,价值略低于损失。如果价格再向同一方向移动一些,那么是的,我们可能在总的利润。

但是,我认为,这种策略不值得一咬牙。

是的,没错!猜测它是否会向有利可图的方向再走几个点 :)
 
granit77:
这正是我们所要证明的。换句话说,你需要一个 能找到必要顺序的代码。这样的情况有几十种,我们不可能为每一种情况提供一个特殊的函数来简化代码。它必须为每一种情况而写。
你可以在这里找到类似功能的例子。 来自KimIV的有用功能。

如果现成的不合适,你可以通过类比现有的建立自己的。


我想我没有完全明白这个道理。

断言1:每个代码,在挂单触发后,当访问该订单的开仓日期(在这种触发的时刻已经成为可销售的),将获得等于挂单下达日期的开仓日期--这就是OrderOpenTime()函数的工作方式。

主张2:如果没有一个不断监测账户上订单状态的专家顾问,你就无法记住挂单触发的确切时间。


可能的解决方案1。我们可以尝试从设置挂单的日期运行到当前日期,并注意开盘价和触发水平的首次交叉时间。

这或多或少会有准确的时间,但有一个很大的减项:价差。由于我们没有在历史中记录点差(例如,我没有从Dukas中获取带有点差的tick历史,因为我没有在Dukas中交易,我们需要收集和记录),订单可能在更早的时候触发,当价格几乎触及开仓水平但没有越过它时,订单由于点差扩大而被打开,而不是后来,当我们真正看到价格越过挂单设定线时。


最有可能的解决方案是创建一个专家顾问,把它放在图表上并监控账户中的订单。我不想这样做,由于一些原因,还有与EA操作中的休息期间可能出现的问题有关的缺点。


你所提到的这些功能。你提供了一个指向OrderOpenTime()函数的链接。对于延迟的订单,它将是其创建的日期,而不是其触发的日期。因此,现有的功能并不适合。而且没有办法将它们结合起来,因为它们仍然引用OrderOpenTime()来表示订单的开启日期。

 
Pyxlik2009:

OrderSend(g_symbol_284, OP_BUY, Lots, g_ask_528 - gi_164 * g_point_400, Slippage, l_price_40, l_price_32, 0, g_magic_112, "Newest", MediumBlue) 。

发现这一行,该怎么改?

打印 参数并查看
 
Pyxlik2009:

OrderSend(g_symbol_284, OP_BUY, Lots, g_ask_528 - gi_164 * g_point_400, Slippage, l_price_40, l_price_32, 0, g_magic_112, "Newest", MediumBlue) 。

发现这一行,该怎么改?

你有第十个参数"最新",而你需要的数字是订单 的到期时间。
 

这里是整条线

if (!(AccountFreeMarginCheck(g_symbol_284, OP_BUY, Lots) <= 0.0 || GetLastError() == 134/* NOT_ENOUGH_MONEY */)) g_ticket_352 = OrderSend(g_symbol_284, OP_BUY, Lots, g_ask_528 - gi_164 * g_point_400, Slippage, l_price_40, l_price_32, 0, g_magic_112, "Newest RX-1", MediumBlue);
 
 
Pyxlik2009:

这里是整条线

再一次。

文件。

intOrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0,datetime expiration=0, color arrow_color=CLR_NONE)

你在 "最新 " 字符串中的第十个参数 不是一个数字 这就是为什么有一个错误

 

PapaYozh
:


你在另一个函数中声明了一个函数。

int init()
  {
  
bool isTradeTimeInt (int hb=05,int mb=50,int he=23,int me=00) 
    {


谢谢你的反馈,亲爱的PapaYozh但是我已经把这个函数插入了int start(),但是这并没有改变编译器的结果

int start()
{
int H,M,Ticket;
double Max,Min,
Max1,Min1,
TP,
Total;

bool isTradeTimeInt(int hb=07,int mb=55,int he=23,int me=00) 
    {
  datetime db, de;           // Время начала и окончания работы
  int      hc;               // Часы текущего времени торгового сервера

  db=StrToTime(TimeToStr(TimeCurrent(), TIME_MINUTES)+" "+hb+":"+mb);
  de=StrToTime(TimeToStr(TimeCurrent(), TIME_MINUTES)+" "+he+":"+me);
  hc=TimeHour(TimeCurrent());
  if (db>=de) {
    if (hc>=he) de+=24*60*60; else db-=24*60*60;
  

  if (TimeCurrent()>=db && TimeCurrent()<=de) return(True);
  else return(False);
}
 

H=Hour();
M=Minute();
Total=OrdersTotal();
if(Total==0)
{
if(isTradeTimeInt==true)
{
   Max=High[iHighest(Symbol(),PERIOD_M5,MODE_HIGH,12,0)];
   Min=Low[iLowest(Symbol(),PERIOD_M5,MODE_LOW,12,0)];
最后,编译器向我显示了这些错误,我认为它指的是错误的变量定义?

我对任何不便、不理解表示歉意,毕竟刚开始在这样一个不容易的事情上获得经验,我认为要感谢这个论坛和在这里回应的人,继续发展和提高自己的技能,谢谢大家。