Вы недавно зарегистрировались и у вас возникли вопросы: Как вставить картинку в сообщение на форуме, как красиво оформить исходный код MQL5, где находятся ваши Личные сообщения? В этой статье мы подготовили для вас несколько практических советов, которые помогут быстрее освоиться на сайте MQL5.community и позволят в полной мере воспользоваться доступными функциональными возможностями.
for(int i=PosTotal-1; i>=0; i--)//перебор позиций имеет смысл, если перенос в безубыток мультивалютный
{//где-то тут должен быть выбор позиции, которую будем допрашивать :)
MqlTick lasttick;
SymbolInfoTick(Symbol(),lasttick);//ask,bid всегда берутся с текущего символа.
是的,这里确实有一个错误,DoubleToString 被错误地设置了。所以问题只停留在文件中。
顺便说一下,在CAccountInfo类中,关于通过标识符访问属性的方法,文档也与现实不符。
InfoString()被定义为doubleInfoString(...), 同时
返回值为
true - 如果成功,false - 如果未能检索到属性值。
这几乎不是指定类型的方式。最有可能的是,该值以两种方式返回--通过返回和通过参数引用。这也被该方法使用时返回字符串的事实所证实。
双重的InfoInteger()也是如此,它实际上返回的是long而不是bool, 双重 的InfoDouble()也是这样写的
true - 如果成功,false - 如果不能成功检索到属性的值。
尽管正如你在图片中看到的那样,只有一个参数被定义了,所以参考是不可能的....。
策略测试员的奇怪行为...
在构建298中,我们发现策略测试器在取消测试过程后有一个奇怪的行为(我之前没有注意到)。
结果
取消 "按钮变成了 "开始 "按钮,测试被停止。一切似乎都很好,但是没有--参数仍然是灰色的,不可能编辑它们。
下午好!你能告诉我,为什么残疾人的停车位是草率的?
基本上它是一个无损的传输代码...我认为许多人会发现它很有用...
{ int LevelWLoss = 10; int PosTotal=PositionsTotal(); for(int i=PosTotal-1; i>=0; i--) { MqlTick lasttick; SymbolInfoTick(Symbol(),lasttick); if (PositionGetInteger(POSITION_TYPE)==0) { if (PositionGetDouble(POSITION_SL)-PositionGetDouble(POSITION_PRICE_OPEN)<LevelWLoss*Point()) { if (lasttick.bid-PositionGetDouble(POSITION_PRICE_OPEN)>LevelProfit*Point()) { MqlTradeRequest BezubModif; BezubModif.action= TRADE_ACTION_SLTP; BezubModif.symbol= Symbol(); BezubModif.sl = NormalizeDouble(PositionGetDouble(POSITION_PRICE_OPEN)+LevelWLoss*Point(),_Digits); BezubModif.tp = PositionGetDouble(POSITION_TP); BezubModif.deviation=3; MqlTradeResult BezubModifResult; OrderSend(BezubModif,BezubModifResult); } } } if (PositionGetInteger(POSITION_TYPE)==1) { if (PositionGetDouble(POSITION_SL)==0 || PositionGetDouble(POSITION_PRICE_OPEN)-PositionGetDouble(POSITION_SL)<LevelWLoss*Point()) { if (PositionGetDouble(POSITION_PRICE_OPEN)-lasttick.ask>LevelProfit*Point()) { MqlTradeRequest BezubModif; BezubModif.action= TRADE_ACTION_SLTP; BezubModif.symbol= Symbol(); BezubModif.sl = NormalizeDouble(PositionGetDouble(POSITION_PRICE_OPEN)-LevelWLoss*Point(),_Digits); BezubModif.tp = PositionGetDouble(POSITION_TP); BezubModif.deviation=3; MqlTradeResult BezubModifResult; OrderSend(BezubModif,BezubModifResult); } } } } }下午好!你能告诉我为什么残疾人的脚会出疹子吗?
开发商 - 你从哪里得到这样的杂草?
服务器必须是如此的 "石破天惊",宣布卖出 头寸为 POSITION_TYPE_BUY(0),买入 必须是POSITION_TYPE_SELL(1)。
我指的是上面的问题,以及这个代码是如何工作的。
PS
DEDMOROZ,你是否尝试过使用标识符?
此外,将大块的代码分成若干部分也很有用(OOP即将到来)...
开发商 - 你从哪里得到这样的杂草?
服务器必须是如此的 "石破天惊",宣布卖出 头寸为 POSITION_TYPE_BUY(0),买入 必须是POSITION_TYPE_SELL(1)。
因为还有其他的枚举,有ORDER_TYPE_BUY, DEAL_TYPE_SELL,BOOK_TYPE_BUY
因为还有其他的枚举,有ORDER_TYPE_BUY, DEAL_TYPE_SELL,BOOK_TYPE_BUY
而PositionGetInteger(POSITION_TYPE)与此有什么关系?而POSITION_TYPE_BUY 和 POSITION_TYPE_SELL 又有什么关系 ?
一个简单的例子。
我现在有一个欧元 的卖出 头寸(从市场上打开)。我认为它是卖出,但我的专家顾问认为它是买入(0)。
我打开 PositionGetInteger(POSITION_TYPE)的帮助 ,看到服务器显然混淆了一些东西。
PS
男人看到了一个开放的位置,男人看到了帮助,并做了一切正确的事情(在他看来),但服务器一如既往地有一个 "特殊 "的意见......
一个简单的例子。
我现在有一个欧元 的卖出 头寸(从市场上打开)。我认为它是卖出,但EA认为它是买入(0)。
我打开 PositionGetInteger(POSITION_TYPE)的帮助 ,我看到服务器显然对某些事情感到困惑......。
PS
人看到了开放的位置,人看到了帮助并做了一切正确的事情(在他看来),但服务器总是有一个 "特殊 "的意见......
在看到一个开放的姿势之前,你应该首先调用PositionSelect函数
那么我道歉,我今天有时间抽烟...
下午好!你能告诉我,为什么残疾人的停车位是草率的?
基本上它是一个无损的传输代码...我认为许多人会发现它很有用...
要么你不需要超调,要么你需要在姿势的符号上出价、投标。