//+------------------------------------------------------------------+//| stohastic_system.mq4 |//| Анатолий | |//+------------------------------------------------------------------+externdouble Lots=0.4;
externint TakeProfit=50;
externint NWave=2;
externint K=9;
externint D=3;
externint slowing=5;
externint Average_method=2;
externint price_field=0;
int K_level=0;
int down=0;
int up=0;
int init()
{
return(0);
}
int deinit()
{
return(0);
}
int start()
{
int ticket=0;
double stoch_1=iStochastic(NULL,0,K,D,slowing,Average_method,price_field,MODE_MAIN,1);
double stoch_2=iStochastic(NULL,0,K,D,slowing,Average_method,price_field,MODE_MAIN,2);
double stoch_3=iStochastic(NULL,0,K,D,slowing,Average_method,price_field,MODE_MAIN,3);
int Hour_curr=TimeHour(TimeCurrent());
if ((stoch_1>90)&&(stoch_2>70)) K_level=90;
if ((stoch_1<10)&&(stoch_2<30)) K_level=10;
if(OrdersTotal()<1)
{
if((Hour_curr>=1)&&(Hour_curr<24))//проверка сигналов только в этот промежуток времени
{
if((K_level==10)&&(stoch_1>10))//сигнал на покупку
{
RefreshRates();
Print("Сигнал на покупку. stoch_1=",stoch_1," stoch_2=",stoch_2);
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,10,0,Ask+TakeProfit*Point,"buy_order1",1,0,Blue);
K_level=10;
down=0;
}
if((K_level==90)&&(stoch_1<90))//сигнал на продажу
{
RefreshRates();
Print("Сигнал на продажу. stoch_1=",stoch_1," stoch_2=",stoch_2);
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,10,0,Ask-TakeProfit*Point,"sell_order1",1,0,Red);
K_level=90;
up=0;
}
}
}
return(0);
}
因为这些是局部变量,已经在第二次打钩时储存了垃圾,而不是票据。
非常感谢您!说实话,我一直都在想这个问题!"。
请看拖车。将其内容放在终端的Experts 文件夹中。选择你感兴趣的工具的时间框架,并把它放在专家顾问的图表上。
在MetaTrader的外部变量中设置开单的参数。
然后,你等待在所选工具的时间框架上形成一个新条形。
当专家顾问从市场上打开一个订单时,将其打开的时间与打开一个新条目的时间进行比较。
罗曼,正如承诺的那样,我想向你展示在 "开盘时打开 "的情况下使用专家顾问的实际情况。首先,该EA在放置在1小时图上后,在下一个tick上被触发,并在下一个蜡烛的开口处开启第二个 交易。为什么,我还不能理解。其次,交易的开盘价 与新蜡烛的开盘价并不一致。
2012.02.24,12:00,1.3392,1.3405,1.3383,1.3387,768 - 蜡烛在1.3392打开,订单在1.3390被触发。我在设置中指定滑移量为1点。如果我输入0点,EA根本就不会触发。
我附上了日志。对我来说,重要的仍然是开盘指令与蜡烛图的开盘价相吻合。
你好,先生们。我希望得到澄清。
我的理解是否正确,如果 在代码 ,OrderDelete 和OrderSend 命令是按顺序 写的,如果 ,EA收到信号,在tick #1执行两个命令(撤回+设置),那么。
- 这两条命令不能 在同一个tick #1上执行,而且它们的执行时间至少被拉长3个tick,并且
- 在打勾#1时,会发出OrderDelete命令。
- 在提交OrderDelete 后 ,只有 在下一个tick #2时才会返回结果,并且只有在同一个tick #2时才能提交OrderSend命令。
-OrderSend命令 的结果只有在第3点时才会被知道。
情况是这样吗?
而且,是否真的不可能在同一时间向MT发送两条指令?
我在MT4中编写一个EA。
谢谢你。
你好,先生们。我希望得到澄清。
我的理解是否正确,如果 在代码 ,OrderDelete 和OrderSend命令是按顺序 写的,如果 ,EA收到信号,在tick #1执行两个命令(撤回+设置),那么。
- 这两条命令不能 在同一个tick #1上执行,而且它们的执行时间至少被拉长3个tick,并且
- 在打勾#1时,会发出OrderDelete命令。
- 在提交OrderDelete 后 ,只有 在下一个tick #2时才会返回结果,并且只有在同一个tick #2时才能提交OrderSend命令。
-OrderSend命令 的结果只有在第3点时才会被知道。
情况是这样吗?
而且,是否真的不可能在同一时间向MT发送两条指令?
我在MT4中编写一个EA。
谢谢你。
打勾是一个新的报价。而且OrderDelete 和 OrderSend 命令之间没有任何联系。
如果有新闻更新和滑点,那么当一个简单的OrderSend被执行时,已经过去了十几个点。而如果市场处于夜间平仓状态,这两条指令可能在一个刻度内执行
例如,当一个订单触发了止损,而你试图在同一时刻打开/关闭另一个订单时,也可能会发生碰撞。那么在某些情况下,服务器可能不允许你执行该操作。
也就是说,对你的问题的回答是不,不是))
打勾是一个新的报价。而且与OrderDelete 和 OrderSend命令的执行时间没有关系。
如果有新闻更新和滑点,当一个简单的OrderSend被执行时,已经过去了十几个点。而如果市场处于夜间平仓状态,那么这两条指令可能会在一个刻度内执行。
据我所知,MT是通过滴答声从服务器上获取信息的(而服务器则是在发送新滴答声的同时给出指令答案,它通过时间来优化成本)。而在新的蜱虫到来之前,一切都不得而知。这就是我的意思。但也许我的这个假设是错误的?这 个问题更多的是与你提到的第二个选项有关,当嘀嗒声很慢时,而不是一打嘀嗒声。
因此,我是否正确地理解了你的意思,即在1号命令上得到回应并不是进入2号命令并完全处理的前提条件?
命令响应是命令的 "非必要 "部分?它的存在对进入下一个命令不是至关重要吗?
我们在下面和阿尔苏进行了讨论,我想我的假设和他一样:有回应是关键。你确实写了两个命令可以在一个刻度上执行。那么,来自服务器的信息与报价流程完全没有任何联系?
谢谢你。
这完全取决于蜱虫的速度有多快。一般来说,返回值的函数,OrderDelete,OrderSend等都不是异步执行的,也就是说,直到整个操作通过并返回错误代码(或成功时的NO_ERROR),下一个操作者才会被执行。另一件事是,在这段时间内可能会有几个ticks运行,但它们不会被start()函数处理。
例如,当一个订单触发了止损,而你试图在同一时刻打开/关闭另一个订单时,也可能会发生碰撞。那么在某些情况下,服务器可能不允许你执行该操作。
也就是说,你的问题的答案是否定的,它不是))。
如果按照你自己的说法,结果完全是 "如此",怎么会不是这样呢?)) 还是我又误解了什么?你在回复中写道,函数的执行方式是,只有在处理完前一个运算符的错误代码 后,才能执行下一个运算符。我想这就是我的意思:"两个命令 不能 在同一个tick #1上执行",因为响应--那个响应或错误代码--最早出现在新tick 上。 或者说不是这样的吗?还是说命令的响应是在一个单独的定时流中进行的,与报价流无关?也许我的错误在于假设命令执行结果是以新的引号返回的?
当然,我主要指的是滴答声很慢的情况。
据我所知,MT从potikovo服务器获取信息(而服务器则在发送新刻度的同时给予命令回应,这优化了时间成本)。而在新的蜱虫到来之前,一切都不得而知。这就是我的意思。但也许我的这个假设是错误的?这 个问题更多的是与你提到的第二个选项有关,当嘀嗒声很慢时,而不是一打嘀嗒声。
因此,我是否正确地理解了你的意思,即在1号命令上得到回应并不是进入2号命令并完全处理的前提条件?
命令响应是命令的 "非必要 "部分?它的存在对进入下一个命令不是至关重要吗?
我们在下面和阿尔苏进行了讨论,我想我的假设和他一样:有回应是关键。你确实写了两个命令可以在一个刻度上执行。那么,来自服务器的信息与报价流程完全没有任何联系?
谢谢你。
你好。我根本就不擅长编程。我对编码不是很有经验,所以请帮助我在代码中添加StopLoss和TrailingStop的平仓。专家顾问不是我的,但策略还不错,所以试错重做EA对我来说--说实话,我已经在吹牛了,而且没有多少时间--工作。我已经试过了,而且坦率地说,我没有时间可以浪费--我必须工作。这就是我对它的处理方法。