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) 我完全卡住了.我正在测试MetaTrader API并在尝试在VS 2010的立即窗口中运行方法时获取下一个错误:
mscorlib.dll中出现'System.Threading.ThreadAbortException'类型的第一次机会异常
System.Runtime.Remoting.dll中出现'System.Threading.ThreadAbortException'类型的第一次机会异常
评估需要一个线程暂时运行.使用"监视"窗口执行评估.
这是什么意思?是否会因运行时版本的差异而发生(api 2.0,app 4.0)?
我的任务是将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) 我的机器上安装了 MT4 客户端,并且可以成功检索源。不过,我用java编写了一个程序,使用FIX协议来拉取数据。我想知道我的 java 程序如何提取我在 MT4 客户端上看到的数据。
R 有一种从其他来源(例如雅虎财经等)收集数据的好方法
library(quantmod)
getSymbols("YHOO",src="google")
Run Code Online (Sandbox Code Playgroud)
有没有办法将 Metatrader 4 收集到 R 中
例如:
library(*******)
getSymbols("***",period=1hr, src="Metatrader4")
Run Code Online (Sandbox Code Playgroud) 使用 MQL4 我在处理datetime
.
我想做的是datetime
按月或按年排列。
目前我就是这样做的。
datetime myDate;
myDate[0] = D'2010.01.01 00:00';
myDate[1] = D'2010.02.01 00:00';
myDate[2] = D'2010.03.01 00:00';
myDate[3] = D'2010.04.01 00:00';
.
.
Run Code Online (Sandbox Code Playgroud)
不过我想像下面这样做
myDate[0] = D'2010.01.01 00:00';
for (int i = 1;i < 6 ;i+=){
myDate[i] = myDate[i - 1] + 1year;
}
Run Code Online (Sandbox Code Playgroud)
如果是月份,
myDate[0] = D'2010.01.01 00:00';
for (int i = 1; i < 12 ; i++){
myDate[i] = myDate[i - 1] + 1month
}
Run Code Online (Sandbox Code Playgroud)
问:如何计算加1month
或1year
?