[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 620

 
lottamer:


是的,这就是我所熟知的这一点...

请写一篇文章,要求从历史上的最后一周的票据......我将从中抓住逻辑......



int fLastClosetPoz()
{
int Tot=OrdersHistoryTotal(), Ticket=-1; datetime time=0;
如果(Tot>0)
{
for(int i=0;i<OrdersHistoryTotal();i++)
{
如果(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true)
{
如果(OrderSymbol()==Symbol())
{
如果(OrderCloseTime()>time)
{
time=OrderCloseTime();Ticket=OrderTicket()。
}
}
}
否则继续。
}
}
return(Ticket)。
}

 
lottamer:

雾霾!!!。

这个

-----------------------------------------------------------------------------


pp_sell=(-(PriceOpenLastClosePos()-PriceCloseLastPos())*100000); //适用于欧元维度的货币


打印(pp_sell)。

------------------------------------------------------------------------------------

打印-10,应该是这样的,因为最后一笔卖出交易的利润是10。

但如果你在打印和变量之间插入几个不确定的时间,比如说

----------------------------------------------------------------------------


pp_sell=(-(PriceOpenLastClosePos()-PriceCloseLastPos())*100000); //适用于欧元维度的货币


if ( Hour()>=10 && Hour()<20)

{

如果 ( Stoch_1>Stoch_2) 返回(0)。

否则 {

如果(OrdersTotal()==0)

{ PlaySound("ok.wav");

if ( GetTypeLastClosePos()==1) 打印(pp_sell)。

}

Print("___")。

}

}

return(0);

}

------------------------------------------------------------------------------------

它可以工作,但打印出-9 !!!!

秘密是什么?


在这种情况下,计算的不准确性不断积累,最终可能变得很重要。 你认为你插入了没有变化的条件,实际上你迫使计算机进行不必要的计算,你的条件没有变化

你确定PriceOpenLastClosePos()和PriceCloseLastPos()是在为同一个位置设置数值?

 
rigonich:


int fLastClosetPoz()

{
int Tot=OrdersHistoryTotal(), Ticket=-1; datetime time=0;
如果(Tot>0)
{
for(int i=0;i<OrdersHistoryTotal();i++)
{
如果(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true)
{
如果(OrderSymbol()==Symbol())
{
如果(OrderCloseTime()>time)
{
time=OrderCloseTime();Ticket=OrderTicket()。
}
}
}
否则继续。
}
}
return(Ticket)。
}


if(OrderCloseTime()>time) 开始...那么就不清楚它是从哪里来的......嗯,算了......。

它打印了一张票,但只有最后一张。如何处理倒数第二张票呢? 我实在看不出第二张票是怎么印出来的?

首先,我只写了Print LastClosetPoz()。

采取第二(一)?OrderSelect(2,SELECT_BY_POS,MODE_HISTORY)....?

Print LastClosetPoz(2) ? ? 明显的错误,但会是符合逻辑的:))

我尝试在Ticket=OrderTicket();行中放入平仓的其他参数 止损头寸 平仓价格),而不是OrderTicket,但没有效果。

 
rigonich:

你正在处理像双倍数这样的非标准化 数值。 在这种情况下,计算的不精确性会累积起来,最终可能会变得很重要。


一台计算机在4行中积累了多达10%的错误,这不是很肥吗?:)))))))))))(在大量的不到10%的情况下)

1)如果已关闭的订单是固定的,并且其所有参数 "不浮动",那么还有什么可以保存?

2)这些条件与输出参数的计算没有任何关系。他们只是一个障碍--放行--不放行......。

3)那为什么结果不是在一个EA的工作范围内浮动,而是从一个EA浮动到另一个?

 
lottamer:


if(OrderCloseTime()>time) 开始...那么就不清楚它是从哪里来的了......不过还好......。

它打印了一张票,但只有最后一张。我只是不知道如何用第二张票来做这件事?

采取第2(i)?OrderSelect(2,SELECT_BY_POS,MODE_HISTORY)....?

1.请用历史上的门票要求写一篇文章。- 你的问题。

为了找到倒数第二张,我们必须记住最近一张的票(例如在变量A中),然后需要再运行一次循环,并 "跳过 "这个顺序,即,例如,改变行

if(OrderSymbol()==Symbol())改为if(OrderSymbol()==Symbol()&& OrderTicket()!=A),或者添加一行if(Ticket()!=A)继续

我已经解释过,订单指数并不总是与账户中已关闭的订单一致,因为市场订单挂单 被一起考虑,而后者没有收盘价,这就是为什么所有的订单被循环查找最后关闭的订单,并查看关闭时间最长的订单。 也就是说,最后关闭的订单可能有指数3,而最后但有指数-7。

 
rigonich:

1.请写一篇文章,要求在故事的最后一周开票......- 你的问题。

为了找到倒数第二张,我们应该记住最后一张票的票据(例如,在变量A中),然后我们应该再运行一次循环,"跳过 "这个顺序,即改变行

if(OrderSymbol()==Symbol())改为if(OrderSymbol()==Symbol()&& OrderTicket()!=A),或者增加一行if(Ticket()!=A)继续


领先的问题。

what for(int i=0;i<OrdersHistoryTotal();i++)当我只需要两笔交易时,我们是否需要OrdersHistoryTotal()?

这个怎么样

or(int i=0;i<2;i++) ?(检查-票=-1....) nda.....tuman...:))

 
lottamer:


领先的问题。

但为什么我们需要这一行 for(int i=0;i<OrdersHistoryTotal();i++)当我只需要两笔交易时,我们是否需要OrdersHistoryTotal()?

这个怎么样

or(int i=0;i<2;i++) ?(检查-票=-1....) nda.....tuman...:))


我完成了前面的评论,见。另外,我给你写了一段代码,寻找当前工具的最后一笔平仓交易。
 
例如,如果我决定用C/C++编写一个机器人,请帮助我。写一个不是问题,但我如何将其与metatrader连接起来?如何获得报价,如何发回买入/卖出信号?
 
Desead:
例如,如果我决定用C/C++编写一个机器人,请帮助我。写一个不是问题,但我如何将其与metatrader连接起来?如何获得报价,如何发回买入/卖出信号?

我不知道其他语言,但也许可以把你的代码写成DLL,然后就有可能从MQL程序中调用。
 
rigonich:

我已经完成了前面的评论,请看。


是的,我现在明白了为什么在循环中的时间和在General.... 的时间有一个比较。

我也明白这个逻辑--标记 "A",然后排除 "A",但首先,在这个 "A "可以被钉住的地方的所有选项我都试过了--而且顾问仍然把最后一张票还给我,而不是倒数第二张。

.

我输入了2个循环(2个函数)--第一个是你的原文,第二个是除 "A "以外的。一个接一个地运行。

打印0....

----------------------------------------------------------------------------------------------------

if ( Hour()>=10 && Hour()<20)

{

LastClosetPoz();Sec_LastClosetPoz()。

打印( ticket2,ticket)。

}

return(0);

}

//--------------------------------------------+

int LastClosetPoz()

{

int Tot=OrdersHistoryTotal(), Ticket=-1; datetime time=0;

如果(Tot>0)

{

for(int i=0;i<OrdersHistoryTotal();i++)

{

如果(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true)

{

如果(OrderSymbol()==Symbol())

{

如果(OrderCloseTime()>time)

{

time=OrderCloseTime();Ticket=OrderTicket(); A=Ticket;

}

}

}

否则继续。

}

}

return(Ticket)。

}


//--------------------------------------------

int Sec_LastClosetPoz()

{

int Tott=OrdersHistoryTotal(),Ticket2=-1; datetime time2=0;

如果(Tott>0)

{

for(int i=0;i<OrdersHistoryTotal();i++)

{

如果(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true)

{

如果(OrderSymbol()==Symbol()&&OrderTicket()!=A)

{

如果(OrderCloseTime()>time2)

{

time2=OrderCloseTime();Ticket2=OrderTicket()。

}

}

}

否则继续。

}

}

return(Ticket2);

}