如何编码? - 页 278 1...271272273274275276277278279280281282283284285...347 新评论 Avasys 2011.11.17 08:59 #2771 我对它进行了20天的回溯测试,看来我是赔钱的。 我将进行一年的回测,让我们看看 但首先我需要知道我是否可以通过改变外部字符串begin和外部字符串end中的值来修改时间? Avasys 2011.11.17 10:54 #2772 我还注意到,EA每天都会进行多次交易。所以我们必须告诉EA在第一次突破这个最小-最大-/+5点范围时只做一次交易。此外,我们必须加入追踪止损,而不是仅仅止损。 还有一个关于数字的问题。我们需要的止损是30点,获利是 50点。另外,magis=123是什么意思? 同样的问题,如果(Bid<=(low-0.005)) 0.005这里不是50点吗? 是不是extern double stopLoss = 300.0; extern double takeProfit = 500.0; extern string Begin="02:00"; extern string End="10:00"; External double distance = 80; bool isECN = true; bool cond = false; bool cond2 = false; double low; double high; 外置双数lot = 0.1; int magic = 123; int slippage = 1; string comment = ""; int ticket; How to code? Simple system: Need very [存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. gpociejewski 2011.11.17 12:06 #2773 Avasys: 我还注意到,EA每天都会进行多次交易。所以我们必须告诉EA在第一次突破这个最小-最大-/+5点的范围时只做一次交易。此外,我们必须加入追踪止损,而不是仅仅止损。 还有关于数字的问题。300不等于300点吗?我们需要止损30点,获利50点。另外,magis=123是什么意思? 同样的问题,如果(Bid<=(low-0.005)) 0.005这里不是50点吗? 是不是extern double stopLoss = 300.0; extern double takeProfit = 500.0; extern string Begin="02:00"; extern string End="10:00"; External double distance = 80; bool isECN = true; bool cond = false; bool cond2 = false; double low; double high; 外置双数lot = 0.1; int magic = 123; int slippage = 1; string comment = ""; int票。 [lang=pl]你是对的,应该是0.0005而不是0.005。300和500是因为我使用了五位数的经纪人,这意味着300点,所以是30点。 请告诉我你需要什么样的跟踪止损? 关于魔法数字。正如你所看到的,如果你不喜欢123 [/lang],我将改变你的魔法。 附加的文件: simple_ea.mq4 4 kb Avasys 2011.11.17 13:31 #2774 g.pociejewski:[lang=pl]你是对的,应该是0.0005而不是0.005。300和500是因为我使用了五位数的经纪人,这意味着300点,所以是30点。请告诉我你需要什么样的跟踪止损? 关于魔法数字。正如你所看到的,如果你不喜欢123 [/lang],我将改变你的魔法。 谢谢 那么这个EA现在是否一天只做一次交易,所以一天中可能会出现几次突破水平的情况,但它可能只做一次交易。 另外,关于欧元兑日元,因为它是高价值的货币,我仍然使用相同的数字,或者我移动00? 此外,我是否可以自己改变或修改止损、获利、时间等数字? 关于拖曳止损。我希望当利润上升到35点时,追踪止损必须跟随以锁定利润。 那么,如果我在这里改变呢。 extern double stopLoss =300.0;(我使用4位数的经纪人,所以,我应该修改这个吗?) extern double takeProfit =500.0; extern string Begin="0:00"; (如果我想把时间范围定在前一天的22:00和今天的6:00会怎么样?) extern string End="08:15"; extern double distance = 60; bool isECN = true; bool cond = false; bool cond2 = false。 double low; double high; 外置双数lot = 0.1; int magic = 123; int slippage = 1; string comment = ""; int ticket; 还有,如果我改变这个 if(Bid<=(low-0.005)) 这可能不会影响代码的功能吧? 唯一的问题是,当我尝试回测时,我发现EA在一天内执行了几笔交易,所以你能在代码中管理每天只执行一对交易吗? How to code? Simple system: Need very [存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. Avasys 2011.11.17 15:54 #2775 你好 我发现像英镑兑美元这样的货币对,其价值比日元货币对低,所以在日元货币对的情况下,距离必须是低价值货币对的10倍以上。 还有,我不明白一件事,当我回溯测试 时,结果显示EA在一天内对同一货币对进行了多次交易。 那么是否有可能,如果EA进入头寸,这个头寸必须是当天唯一的一个? 谢谢 另外,以下内容的含义是什么。 intslippage= 1; string comment= ""; int ticket; 还有,我能否在EA中添加脚本,当交易执行时,会以短信或电子邮件的形式发给我? 谢谢 ixbone 2011.11.17 16:45 #2776 今天的止损交易,如果历史上有一个订单被列出的话 你好。 也许有人能指导我怎么做。 - 订单已经执行,以盈利或亏损的方式关闭,并在历史上列出。 - 现在我想禁止交易/停止在这个货币对(符号)上开新的订单,持续一整天 - 第二天,可以执行新的订单 这就像一个 "每栏最大交易量 "的功能,但基于历史。 众多不同的测试代码片断都失败了,因为我缺乏扩展的编码技巧 例子。 1 2008.01.07 02:36 卖出 1 0.10 1.4730 0.0000 0.0000 0.00 10000.00 2 2008.01.07 03:14 close 1 0.10 1.4714 0.0000 0.0000 16.00 10016.00 3 2008.01.07 03:14 卖出 2 0.10 1.4712 0.0000 0.0000 0.00 10016.00 4 2008.01.07 07:54 关闭 2 0.10 1.4672 0.0000 0.0000 40.00 10056.00 5 2008.01.07 07:54 卖出 3 0.10 1.4671 0.0000 0.0000 0.00 10056.00 6 2008.01.09 15:56 关闭 3 0.10 1.4663 0.0000 0.0000 7.04 10063.04 7 2008.01.10 14:24 买入 4 0.10 1.4708 0.0000 0.0000 0.00 10063.04 8 2008.01.10 14:47 关闭 4 0.10 1.4748 0.0000 0.0000 40.50 10103.54 非常感谢任何帮助 问候 尊敬的迈克尔 How to code? Looking for an EA 无利可图的交易 0!!!!!! gpociejewski 2011.11.17 19:08 #2777 ixbone: 你好。也许有人能指导我怎么做。 - 订单被执行,以盈利或亏损的方式关闭,并在历史中列出。 - 现在我想禁止交易/停止在这个货币对(符号)上开立新的订单,持续一整天 - 第二天,可以执行新的订单 这就像一个 "每栏最大交易量 "的功能,但基于历史。 众多不同的测试代码片断都失败了,因为我缺乏扩展的编码技巧 例子。 1 2008.01.07 02:36 卖出 1 0.10 1.4730 0.0000 0.0000 0.00 10000.00 2 2008.01.07 03:14 close 1 0.10 1.4714 0.0000 0.0000 16.00 10016.00 3 2008.01.07 03:14 卖出 2 0.10 1.4712 0.0000 0.0000 0.00 10016.00 4 2008.01.07 07:54 收盘 2 0.10 1.4672 0.0000 0.0000 40.00 10056.00 5 2008.01.07 07:54 卖出 3 0.10 1.4671 0.0000 0.0000 0.00 10056.00 6 2008.01.09 15:56 关闭 3 0.10 1.4663 0.0000 0.0000 7.04 10063.04 7 2008.01.10 14:24 买入 4 0.10 1.4708 0.0000 0.0000 0.00 10063.04 8 2008.01.10 14:47 关闭 4 0.10 1.4748 0.0000 0.0000 40.50 10103.54 非常感谢任何帮助 问候 迈克尔 [lang=pl]嗨,迈克尔。 有一个问题,如果当天的任何头寸被关闭,你是否需要停止开新的头寸,或者你不允许开空头,如果任何空头 被关闭?在OP_BUY的情况下,有什么例子可以证明这一点(对其他人来说也类似)? int time; bool cond = true; double stopLoss = 50; double takeProfit = 70; double lots = 0.1; int orders = 0; int magic = 123; //+------------------------------------------------------------------+ //|专家初始化函数| //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //|专家的去初始化功能| //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //|专家启动功能| //+------------------------------------------------------------------+ int start() { Print(countOrders(magic, OP_BUY))。 if(orders !=countOrders(magic,OP_BUY)) cond = false; if(time !=DayOfWeek()) cond = true; 如果(cond) { OrderSend(Symbol(),OP_BUY,lot,Ask, 1,sltpValue(Ask - stopLoss*Point, stopLoss),sltpValue(Bid+ takeProfit*Point, takeProfit),"",magic)。 } orders = countOrders(magic,OP_BUY); 时间 = DayOfWeek(); //---- 返回(0)。 } int countOrders(int oMagic,int oType) { int count=0; for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS)) { 如果(OrderMagicNumber()==oMagic) { 如果(OrderSymbol()==Symbol()) { 如果(OrderType()==oType || oType<0){ count++; } } } } } return(count)。 } double sltpValue(double w1, int w2){ 如果(w2 == 0) 返回(0)。 返回(NormalizeDouble(w1, Digits))。 } //+------------------------------------------------------------------+ 我希望这很清楚。如果有任何问题,请联系我。 干杯。 Grzesiek[/lang] How to code? [存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. 编码帮助 ixbone 2011.11.17 20:08 #2778 你好,Grzesiek。 是的,只有在当日停止开立新的头寸,不管是买入、卖出、待定还是取消。 - 如果一个订单在盈利、亏损、取消或待定的情况下被关闭,并在历史记录中注明--在当前日期,这个符号()不允许有任何形式的新交易。 - 如果我们有一个新的一天,所有类型的新订单都可以被执行。 我所做的一切并不奏效。 extern bool Only1OrderPerDay=true。 如果(Only1OrderPerDay==true){ CountHistoryOrders()。 } void CountHistoryOrders(){ for(int d=0;d<OrdersHistoryTotal();d++){ OrderSelect(d,SELECT_BY_POS,MODE_HISTORY);{ 如果(OrderSymbol()==Symbol() && (OrderMagicNumber()==Magic || Magic==0))d++; Print("HistoryOrders "+DoubleToStr(d,0))。 { 如果(d>0 ....time? ...){ 返回。 }}}}} 谢谢你的帮助 迈克尔 g.pociejewski:[lang=pl]Hi Michael,有一个问题,如果当天的任何头寸被关闭,你是否需要停止开新的头寸,或者你不允许开空头,如果任何空头 被关闭?在OP_BUY的情况下,有什么例子可以证明这一点(对其他人来说是类似的) int time; bool cond = true; double stopLoss = 50; double takeProfit = 70; double lots = 0.1; int orders = 0; int magic = 123; //+------------------------------------------------------------------+ //|专家初始化函数 | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //|专家的去初始化功能| //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //|专家启动功能| //+------------------------------------------------------------------+ int start() { Print(countOrders(magic, OP_BUY))。 if(orders !=countOrders(magic,OP_BUY)) cond = false; if(time !=DayOfWeek()) cond = true; 如果(cond) { OrderSend(Symbol(),OP_BUY,lot,Ask, 1,sltpValue(Ask - stopLoss*Point, stopLoss),sltpValue(Bid+ takeProfit*Point, takeProfit),"",magic)。 } orders = countOrders(magic,OP_BUY); 时间 = DayOfWeek(); //---- 返回(0)。 } int countOrders(int oMagic,int oType) { int count=0; for(int i=0;i<OrdersTotal();i++) { if(OrderSelect(i,SELECT_BY_POS)) { 如果(OrderMagicNumber()==oMagic) { 如果(OrderSymbol()==Symbol()) { 如果(OrderType()==oType || oType<0){ count++; } } } } } return(count)。 } double sltpValue(double w1, int w2){ 如果(w2 == 0) 返回(0)。 返回(NormalizeDouble(w1, Digits))。 } //+------------------------------------------------------------------+ 我希望这很清楚。如果有任何问题,请联系我。 干杯。 Grzesiek[/lang] How to code? [存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. [存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. Ridick07 2011.11.17 20:16 #2779 拖拽式止损 你好 我有拖拽式止损脚本,我很想使用它。但在我的经纪商那里,在同一个scart中的2个订单不能工作,只能设置一个订单。我想在同一个地方为两个订单设置止损。 这有什么问题吗?它在其他经纪商那里工作正常。 请帮助 int start() { //---- int digits = MarketInfo(Symbol(),MODE_DIGITS); double value = NormalizeDouble(WindowPriceOnDropped(),digits); for(int i=OrdersTotal()-1;i>=0;i--) { if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 继续。 如果(OrderSymbol()!=Symbol()) 继续。 RefreshRates()。 如果(OrderType()==OP_BUY) 如果(value<Bid) OrderModify(OrderTicket(),OrderOpenPrice(),value, OrderTakeProfit(), OrderExpiration(),White)。 如果(OrderType()==OP_SELL) 如果(value>Ask) OrderModify(OrderTicket(),OrderOpenPrice(),value, OrderTakeProfit(), OrderExpiration(),White)。 if((OrderType()==OP_BUYSTOP) || (OrderType()==OP_BUYLIMIT)) 如果(value<OrderOpenPrice()) OrderModify(OrderTicket(),OrderOpenPrice(),value, OrderTakeProfit(),OrderExpiration(), White)。 if((OrderType()==OP_SELLSTOP) || (OrderType()==OP_SELLLIMIT)) 如果(value>OrderOpenPrice()) OrderModify(OrderTicket(),OrderOpenPrice(),value, OrderTakeProfit(), OrderExpiration(),White)。 } return(0); } //+------------------------------------------------------------------+ 问吧! 新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 初学者的问题 MQL4 MT4 MetaTrader increase 2011.11.18 12:18 #2780 我如何在EA中找到两个不同的指标的XY共线位置,以买入和卖出其中的交叉点? 比如说在同一个子窗口中的Macd 和另一个指标? 1...271272273274275276277278279280281282283284285...347 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我对它进行了20天的回溯测试,看来我是赔钱的。![](https://c.mql5.com/forextsd/smiles/biggrin.png)
我将进行一年的回测,让我们看看
但首先我需要知道我是否可以通过改变外部字符串begin和外部字符串end中的值来修改时间?
我还注意到,EA每天都会进行多次交易。所以我们必须告诉EA在第一次突破这个最小-最大-/+5点范围时只做一次交易。此外,我们必须加入追踪止损,而不是仅仅止损。
还有一个关于数字的问题。我们需要的止损是30点,获利是 50点。另外,magis=123是什么意思?
同样的问题,如果(Bid<=(low-0.005)) 0.005这里不是50点吗?
是不是extern double stopLoss = 300.0;
extern double takeProfit = 500.0;
extern string Begin="02:00";
extern string End="10:00";
External double distance = 80;
bool isECN = true;
bool cond = false;
bool cond2 = false;
double low;
double high;
外置双数lot = 0.1;
int magic = 123;
int slippage = 1;
string comment = "";
int ticket;
我还注意到,EA每天都会进行多次交易。所以我们必须告诉EA在第一次突破这个最小-最大-/+5点的范围时只做一次交易。此外,我们必须加入追踪止损,而不是仅仅止损。
还有关于数字的问题。300不等于300点吗?我们需要止损30点,获利50点。另外,magis=123是什么意思?
同样的问题,如果(Bid<=(low-0.005)) 0.005这里不是50点吗?
是不是extern double stopLoss = 300.0;
extern double takeProfit = 500.0;
extern string Begin="02:00";
extern string End="10:00";
External double distance = 80;
bool isECN = true;
bool cond = false;
bool cond2 = false;
double low;
double high;
外置双数lot = 0.1;
int magic = 123;
int slippage = 1;
string comment = "";
int票。[lang=pl]你是对的,应该是0.0005而不是0.005。300和500是因为我使用了五位数的经纪人,这意味着300点,所以是30点。
请告诉我你需要什么样的跟踪止损? 关于魔法数字。正如你所看到的,如果你不喜欢123
[/lang],我将改变你的魔法。
[lang=pl]你是对的,应该是0.0005而不是0.005。300和500是因为我使用了五位数的经纪人,这意味着300点,所以是30点。请告诉我你需要什么样的跟踪止损? 关于魔法数字。正如你所看到的,如果你不喜欢123
谢谢
那么这个EA现在是否一天只做一次交易,所以一天中可能会出现几次突破水平的情况,但它可能只做一次交易。
另外,关于欧元兑日元,因为它是高价值的货币,我仍然使用相同的数字,或者我移动00?
此外,我是否可以自己改变或修改止损、获利、时间等数字?
关于拖曳止损。我希望当利润上升到35点时,追踪止损必须跟随以锁定利润。
那么,如果我在这里改变呢。
extern double stopLoss =300.0;(我使用4位数的经纪人,所以,我应该修改这个吗?)
extern double takeProfit =500.0;
extern string Begin="0:00"; (如果我想把时间范围定在前一天的22:00和今天的6:00会怎么样?)
extern string End="08:15";
extern double distance = 60;
bool isECN = true;
bool cond = false;
bool cond2 = false。
double low;
double high;
外置双数lot = 0.1;
int magic = 123;
int slippage = 1;
string comment = "";
int ticket;
还有,如果我改变这个
if(Bid<=(low-0.005))
这可能不会影响代码的功能吧?
唯一的问题是,当我尝试回测时,我发现EA在一天内执行了几笔交易,所以你能在代码中管理每天只执行一对交易吗?
你好
我发现像英镑兑美元这样的货币对,其价值比日元货币对低,所以在日元货币对的情况下,距离必须是低价值货币对的10倍以上。
还有,我不明白一件事,当我回溯测试 时,结果显示EA在一天内对同一货币对进行了多次交易。
那么是否有可能,如果EA进入头寸,这个头寸必须是当天唯一的一个?
谢谢
另外,以下内容的含义是什么。
intslippage= 1;
string comment= "";
int ticket;
还有,我能否在EA中添加脚本,当交易执行时,会以短信或电子邮件的形式发给我?
谢谢
今天的止损交易,如果历史上有一个订单被列出的话
你好。
也许有人能指导我怎么做。
- 订单已经执行,以盈利或亏损的方式关闭,并在历史上列出。
- 现在我想禁止交易/停止在这个货币对(符号)上开新的订单,持续一整天
- 第二天,可以执行新的订单
这就像一个 "每栏最大交易量 "的功能,但基于历史。
众多不同的测试代码片断都失败了,因为我缺乏扩展的编码技巧
例子。
1 2008.01.07 02:36 卖出 1 0.10 1.4730 0.0000 0.0000 0.00 10000.00
2 2008.01.07 03:14 close 1 0.10 1.4714 0.0000 0.0000 16.00 10016.00
3 2008.01.07 03:14 卖出 2 0.10 1.4712 0.0000 0.0000 0.00 10016.00
4 2008.01.07 07:54 关闭 2 0.10 1.4672 0.0000 0.0000 40.00 10056.00
5 2008.01.07 07:54 卖出 3 0.10 1.4671 0.0000 0.0000 0.00 10056.00
6 2008.01.09 15:56 关闭 3 0.10 1.4663 0.0000 0.0000 7.04 10063.04
7 2008.01.10 14:24 买入 4 0.10 1.4708 0.0000 0.0000 0.00 10063.04
8 2008.01.10 14:47 关闭 4 0.10 1.4748 0.0000 0.0000 40.50 10103.54
非常感谢任何帮助
问候
尊敬的迈克尔
你好。
也许有人能指导我怎么做。
- 订单被执行,以盈利或亏损的方式关闭,并在历史中列出。
- 现在我想禁止交易/停止在这个货币对(符号)上开立新的订单,持续一整天
- 第二天,可以执行新的订单
这就像一个 "每栏最大交易量 "的功能,但基于历史。
众多不同的测试代码片断都失败了,因为我缺乏扩展的编码技巧
例子。
1 2008.01.07 02:36 卖出 1 0.10 1.4730 0.0000 0.0000 0.00 10000.00
2 2008.01.07 03:14 close 1 0.10 1.4714 0.0000 0.0000 16.00 10016.00
3 2008.01.07 03:14 卖出 2 0.10 1.4712 0.0000 0.0000 0.00 10016.00
4 2008.01.07 07:54 收盘 2 0.10 1.4672 0.0000 0.0000 40.00 10056.00
5 2008.01.07 07:54 卖出 3 0.10 1.4671 0.0000 0.0000 0.00 10056.00
6 2008.01.09 15:56 关闭 3 0.10 1.4663 0.0000 0.0000 7.04 10063.04
7 2008.01.10 14:24 买入 4 0.10 1.4708 0.0000 0.0000 0.00 10063.04
8 2008.01.10 14:47 关闭 4 0.10 1.4748 0.0000 0.0000 40.50 10103.54
非常感谢任何帮助
问候
迈克尔[lang=pl]嗨,迈克尔。
有一个问题,如果当天的任何头寸被关闭,你是否需要停止开新的头寸,或者你不允许开空头,如果任何空头
被关闭?在OP_BUY的情况下,有什么例子可以证明这一点(对其他人来说也类似)?
int time;
bool cond = true;
double stopLoss = 50;
double takeProfit = 70;
double lots = 0.1;
int orders = 0;
int magic = 123;
//+------------------------------------------------------------------+
//|专家初始化函数|
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//|专家的去初始化功能|
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//|专家启动功能|
//+------------------------------------------------------------------+
int start()
{
Print(countOrders(magic, OP_BUY))。
if(orders !=countOrders(magic,OP_BUY)) cond = false;
if(time !=DayOfWeek()) cond = true;
如果(cond) {
OrderSend(Symbol(),OP_BUY,lot,Ask, 1,sltpValue(Ask - stopLoss*Point, stopLoss),sltpValue(Bid+ takeProfit*Point, takeProfit),"",magic)。
}
orders = countOrders(magic,OP_BUY);
时间 = DayOfWeek();
//----
返回(0)。
}
int countOrders(int oMagic,int oType) {
int count=0;
for(int i=0;i<OrdersTotal();i++) {
if(OrderSelect(i,SELECT_BY_POS)) {
如果(OrderMagicNumber()==oMagic) {
如果(OrderSymbol()==Symbol()) {
如果(OrderType()==oType || oType<0){
count++;
}
}
}
}
}
return(count)。
}
double sltpValue(double w1, int w2){
如果(w2 == 0)
返回(0)。
返回(NormalizeDouble(w1, Digits))。
}
//+------------------------------------------------------------------+
我希望这很清楚。如果有任何问题,请联系我。
干杯。
Grzesiek[/lang]
你好,Grzesiek。
是的,只有在当日停止开立新的头寸,不管是买入、卖出、待定还是取消。
- 如果一个订单在盈利、亏损、取消或待定的情况下被关闭,并在历史记录中注明--在当前日期,这个符号()不允许有任何形式的新交易。
- 如果我们有一个新的一天,所有类型的新订单都可以被执行。
我所做的一切并不奏效。
extern bool Only1OrderPerDay=true。
如果(Only1OrderPerDay==true){
CountHistoryOrders()。
}
void CountHistoryOrders(){
for(int d=0;d<OrdersHistoryTotal();d++){
OrderSelect(d,SELECT_BY_POS,MODE_HISTORY);{
如果(OrderSymbol()==Symbol() && (OrderMagicNumber()==Magic || Magic==0))d++;
Print("HistoryOrders "+DoubleToStr(d,0))。
{
如果(d>0 ....time? ...){
返回。
}}}}}
谢谢你的帮助
迈克尔
[lang=pl]Hi Michael,
有一个问题,如果当天的任何头寸被关闭,你是否需要停止开新的头寸,或者你不允许开空头,如果任何空头
被关闭?在OP_BUY的情况下,有什么例子可以证明这一点(对其他人来说是类似的)
int time;
bool cond = true;
double stopLoss = 50;
double takeProfit = 70;
double lots = 0.1;
int orders = 0;
int magic = 123;
//+------------------------------------------------------------------+
//|专家初始化函数 |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//|专家的去初始化功能|
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//|专家启动功能|
//+------------------------------------------------------------------+
int start()
{
Print(countOrders(magic, OP_BUY))。
if(orders !=countOrders(magic,OP_BUY)) cond = false;
if(time !=DayOfWeek()) cond = true;
如果(cond) {
OrderSend(Symbol(),OP_BUY,lot,Ask, 1,sltpValue(Ask - stopLoss*Point, stopLoss),sltpValue(Bid+ takeProfit*Point, takeProfit),"",magic)。
}
orders = countOrders(magic,OP_BUY);
时间 = DayOfWeek();
//----
返回(0)。
}
int countOrders(int oMagic,int oType) {
int count=0;
for(int i=0;i<OrdersTotal();i++) {
if(OrderSelect(i,SELECT_BY_POS)) {
如果(OrderMagicNumber()==oMagic) {
如果(OrderSymbol()==Symbol()) {
如果(OrderType()==oType || oType<0){
count++;
}
}
}
}
}
return(count)。
}
double sltpValue(double w1, int w2){
如果(w2 == 0)
返回(0)。
返回(NormalizeDouble(w1, Digits))。
}
//+------------------------------------------------------------------+
我希望这很清楚。如果有任何问题,请联系我。
干杯。
Grzesiek[/lang]拖拽式止损
你好
我有拖拽式止损脚本,我很想使用它。但在我的经纪商那里,在同一个scart中的2个订单不能工作,只能设置一个订单。我想在同一个地方为两个订单设置止损。
这有什么问题吗?它在其他经纪商那里工作正常。
请帮助
int start()
{
//----
int digits = MarketInfo(Symbol(),MODE_DIGITS);
double value = NormalizeDouble(WindowPriceOnDropped(),digits);
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
继续。
如果(OrderSymbol()!=Symbol())
继续。
RefreshRates()。
如果(OrderType()==OP_BUY)
如果(value<Bid)
OrderModify(OrderTicket(),OrderOpenPrice(),value, OrderTakeProfit(), OrderExpiration(),White)。
如果(OrderType()==OP_SELL)
如果(value>Ask)
OrderModify(OrderTicket(),OrderOpenPrice(),value, OrderTakeProfit(), OrderExpiration(),White)。
if((OrderType()==OP_BUYSTOP) || (OrderType()==OP_BUYLIMIT))
如果(value<OrderOpenPrice())
OrderModify(OrderTicket(),OrderOpenPrice(),value, OrderTakeProfit(),OrderExpiration(), White)。
if((OrderType()==OP_SELLSTOP) || (OrderType()==OP_SELLLIMIT))
如果(value>OrderOpenPrice())
OrderModify(OrderTicket(),OrderOpenPrice(),value, OrderTakeProfit(), OrderExpiration(),White)。
}
return(0);
}
//+------------------------------------------------------------------+
我如何在EA中找到两个不同的指标的XY共线位置,以买入和卖出其中的交叉点?
比如说在同一个子窗口中的Macd 和另一个指标?