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

 
Desead:
例如,如果我决定用C/C++编写一个机器人,请帮助我。写一个不是问题,但我如何将其与metatrader连接起来?如何获得报价,如何发回买入/卖出信号?

DLL--见示例。一个知道如何用C/C++写作的程序员,有可能无法处理МТ交付的标准例子,尽管论坛上有很多材料?
 
VladislavVG:

DLL--见示例。一个知道如何用C/C++写作的程序员有可能无法理解МТ交付的标准例子,尽管论坛上有很多材料?

我不是一个程序员,但有时会自己写一些最简单的东西。我不需要用任何语言写一个复杂的机器人,这完全不是问题。我想写一个 有自己接口的机器人,而不是以dll的形式执行部分功能,并从μl中调用它们。感谢上帝,有很多不同的视觉语言可以做到这一点,而没有很大的压力。
 
lottamer:


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

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

.

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

打印0....


这个函数使用局部变量,所以它不应该作为一个单独的函数运行是次,在一个函数中一个接一个地做两个循环,或者将A声明为一个全局变量。我去买烟,你试试,如果不行,等我回来敲我,我们再想办法。
 
Desead:

我不是一个程序员,但有时我会自己写最简单的东西。我想用任何语言写一个简单的机器人,这完全不是问题。我想在不调用Metatrader的情况下,用自己的界面写一个完整的机器人,而不是将其部分功能放在dll中,从μl中调用。我发明了很多不同的视觉语言,在这些语言中可以不费吹灰之力就能做到这一点。

如果你根本不想使用终端功能(超过一百种不同的内置功能,内置指标,程序界面本身),那么这就不是一个简单的专家顾问,而是你自己的终端,你自己的发展,我认为他们很难帮助你,特别是在这个分支。
 
rigonich:

这个函数使用局部变量,所以不要把它作为一个单独的函数运行是次,不要在一个函数中一个接一个地做两个循环,也不要把A声明为一个全局变量。我跑出去买烟,你一边试,如果你失败了,等我回来敲我的门,我们再想办法。


IS!!!!,有一个小错误......应该打印的不是Ticket而是LastClosetPoz()和Sec_LastClosetPoz()。

我相信我的版本并不是最优雅的......但它是有效的......你如何将两个循环放在一个函数中......。我不知道......我试过了......我得到了错误......让它见鬼去吧!(如果不是太麻烦的话--给我看看--对我有用,如果不是的话--好吧,算了......)总之谢谢。

然而,我有一种感觉,如果我需要弄清楚第35笔已完成的交易的票据......我的方法就会有麻烦了:)))) hahahah。

天哪,这甚至还没有出现在地平线上......最多三个......

 
rigonich:

这个函数使用局部变量,所以不要把它作为一个单独的函数运行是次,不要在一个函数中一个接一个地做两个循环,也不要把A声明为一个全局变量。我去买点烟,你可以试试,如果不行,等我回来敲我,我们再想办法。


在我插入以下内容之前,一直在工作

如果(OrderSelect( (LastClosetPoz (),SELECT_BY_TICKET)==true))Print("Stop loss", OrderStopLoss();

誓词

')'- 错误的参数计数 G:\Program_Files_2\MT4-demo\experts\000.mq4 (57, 60)

我不明白它想要什么?

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

想通了

==true....

这很奇怪,因为教程中的例子总是这么说......。

而且它还将止损值四舍五入到第四位数......。

 
lottamer:


IS!!!!,有一个小错误......打印的内容应该是LastClosetPoz()和Sec_LastClosetPoz()而不是Ticket。

我相信我的版本不是最优雅的......但它是有效的... 如何在一个函数中插入两个循环...我不知道......我试过了......我得到了错误......让它见鬼去吧!(如果不是太麻烦的话--给我看看--对我有用,如果不是的话--好吧,算了......)总之谢谢。

然而,我有一种感觉,如果我需要弄清楚第35笔已完成的交易的票据......我的方法就会有问题了:)))),哈哈哈。

天哪,这甚至还没有出现在地平线上......最多三个......



int Ticket1,Ticket2。
//+------------------------------------------------------------------+
int fLastClosetPoz()
{
int Tot=OrdersHistoryTotal(),A,i;Ticket1=-1;Ticket2=-1; datetime time=0;
如果(Tot>0)
{
for(i=0;i<OrdersHistoryTotal();i++)
{
如果(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) ==true)
{
如果(OrderSymbol()==Symbol())
{
如果(OrderCloseTime()>time)
{
time=OrderCloseTime();Ticket1=OrderTicket()。
}
}
}
否则继续。
}
}
Tot=OrdersHistoryTotal();A=Ticket1;time=0。
如果(Tot>0)
{
for(i=0;i<OrdersHistoryTotal();i++)
{
如果(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true)
{
如果(OrderTicket()==A)继续。
如果(OrderSymbol()==Symbol())
{
如果(OrderCloseTime()>time)
{
time=OrderCloseTime();Ticket2=OrderTicket()。
}
}
}
否则继续。
}
}
return(0);
}
//+------------------------------------------------------------------+
P.S. 而且你需要使用嵌套循环(即循环中的循环) 来确定第35笔封闭交易
 
rigonich:


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


打印零......不工作......不会再挖了,因为很明显,循环被简单地替换了一个--体积显然没有减少.....,我们已经有了一个工作版本。我可以在第一个变体中比较订单......而在这里我甚至看不到第二个变体在哪里......而第一个变体是零......。

经过一些小修小补......这显然是在开发大脑,这个代码也成功了!:)) 谢谢

 
lottamer:


在我插入以下内容之前,一直在工作

如果 (Print("Stop loss", OrderStopLoss();)Print("Stop loss", OrderStopLoss();

誓词

')'- 错误的参数计数 G:\Program_Files_2\MT4-demo\experts\000.mq4 (57, 60)

我不明白它想要什么?


同样是45,在这种形式下,OrderSelect(LastClosetPoz(),SELECT_BY_TICKET)默认在挂单和开单中选择,而这个订单不在其中。 把OrderSelect(LastClosetPoz(),SELECT_BY_TICKET, MODE_HISTORY)
 
lottamer:


打印零......不工作......我不会再深究了,因为很明显,周期只是用一个替换另一个--量显然没有减少.....,我们已经有一个工作的变体。此外,在第一个变体中,我可以比较订单......而在这里,我甚至看不到第二个变体在哪里......而第一个变体是零......。

经过一些小修小补......这显然是在开发大脑,这个代码也成功了!:)) 谢谢


只要函数调用 后打印Ticket1和Ticket2 变量即可。
原因: