我将免费撰写一份顾问报告 - 页 166

 
你好,我想征求你的意见。你能告诉我如何改变我的专家顾问,使其不违背趋势进行交易,而是相反,跟随趋势?我开了新的头寸,按趋势增加了很多。

伊兰2.0

 
kammann659 #:
你好,我想征求你的意见。你能告诉我如何改变我的专家顾问,使其不违背趋势进行交易,而是相反,跟随趋势?我开了新的头寸,按趋势增加了很多。

伊兰2.0

你好,这是有可能的。

 

下午好。我使用挂单 交易(卖出止损、补仓止损)。我想要求写一段代码,其中条件得到满足--所有与当前价格有一定距离(x)的挂单被删除。也就是说,一个 "小集合 "的挂单将不断 "跟随 "当前价格。

当然,这个想法也可以通过其他方式实现,例如,控制卖出和买入止损点的数量,同时对其进行拖曳,使最长的止损点移至接近当前价格。


在我看来是一样的,但我喜欢第一种变体。对于第一种情况,距离x应该是条件中的变量。

我明白,这不是很多代码。我曾试图了解应该描述什么和如何描述,我看过并研究过类似的EA,但我的脑子不够用。

谢谢。

 

你好,@Andrey Kuharev

你是在寻找MT5还是MT4?

 
Yuriy Bykov #:

你好,@Andrey Kuharev

你是在寻找MT5还是MT4?

MT4
 

我再次重读了你的描述,意识到我可能没有理解到底需要做什么。看起来你需要以下东西。

  • 当需要时,你将在图表上手动运行一个脚本,或者你可以在代码中插入一个函数(或者是一个一直运行的EA,并删除不必要的订单?)
  • 它有一个参数X - 点数(一个整数)。
  • 它将删除 应用它的图表符号(或所有符号)上的挂单(只有BuyStop和SellStop?在这种情况下,应该为每个符号设置X)。
  • 如果一个必要的符号的所需类型的挂单,其开盘价和当前价之间的距离大于X,则该挂单将被删除。
  • 下订单不是它的任务

如果我说错了,请纠正我。

 
Yuriy Bykov #:

我再次重读了你的描述,意识到我可能没有理解到底需要做什么。看起来你需要以下东西。

  • 当需要时,你将在图表上手动运行一个脚本,或者你可以在代码中插入一个函数(或者是一个一直运行的EA,并删除不必要的订单?)
  • 它有一个参数X - 点数(一个整数)。
  • 它将删除 应用这些订单 的图表符号(或所有符号)上的挂单(只有BuyStop和SellStop?在这种情况下,应该为每个符号设置X)。
  • 如果一个必要的符号的所需类型的挂单,其开盘价和当前价之间的距离大于X,则该挂单将被删除。
  • 下订单不是它的任务

如果我说错了,请纠正我。

如果我看到一个不同的订单,那么它需要再次下单,与我看到不同的订单与不同的盈亏线的方式完全相同。我将自己动手,而不是用我的胡言乱语来分散聪明人的注意力。为了更好地理解,这里是 "专家顾问 "的代码,我想在其中插入删除的功能。在我的EA中,我将X参数标记为extern double v_util = 50; //从当前价格到待定订单的距离,要删除。

//+------------------------------------------------------------------+
//|悬而未决的订单。mq4 |
//| Copyright 2022, MetaQuotes Software Corp.|
//|https://www.mql5.com|
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Software Corp."
#属性链接"https://www.mql5.com"
#属性版本 "1.00"
#属性严格
//------- 外部EA参数 -----------------------------------------+
extern double delitel_Equity_lots = 1400000; //分割器来确定工作批次。
extern double schag = 2; // 从当前价格开始的挂单开仓步骤
extern double v_util = 50;// 从当前价格到被删除的挂单的距离
extern int StopLoss = 10000;
Extern int TakeProfit = 5;
extern int MagicBuy = 1111111; // MagicNumber for BUY orders
extern int MagicSell = 2222222;//卖出订单的MagicNumber
///+
void OnTick()

{double Lots = NormalizeDouble(AccountBalance()/delitel_Equity_lots, 2); // Position volume.

OrderSend(Symbol(),OP_BUYSTOP,Lots,NormalizeDouble(Ask+schag*_Point,_Digits) ,0,NormalizeDouble(Ask-(StopLoss-schag)*_Point,_Digits),
NormalizeDouble(Ask+(TakeProfit+schag)*_Point,_Digits),MagicBuy); // Open BuyStop
Print (GetLastError()); // 错误信息
OrderSend(Symbol(),OP_SELLSTOP,Lots,NormalizeDouble(Bid-schag*_Point,_Digits),0,NormalizeDouble(Bid+(StopLoss-schag)*_Point,_Digits),
NormalizeDouble(Bid-(TakeProfit+schag)*_Point,_Digits), MagicSell; )// 打开SellStop
Print (GetLastError()); // 错误信息
}
//+------------------------------------------------------------------+

一切都很简单,没有错综复杂的问题。我明白,你必须为各种计谋付费,没有人会免费发明超级策略和超级代码。我想暂时测试一下这个方向的工作,并要求做一个简单的拆除,没有别的......唯一的是,如果不是太长,也不是太难,你可以添加一个参数--塞子之间的距离,那就完美了。 但我明白,所有这些工作和时间......所以至少是拆除。谢谢你!

Discover new MetaTrader 5 opportunities with MQL5 community and services
Discover new MetaTrader 5 opportunities with MQL5 community and services
  • 2022.04.13
  • www.mql5.com
MQL5: language of trade strategies built-in the MetaTrader 5 Trading Platform, allows writing your own trading robots, technical indicators, scripts and libraries of functions
 
这就是出来的东西。我希望这有助于测试操作。
附加的文件:
Pending.mq4  10 kb
 
Yuriy Bykov #:
这就是我们得到的东西。我希望这有助于测试操作。

请指教,并在此加10。

double minOpenPriceBuy = 1e+10;
double maxOpenPriceBuy = 0;
double minOpenPriceSell = 1e+10;
double maxOpenPriceSell = 0。

,这是十,extern int delta = 10。

 

不,这是数字10000000000的不同写法,所以你不需要这样写。

double minOpenPriceBuy = 10000000000;

...