如何编码? - 页 303 1...296297298299300301302303304305306307308309310...347 新评论 [删除] 2012.07.16 12:39 #3021 另一个初学者的问题 你好,我是编程新手,但不是交易新手。我有一段时间没有发帖,现在,自从我开始开发我的EA,我有很多问题。我先从建立一个指标开始,一旦它达到我想要的效果,我就会进一步开发。我阅读了所有我能找到的手册,所以现在是时候让我继续编写代码了。 对不起,如果这是个错误的主题--请让我知道我应该在哪里发布这样的问题。 我现在有两个,可能是基本的问题,请问。 1.在许多使用MAs的指标中,我看到了检查图表上有多少条的线条。那么,如果我需要MA200,而图表上只有,比如说,100条,那么iMA200能工作吗?我想是的--我检查过了,任何MA在任何图表上绘制都没有问题,所以我想这是Metaquotes现在修复的一个旧的错误。那么,在绘制MA或使用iMA功能时,是否有必要检查图表上有多少条? 2.2.Close和iClose之间有什么区别?我的理解是,Close只能返回当前图表上的收盘价,而iClose可以返回任何货币对 和任何时间框架的任何收盘价。在这两种情况下,为了获得最后一个收盘条,我必须使用索引[1]。我的看法正确吗? 谢谢你。 [删除] 2012.07.16 14:55 #3022 我已经这样做了。请看下面突出显示的红色。 string GetWinLossPreviousShort (int LastOpenTicket, string WinLossPreviousShort) { 如果(OrderSelect(LastOpenTicket(), SELECT_BY_TICKET, MODE_TRADES) == TRUE) { 如果(OrderProfit() >= 0 && OrderType() == OP_SELL) { WinLossPreviousShort = "W"; 返回(WinLossPreviousShort)。 } 如果((OrderProfit() < 0 && OrderType() == OP_SELL)|| LastOpenTicket() == -1) { WinLossPreviousShort = "L"; 返回 (WinLossPreviousShort); } } } 还是完全空白。 挠挠头。我知道你的帮助是有限的,因为我没有粘贴代码,但你觉得上面的代码看起来可以吗? 还有下面的第一行,我是否需要在LastOpenTicket后面加上()来引用? string GetWinLossPreviousShort (int LastOpenTicket, string WinLossPreviousShort) Mladen Rakic 2012.07.16 15:58 #3023 ... 如果你在调用该函数 时将最后一张开仓的票号作为参数,那么蓝线后的代码将永远不会被执行(如果LastOpenTicket号码为-1(在那一刻相当于LastOpenTicket()函数的结果),OrderSelect()就会失败,代码也不会得到执行蓝线后的块。) crsnape@btinternet.com: 我已经这么做了。请看下面的红色标注。 string GetWinLossPreviousShort (int LastOpenTicket, string WinLossPreviousShort) { 如果(OrderSelect(LastOpenTicket(), SELECT_BY_TICKET, MODE_TRADES) == TRUE) { 如果(OrderProfit() >= 0 && OrderType() == OP_SELL) { WinLossPreviousShort = "W"; 返回(WinLossPreviousShort)。 } 如果((OrderProfit() < 0 && OrderType() == OP_SELL)|| LastOpenTicket() == -1) { WinLossPreviousShort = "L"; 返回 (WinLossPreviousShort); } } } 还是完全空白。 挠挠头。我知道你的帮助是有限的,因为我没有粘贴代码,但你觉得上面的代码看起来可以吗? 还有下面第一行,我是否需要在LastOpenTicket后面加上()? 字符串 GetWinLossPreviousShort (int LastOpenTicket, string WinLossPreviousShort) [删除] 2012.07.16 16:16 #3024 我不确定我是否理解。 如果((OrderProfit() < 0 && OrderType() == OP_SELL)|| LastOpenTicket() == -1) 所以,因为我在上面一行中调用了LastOpenTicket()函数,该函数的其余部分没有被执行,OrderSelect()失败。我的理解对吗? Mladen Rakic 2012.07.16 16:25 #3025 ... 让我们假设以下情况。 - 你之前没有订单- LastOpenedTicket()的结果是-1(没有以前的订单)。 - 你用这个结果调用函数 OrderSelect()失败了,因为订单票-1不存在,订单选择背后的代码都没有被执行。即使在LastOpenTicket>-1的情况下,LastOpenTicket()==-1的 "蓝线条件 "也不可能为真,因为只有在LastOpenTicket>-1的情况下,才能进入这部分代码。 这就是为什么我建议 "第三种状态:Na",因为事实上你确实有3种状态,因为开始的 "没有先前订单 "状态 crsnape@btinternet.com: 我不确定我是否理解。如果((OrderProfit() < 0 && OrderType() == OP_SELL)|| LastOpenTicket() == -1) 所以,因为我在上面一行中调用了LastOpenTicket()函数,所以该函数的其余部分没有被执行,OrderSelect()失败。我的理解对吗? [删除] 2012.07.16 16:32 #3026 一些编码问题,可能是初学者的问题 你好,我是编程新手,但不是交易新手。我正在建立我的EA,但先从建立一个指标开始,一旦它做到了我想要的,我就会进一步去做。我阅读了所有我能找到的手册,现在正在进行编码。 希望得到任何建议--你们都是从我现在的位置开始的...... 我现在有两个可能是基本的问题,请问。 1.在一些使用MAs的指标中,我看到了检查图表上有多少条的线条。那么,如果我需要MA200,而图表上只有,例如,100条,那么iMA200能工作吗?我想是的--我检查过了,任何MA在任何图表上绘制都没有问题,所以我想这是一个老问题,Metaquotes现在已经修复了。那么,在绘制MA或使用iMA功能时,是否有必要检查图表上有多少条? 2.2.Close和iClose之间有什么区别?我的理解是,Close只能返回当前图表上的收盘价,而iClose可以返回任何货币对 和任何时间框架的任何收盘价。在这两种情况下,为了获得最后一个收盘条,我必须使用索引[1]。这样做对吗? 谢谢你。 [删除] 2012.07.16 17:03 #3027 像这样吗? string GetWinLossPreviousShort (int LastOpenTicket, string WinLossPreviousShort) { 如果(OrderSelect(LastOpenTicket(), SELECT_BY_TICKET, MODE_TRADES) == TRUE) { 如果(OrderProfit() >= 0 && OrderType() == OP_SELL) { WinLossPreviousShort = "W"; 返回(WinLossPreviousShort)。 } 如果(OrderProfit() < 0 && OrderType() == OP_SELL) { WinLossPreviousShort = "L"; 返回 (WinLossPreviousShort); } 如果(LastOpenTicket() == -1) { WinLossPreviousShort = "NA"; 返回 (WinLossPreviousShort); } } } OR THIS? 变化为红色。 //---- 判断之前的卖单是否有利可图 string GetWinLossPreviousShort (int LastOpenTicket,int LastTicket, string WinLossPreviousShort) { 如果(OrderSelect(LastOpenTicket(), SELECT_BY_TICKET, MODE_TRADES) == TRUE) { 如果(OrderProfit() >= 0 && OrderType() == OP_SELL) { WinLossPreviousShort = "W"; 返回(WinLossPreviousShort)。 } 如果(OrderProfit() < 0 && OrderType() == OP_SELL) { WinLossPreviousShort = "L"; 返回 (WinLossPreviousShort); } 如果(LastTicket == -1) { WinLossPreviousShort = "NA"。 返回 (WinLossPreviousShort); } } } [删除] 2012.07.16 17:31 #3028 啊,它终于被点击了,我不能在票号为-1的情况下使用OrderSelect,因为-1并不存在。票数从0往上走。 我需要在OrderSend函数 之外声明LastOpenTicket,对吗? Mladen Rakic 2012.07.16 17:36 #3029 ... 像这样尝试: string GetWinLossPreviousShort (int LastOpenTicket, int LastTicket, string WinLossPreviousShort) { if (LastTicket == -1) { WinLossPreviousShort = "NA"; return (WinLossPreviousShort); } // // // if LastTicket == -1 no need even to try to execute the code bellow // you already have exited for case when it is -1, so the code bellow // will be executed properly // // if (OrderSelect(LastOpenTicket(), SELECT_BY_TICKET, MODE_TRADES) == TRUE) { if (OrderProfit() >= 0 && OrderType() == OP_SELL) { WinLossPreviousShort = "W"; return (WinLossPreviousShort); } if (OrderProfit() < 0 && OrderType() == OP_SELL) { WinLossPreviousShort = "L"; return (WinLossPreviousShort); } } How to code? 10点3.mq4 Coding help [删除] 2012.07.16 17:41 #3030 谢谢mladen,下面的代码基本上等于和你的一样吗?我是在你发表最后一篇文章的时候打的这个字!:-) 已编辑 string GetWinLossPreviousShort (int LastOpenTicket, int LastTicket, string WinLossPreviousShort) { 如果(OrderSelect(LastOpenTicket(), SELECT_BY_TICKET, MODE_TRADES) == TRUE) { 如果(OrderProfit() >= 0 && OrderType() == OP_SELL) { WinLossPreviousShort = "W"; 返回(WinLossPreviousShort)。 } 如果(OrderProfit() < 0 && OrderType() == OP_SELL) { WinLossPreviousShort = "L"; 返回 (WinLossPreviousShort); } } 如果(LastTicket == -1) { WinLossPreviousShort = "NA"。 返回(WinLossPreviousShort)。 } } 1...296297298299300301302303304305306307308309310...347 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
另一个初学者的问题
你好,我是编程新手,但不是交易新手。我有一段时间没有发帖,现在,自从我开始开发我的EA,我有很多问题。我先从建立一个指标开始,一旦它达到我想要的效果,我就会进一步开发。我阅读了所有我能找到的手册,所以现在是时候让我继续编写代码了。
对不起,如果这是个错误的主题--请让我知道我应该在哪里发布这样的问题。
我现在有两个,可能是基本的问题,请问。
1.在许多使用MAs的指标中,我看到了检查图表上有多少条的线条。那么,如果我需要MA200,而图表上只有,比如说,100条,那么iMA200能工作吗?我想是的--我检查过了,任何MA在任何图表上绘制都没有问题,所以我想这是Metaquotes现在修复的一个旧的错误。那么,在绘制MA或使用iMA功能时,是否有必要检查图表上有多少条?
2.2.Close和iClose之间有什么区别?我的理解是,Close只能返回当前图表上的收盘价,而iClose可以返回任何货币对 和任何时间框架的任何收盘价。在这两种情况下,为了获得最后一个收盘条,我必须使用索引[1]。我的看法正确吗?
谢谢你。
我已经这样做了。请看下面突出显示的红色。
string GetWinLossPreviousShort (int LastOpenTicket, string WinLossPreviousShort)
{
如果(OrderSelect(LastOpenTicket(), SELECT_BY_TICKET, MODE_TRADES) == TRUE)
{
如果(OrderProfit() >= 0 && OrderType() == OP_SELL)
{
WinLossPreviousShort = "W";
返回(WinLossPreviousShort)。
}
如果((OrderProfit() < 0 && OrderType() == OP_SELL)|| LastOpenTicket() == -1)
{
WinLossPreviousShort = "L";
返回 (WinLossPreviousShort);
}
}
}
还是完全空白。
挠挠头。我知道你的帮助是有限的,因为我没有粘贴代码,但你觉得上面的代码看起来可以吗?
还有下面的第一行,我是否需要在LastOpenTicket后面加上()来引用?
string GetWinLossPreviousShort (int LastOpenTicket, string WinLossPreviousShort)
...
如果你在调用该函数 时将最后一张开仓的票号作为参数,那么蓝线后的代码将永远不会被执行(如果LastOpenTicket号码为-1(在那一刻相当于LastOpenTicket()函数的结果),OrderSelect()就会失败,代码也不会得到执行蓝线后的块。)
我已经这么做了。请看下面的红色标注。
string GetWinLossPreviousShort (int LastOpenTicket, string WinLossPreviousShort)
{
如果(OrderSelect(LastOpenTicket(), SELECT_BY_TICKET, MODE_TRADES) == TRUE)
{
如果(OrderProfit() >= 0 && OrderType() == OP_SELL)
{
WinLossPreviousShort = "W";
返回(WinLossPreviousShort)。
}
如果((OrderProfit() < 0 && OrderType() == OP_SELL)|| LastOpenTicket() == -1)
{
WinLossPreviousShort = "L";
返回 (WinLossPreviousShort);
}
}
}
还是完全空白。
挠挠头。我知道你的帮助是有限的,因为我没有粘贴代码,但你觉得上面的代码看起来可以吗?
还有下面第一行,我是否需要在LastOpenTicket后面加上()?
字符串 GetWinLossPreviousShort (int LastOpenTicket, string WinLossPreviousShort)我不确定我是否理解。
如果((OrderProfit() < 0 && OrderType() == OP_SELL)|| LastOpenTicket() == -1)
所以,因为我在上面一行中调用了LastOpenTicket()函数,该函数的其余部分没有被执行,OrderSelect()失败。我的理解对吗?
...
让我们假设以下情况。
OrderSelect()失败了,因为订单票-1不存在,订单选择背后的代码都没有被执行。即使在LastOpenTicket>-1的情况下,LastOpenTicket()==-1的 "蓝线条件 "也不可能为真,因为只有在LastOpenTicket>-1的情况下,才能进入这部分代码。
这就是为什么我建议 "第三种状态:Na",因为事实上你确实有3种状态,因为开始的 "没有先前订单 "状态
我不确定我是否理解。
如果((OrderProfit() < 0 && OrderType() == OP_SELL)|| LastOpenTicket() == -1)
所以,因为我在上面一行中调用了LastOpenTicket()函数,所以该函数的其余部分没有被执行,OrderSelect()失败。我的理解对吗?一些编码问题,可能是初学者的问题
你好,我是编程新手,但不是交易新手。我正在建立我的EA,但先从建立一个指标开始,一旦它做到了我想要的,我就会进一步去做。我阅读了所有我能找到的手册,现在正在进行编码。
希望得到任何建议--你们都是从我现在的位置开始的......
我现在有两个可能是基本的问题,请问。
1.在一些使用MAs的指标中,我看到了检查图表上有多少条的线条。那么,如果我需要MA200,而图表上只有,例如,100条,那么iMA200能工作吗?我想是的--我检查过了,任何MA在任何图表上绘制都没有问题,所以我想这是一个老问题,Metaquotes现在已经修复了。那么,在绘制MA或使用iMA功能时,是否有必要检查图表上有多少条?
2.2.Close和iClose之间有什么区别?我的理解是,Close只能返回当前图表上的收盘价,而iClose可以返回任何货币对 和任何时间框架的任何收盘价。在这两种情况下,为了获得最后一个收盘条,我必须使用索引[1]。这样做对吗?
谢谢你。
像这样吗?
string GetWinLossPreviousShort (int LastOpenTicket, string WinLossPreviousShort)
{
如果(OrderSelect(LastOpenTicket(), SELECT_BY_TICKET, MODE_TRADES) == TRUE)
{
如果(OrderProfit() >= 0 && OrderType() == OP_SELL)
{
WinLossPreviousShort = "W";
返回(WinLossPreviousShort)。
}
如果(OrderProfit() < 0 && OrderType() == OP_SELL)
{
WinLossPreviousShort = "L";
返回 (WinLossPreviousShort);
}
如果(LastOpenTicket() == -1)
{
WinLossPreviousShort = "NA";
返回 (WinLossPreviousShort);
}
}
}
OR THIS? 变化为红色。
//---- 判断之前的卖单是否有利可图
string GetWinLossPreviousShort (int LastOpenTicket,int LastTicket, string WinLossPreviousShort)
{
如果(OrderSelect(LastOpenTicket(), SELECT_BY_TICKET, MODE_TRADES) == TRUE)
{
如果(OrderProfit() >= 0 && OrderType() == OP_SELL)
{
WinLossPreviousShort = "W";
返回(WinLossPreviousShort)。
}
如果(OrderProfit() < 0 && OrderType() == OP_SELL)
{
WinLossPreviousShort = "L";
返回 (WinLossPreviousShort);
}
如果(LastTicket == -1)
{
WinLossPreviousShort = "NA"。
返回 (WinLossPreviousShort);
}
}
}
啊,它终于被点击了,我不能在票号为-1的情况下使用OrderSelect,因为-1并不存在。票数从0往上走。
我需要在OrderSend函数 之外声明LastOpenTicket,对吗?
...
像这样尝试:
{
if (LastTicket == -1)
{
WinLossPreviousShort = "NA";
return (WinLossPreviousShort);
}
//
//
// if LastTicket == -1 no need even to try to execute the code bellow
// you already have exited for case when it is -1, so the code bellow
// will be executed properly
//
//
if (OrderSelect(LastOpenTicket(), SELECT_BY_TICKET, MODE_TRADES) == TRUE)
{
if (OrderProfit() >= 0 && OrderType() == OP_SELL)
{
WinLossPreviousShort = "W";
return (WinLossPreviousShort);
}
if (OrderProfit() < 0 && OrderType() == OP_SELL)
{
WinLossPreviousShort = "L";
return (WinLossPreviousShort);
}
}谢谢mladen,下面的代码基本上等于和你的一样吗?我是在你发表最后一篇文章的时候打的这个字!:-)
已编辑
string GetWinLossPreviousShort (int LastOpenTicket, int LastTicket, string WinLossPreviousShort)
{
如果(OrderSelect(LastOpenTicket(), SELECT_BY_TICKET, MODE_TRADES) == TRUE)
{
如果(OrderProfit() >= 0 && OrderType() == OP_SELL)
{
WinLossPreviousShort = "W";
返回(WinLossPreviousShort)。
}
如果(OrderProfit() < 0 && OrderType() == OP_SELL)
{
WinLossPreviousShort = "L";
返回 (WinLossPreviousShort);
}
}
如果(LastTicket == -1)
{
WinLossPreviousShort = "NA"。
返回(WinLossPreviousShort)。
}
}