[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 537

 
chief2000:

这里有一个问题。
我能否从一个自定义指标的代码中知道它所运行的窗口目前是否处于活动状态?
例如,同一个指标在两个窗口中运行--你希望它只在图表处于活动状态的窗口中工作,而在第二个窗口中不活动。

谢谢你!

图书馆 再一次提供了帮助:-)
 
Zhunko:
图书馆 再次提供帮助 :-)
谢谢你!
 
晚上好!我在这里开始了机器人的快速滚动,甚至突然没有错误的采购,看,它突然一次打开了两个订单!!!。 也就是说,每次都有一个订单,在第一个和第二个刻度上。以下是代码,我将把它粘贴在下面。BUY变量是已经打开的买入订单的数量,如果它高于零,甚至存在一个订单,那么它就不应该打开。
//+------------------------------------------------------------------+
//|                                                        антиб.mq4 |
//|                      Copyright © 2012, MetaQuotes Software Corp. |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

extern double volume=0.01;extern double stoploss=12,takeprofit=12;extern int magic=50001,I=5;
int ticket;double volumee ; 
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   volumee=volume;
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
        
int start()
  {   int BUY;
  
//----

 for( int i=OrdersHistoryTotal() -1;i>=0;i--){
    OrderSelect(i,SELECT_BY_POS,MODE_HISTORY); if (OrderMagicNumber( )== magic) { if(OrderSymbol()== Symbol()) {
      if(OrderType()==OP_BUY ) {   if ((OrderProfit( )-3*Point) <  OrderTakeProfit( ) && (OrderProfit( )+3*Point) >  OrderTakeProfit( ) ) { if( OrderTicket( ) == ticket ) {
               volumee = volumee+volumee;}}}}}}
if (volumee>volume*I){volumee=volume;}


              for ( i=OrdersTotal()-1;i>=0;i--)
   {
    if (OrderSelect(i, SELECT_BY_TICKET ) == true)    Alert ("Select error ", GetLastError( ) ) ;
     if(OrderMagicNumber( )== magic){
      if(OrderSymbol()== Symbol()) {
      if(OrderType()==OP_BUY ) {
                             BUY++;}}}}   
 if(BUY==0){

 ticket= OrderSend( Symbol(), OP_BUY, volumee, NormalizeDouble(( Ask),Digits),NormalizeDouble(( Point*3),Digits) , NormalizeDouble(( Ask-stoploss*Point),Digits), NormalizeDouble(( Ask+takeprofit*Point),Digits), NULL,  magic, 0, Red) ;}
 
 
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
在这里,有两张逮捕证!!
 

你知道吗,也许我一直在摆弄for循环,有一个订单,我再减去一个,循环条件根本没有得到满足。是的,是的,看起来是的,而且有两张订单正在打开!

人们,我应该删除我最后的评论吗?

不,我仍然有两个,在第三个或第四个勾后,警报: 选择错误4105写。

似乎订单没有被选中,一开始没有错误...这是正确的 for( int i=0;i<=OrdersHistoryTotal();i++) {

所以for( int i=0;i<=OrdersTotal();i++){

而且有两个命令都是一样的。

就是这样,一个。吁。;


 
错误4105--未选择订单--不会消失,但一般来说能充分工作。
 
Ivn:

下午好,如何为另一个时间框架写一个标准的顾问。即把这个指标放在1小时图上,它将显示4小时的指标。

пытался //+------------------------------------------------------------------+
//| vv at 4 o'clock.mq4 ||
//| Copyright © 2012, MetaQuotes Software Corp.
//|https://www.metaquotes.net/|
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, MetaQuotes Software Corp."
#属性链接"https://www.metaquotes.net/"

#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 LightSeaGreen
#property indicator_color2 LightSeaGreen
#属性 indicator_color3 LightSeaGreen
//---- 指标参数
外部int BandsPeriod=20。
外部的inttern BandsShift=0。
外置双倍BandsDeviations=2.0。
//---- 缓冲区
双重MovingBuffer[]。
双倍UpperBuffer[]。
double LowerBuffer[];
//+------------------------------------------------------------------+
//|自定义指标初始化功能
//+------------------------------------------------------------------+
int init()
{
//---- 指标
SetIndexStyle(0,DRAW_LINE)。
SetIndexBuffer(0,MovingBuffer)。
SetIndexStyle(1,DRAW_LINE)。
SetIndexBuffer(1,UpperBuffer)。
SetIndexStyle(2,DRAW_LINE)。
SetIndexBuffer(2,LowerBuffer)。
//----
SetIndexDrawBegin(0,BandsPeriod+BandsShift)。
SetIndexDrawBegin(1,BandsPeriod+BandsShift)。
SetIndexDrawBegin(2,BandsPeriod+BandsShift)。
//----
return(0);
}
//+------------------------------------------------------------------+
//|布林线 |
//+------------------------------------------------------------------+
int start()
{
int i,k,counted_bars=IndicatorCounted()。
双重偏离。
double sum,oldval,newres;
int B=iBars( NULL,PERIOD_H4)。
double C=iClose(NULL,PERIOD_H4,0)。
//----
如果(B <=BandsPeriod) 返回(0)。
//---- 初始零点
如果(counted_bars<1)
for(i=1;i<=BandsPeriod;i++)
{
MovingBuffer[B-i]=EMPTY_VALUE。
UpperBuffer[B-i]=EMPTY_VALUE。
LowerBuffer[B-i]=EMPTY_VALUE。
}
//----
int limit=B-counted_bars。
如果(counted_bars>0) limit++;
for(i=0; i<limit; i++)
MovingBuffer[i]=iMA(NULL,PERIOD_H4,BandsPeriod,BandsShift,MODE_SMA,PRICE_CLOSE,i) 。
//----
i=B-BandsPeriod+1。
如果(counted_bars>BandsPeriod-1) i=B-counted_bars-1。
while(i>=0)
{
sum=0.0。
k=i+BandsPeriod-1。
oldval=MovingBuffer[i];
while(k>=i)
{
newres=C[k]-oldval。
sum+=newres*newres。
k--;
}
偏差=BandsDeviations*MathSqrt(sum/BandsPeriod)。
UpperBuffer[i]=oldval+deviation。
LowerBuffer[i]=oldval-deviation。
i--;
}
//----
return(0);
}
//+------------------------------------------------------------------+

不起作用

this newres=C[k]-oldval;- '[' - 意外标记

布林线指标。


代替C[k]插入iClose(NULL,PERIOD_H4,k)。

然而,我已经获得了一种方法,可以以更自然的方式显示1点钟方向的图表和4点钟方向的线。
当我把这段代码翻译成图表时,我看到价格离开了通道;似乎4点钟方向的布林带图没有与时间线相连

预先感谢

 

伙计们,你们能否根据经验告诉我...挑选了一家公司租用VPS通过MT4客户终端进行交易,感兴趣的是一个运行终端平均消耗多少流量,例如,有十个sops? 将有几个终端在运行... 这样我就可以从提供的数据计划中选择适当的数据计划。

P.S. 他们有一个基于总流量的费率,即传入+传出。

 

同事们,谁知道答案。

我有一个策略测试器,在相同的时间框架(2011年5月1日-2012年1月27日),欧元兑美元货币对,在小时条(H1),从一个DC(Alpari),和相同的顾问,但在不同的电脑(笔记本电脑,台式机)给出相反的结果在PC上--2000美元,在笔记本电脑上+3000美元。在那里,在那里检查了2-3次。

请告诉我原因和该怎么做,以及/或给我一个可以阅读该主题的链接。
 
Sersad:

同事们,谁知道答案呢。

我有一个策略测试器,在相同的时间间隔(2011年5月1日-2012年1月27日),货币对欧元兑美元,在小时条(H1),从一个DC(Alpari),和相同的专家顾问,但在不同的电脑(笔记本电脑,桌面)给出了相反的结果在PC上--2000美元,在笔记本电脑上+3000美元。在那里,在那里检查了2-3次。

请告诉我原因和该怎么做,以及/或给我一个可以阅读该主题的链接。


我自己也曾被卷入其中......。有一个类似的。第一个终端安装的是Metacquotes,第二个终端安装的是Alparey,历史上也是如此,在测试同一只猫头鹰时,出现了明显的差异,很长时间都搞不清楚是什么问题。

1.从Alpari下载终端。下载该仪器的Alpari报价历史,会出现这个窗口。

如果在按下F2后没有弹出 "下载",那么你正在下载仪器的历史记录。如果你在按下F2和 "下载 "后没有看到这个窗口弹出,你将不会从Alpari下载价格历史。

2.在策略测试器中,将所有的选项设置为相等,并通过点击 "符号属性 "按钮检查点差。通过点击 "符号属性 "按钮,检查策略测试器中的点差值。

在你这样做之前--擦除并重新加载你感兴趣的工具的报价历史+检查测试期:在截图H4中--这样在两种情况下都是一样的。