I have written the code below that opens a buy and sell trade (a certain number of pips above and below the ask and bid price) at a specific time.
How can I close/cancel one immediately when the other is opened?
如果说获利X点或在一分钟后(取决于先达到哪种条件),如何关闭未平仓交易?
我不太确定自己在下面的代码中做了正确的事情,非常感谢您的帮助。
double spread = Ask-Bid;
extern datetime time;
extern int pipGap = 7;
extern int lotSize = 0.01;
extern int closeTimeInSeconds = 60;
int start() {
if (TimeCurrent() >= StrToTime(time)){
OrderSend(Symbol(),OP_BUYSTOP,lotSize, Ask + Point*pipGap, 0,0,0);
OrderSend(Symbol(),OP_SELLSTOP,lotSize, Bid - …Run Code Online (Sandbox Code Playgroud) 我是编写mql4代码的新手,如果在以下烛台图案出现时能获得一些绘制矩形的帮助,将不胜感激:
图。1:
Run code snippet
<blockquote class="imgur-embed-pub" lang="en" data-id="a/fRoPzsm"><a href="//imgur.com/a/fRoPzsm">Demand Zone 1</a></blockquote><script async src="//s.imgur.com/min/embed.js" charset="utf-8"></script>Run Code Online (Sandbox Code Playgroud)
图2:
Run code snippet
<blockquote class="imgur-embed-pub" lang="en" data-id="a/4E8KE1R" data-context="false"><a href="//imgur.com/a/4E8KE1R">Demand Zone 2</a></blockquote><script async src="//s.imgur.com/min/embed.js" charset="utf-8"></script>Run Code Online (Sandbox Code Playgroud)
和
图3:
Run code snippet
<blockquote class="imgur-embed-pub" lang="en" data-id="a/h6D6o6R"><a href="//imgur.com/a/h6D6o6R">Hidden Demand Zone</a></blockquote><script async src="//s.imgur.com/min/embed.js" charset="utf-8"></script>Run Code Online (Sandbox Code Playgroud)
和相应的供应区域,
并以指定的点数止损和止盈开立挂单。
请原谅我不直接包含图像。我没有足够的投票赞成这样做。
以下是链接图像中烛台图案的说明:
candlestick pattern当出现至少两个或多个连续的看涨蜡烛(最后一个看涨蜡烛的高点为该时间段的高点),然后跟随一个或多个看跌蜡烛的高低比最后一个看涨蜡烛的低点时,将发生一般(需求区域) 。然后最后是形成新高的看涨蜡烛。矩形区域是需求区域,从最后一个看跌蜡烛的开盘价到最低价截取。
当一系列连续的看涨蜡烛的蜡烛的低位,低于前一根蜡烛以及其高位和其收盘价重合时,隐藏的需求区域将从看涨蜡烛的低位转向开盘。
此处提供针对需求区域和供应区域的完整说明。
我知道,bullish和bearish蜡烛可由下式确定
if ( ( Open[1] - Close[1] ) > 0)
{
// candle is bearish
} …Run Code Online (Sandbox Code Playgroud) 我的任务是将C#市场策略迁移到MetaTrader.
有没有办法自动完成这项工作?(例如,是否可以将C#解析为它的AST,然后进行翻译?)
MetaTrader是否接受其他语言?
我试图看看是否可以为MetaTrader构建一个可以发出异步互联网请求的自定义指标,以便将数据发布到带有PHP接口的服务器上.
这些请求可能需要一些时间才能处理Web服务器,因此我担心如果以同步方式执行这些请求,它们将阻止指示器不断更新新的tick数据.
MT4是否有可用的异步库?
我想另一个条件添加到该解决方案在这个岗位。我希望当交易获利10点时,止损将增加10点。更具体地说,假设我已经设置了一个待处理的买单,止损位比开盘价低10点,止盈位为50点。如果交易获利10个点,那么止损将向上移动10个点,如果交易获利为20个点,则止损将向上移动另一个10个点,而当交易获利30和40个点时,同样会发生直到达到50点止盈为止。这里的想法是,止损会增加10个点,而利润会增加10个点,但是止损不会下降。因此,如果止损为获利10个点,而价格为获利23个点并且突然下降,它将以10个止损获利退出交易。
设置以上条件对我来说似乎很复杂。我还没完成。
以下是我要解决的代码的相关部分(请注意,其余代码与上述链接的问题解决方案相同)。
//=========================================================
//CLOSE EXPIRED STOP/EXECUTED ORDERS
//---------------------------------------------------------
for( int i=OrdersTotal()-1; i>=0; i-- ) {
if(OrderSelect( i, SELECT_BY_POS, MODE_TRADES ))
if( OrderSymbol() == Symbol() )
if( OrderMagicNumber() == viMagicId) {
if( (OrderType() == OP_BUYSTOP) || (OrderType() == OP_SELLSTOP) )
if((TimeCurrent()-OrderOpenTime()) >= viDeleteStopOrderAfterInSec)
OrderDelete(OrderTicket());
if( (OrderType() == OP_BUY) || (OrderType() == OP_SELL) )
if((TimeCurrent()-OrderOpenTime()) >= viDeleteOpenOrderAfterInSec) {
// For executed orders, need to close them
double closePrice = 0;
RefreshRates();
if(OrderType() == OP_BUY)
closePrice = Bid;
if(OrderType() == …Run Code Online (Sandbox Code Playgroud) 有人可以解释一下shift这个iMA函数的两个参数之间的区别是什么?
根据MQL4文件:
ma_shift- 移动平均移动.指标线偏移与时间范围的图表相关.
shift- 从指标缓冲区获取的值的索引(相对于当前条的转移给定的前期数)
标准MA指标采用哪些参数?
在Java语言中,可以使用try-catch机制。
它是否存在任何类似的行为 MQL4?
此代码引发错误'array out of range在Close[bar]表达式中 ” ,我无法正确处理它。
任何帮助将不胜感激。
bool isBarClosed( int bar ) {
bool barClosed = true;
double closePrice = Close[bar];
int error = GetLastError();
if ( error == 4202 ) {
barClosed = false;
}
return barClosed;
}
Run Code Online (Sandbox Code Playgroud) 如果您不知道,ex4 文件是用 MQL 语言(自动交易机器人)创建的文件。
有一个反编译器可以反编译此类文件的旧版本,但是在版本 600 之后没有反编译器。
我有需要反编译的有价值的 EA(外汇机器人)。你能帮我吗?
我试图找出在 MQL4 (Metatrader4) 中在Expert Advisor 中发送订单时是否有正确的方法来设置止损(SL) 和获利 (TP) 水平。功能模板是:
OrderSend( symbol, cmd, volume, price, slippage, stoploss, takeprofit, comment, magic, expiration, arrow_color);
因此,我很自然地尝试执行以下操作:
double dSL = Point*MM_SL;
double dTP = Point*MM_TP;
if (buy) { cmd = OP_BUY; price = Ask; SL = ND(Bid - dSL); TP = ND(Ask + dTP); }
if (sell) { cmd = OP_SELL; price = Bid; SL = ND(Ask + dSL); TP = ND(Bid - dTP); }
ticket = OrderSend(SYM, cmd, …Run Code Online (Sandbox Code Playgroud)