问吧! - 页 38

 

伊恩,

检查Straddle&Trail专家。你可以在这里找到它https://www.mql5.com/en/forum/general

 

大家好。

我想在同一时间关闭所有的订单,但我做不到。

我试过这个代码,但它没有工作。

''''''''''''''''''''''''''''''''''''''''

total = OrdersTotal();

for(i=0;i < total;i++)

{

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

{

OrderClose(OrderTicket(),OrderLots(),Ask,80,CLR_NONE)。

OrderClose(OrderTicket(),OrderLots(),Bid,80,CLR_NONE)。

}

}

''''''''''''''''''''''''''''''''''''''''

有人能帮助我吗?

如果你能帮助我,我将非常感激

 

迈赫迪。

把这段代码(程序)放在start()部分之外,当你如果满足了关闭所有交易的条件,就这样调用程序。

int start()

{ // 你的代码在这里 .....

如果(你的条件在这里)ShutDownAllTrades()。

}

void ShutDownAllTrades

{ int Retry;

While (OrdersTotal()>0)

{ for (int cnt=OrdersTotal()-1;cnt>=0;cnt--)

{ OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

如果(OrderType()==OP_BUY)

{ Retry=0; while (Retry<5 && !IsTradeAllowed() ) { Retry++; Sleep(1000); }

RefreshRates()。

OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Yellow)。

Sleep(1000);

}

否则如果(OrderType()==OP_SELL)

{ Retry=0; while (Retry<5 && !IsTradeAllowed() ) { Retry++; Sleep(1000); }

RefreshRates()。

OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Yellow)。

Sleep(1000);

}

否则

{ Retry=0; while (Retry<5 && !IsTradeAllowed() ) { Retry++; Sleep(1000); }

OrderDelete(OrderTicket())。

Sleep(1000);

}

}

}

}

HTH

Yannis

 

亲爱的扬尼斯。

谢谢你的帮助。

我祝愿你一切顺利。

 
Yannis:
迈赫迪。

把这段代码(程序)放在start()部分之外,当你如果满足了关闭所有交易的条件,就这样调用程序。

int start()

{ // 你的代码在这里 .....

如果(你的条件在这里)ShutDownAllTrades()。

}

void ShutDownAllTrades

{ int Retry;

While (OrdersTotal()>0)

{ for (int cnt=OrdersTotal()-1;cnt>=0;cnt--)

{ OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

如果(OrderType()==OP_BUY)

{ Retry=0; while (Retry<5 && !IsTradeAllowed() ) { Retry++; Sleep(1000); }

RefreshRates()。

OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Yellow)。

Sleep(1000);

}

否则如果(OrderType()==OP_SELL)

{ Retry=0; while (Retry<5 && !IsTradeAllowed() ) { Retry++; Sleep(1000); }

RefreshRates()。

OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Yellow)。

Sleep(1000);

}

否则

{ Retry=0; while (Retry<5 && !IsTradeAllowed() ) { Retry++; Sleep(1000); }

OrderDelete(OrderTicket())。

Sleep(1000);

}

}

}

}

HTH

Yannis

亲爱的Yannis。

我按照你说的在 "int deinit() { }"之间添加了你的程序(从头开始),但是在编译void ShutDownAllTrades {之后出现了问题:'{'应该是逗号或分号。

我期待着你的答复。

非常感谢

 

哦,对不起。

缺少的是void ShutDownAllTrades()后面的()。

也要注意订单关闭函数 中名为 "滑点 "的变量。

你可能需要用你下单时使用的变量来替换它。

亚尼斯

 
Yannis:
哦,对不起。

缺少的是void ShutDownAllTrades()后面的()。

也要注意订单关闭函数中名为'Slippage'的变量。

你可能需要用你下单时使用的变量来替换它。

Yannis

它工作得非常好!

再次感谢

 

我使用的是MTF CCI指标,来自多时间框架指标线,它是一条黄色台阶线,见所附图片。

当该线高于100水平(超买)时,价格将下降,而当其低于-100(超卖)时,价格将上升。

唯一的问题是它并不总是刷新,我必须通过在图表上点击右键并选择 "刷新 "来手动完成。

我想问一下程序员。在MQ4中是否有任何功能可以在每个刻度 上自动进行这种刷新?

请提供建议。

欧佩安

附加的文件:
mtf_cci.jpg  37 kb
 

试试这个。

void ObjectsRedraw()

重新绘制图表上的所有对象

采样

ObjectsRedraw()。

你可能需要先使用ObjectCreate

 
richx7:
试试这个。

void ObjectsRedraw()

重新绘制图表上的所有对象

样本

ObjectsRedraw()。

你可能需要先使用ObjectCreate。

谢谢你的回答。

据我所知,ObjectsRedraw()刷新的是刚刚被 "创建 "和 "设置 "的对象。

我需要刷新一个不在对象列表中的指标,所以ObjectsRedraw()不起作用。

或者你知道如何引用一个现有的指标?