任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 135

 

日安,如果不是太难的话,请给一个新手提供建议。

1) 如何声明一个 大小等于某个变量值的数组?(如果i=7声明数组双Muss[7],以此类推)。

2) 如果条件总是假的,为什么用户定义的函数中的数组被认为是充分声明和使用的?

while (false){

Alert("aaaaaaaaaa")。

static double Buf_max [9000000];

静态双Buf_min [9000000];}静态双Buf_min [9000000];}。

3) 在用户函数中和一般情况下,仅仅是一个数组和一个静态数组之间是否有区别?

 
ALXIMIKS:

日安,如果不是太难的话,请给一个新手提供建议。

1) 如何声明一个大小等于某个变量值的数组?(如果i=7声明数组双Muss[7],以此类推)。

...

1)ArrayResize()

int i=7;
double Muss[]; // объявление динамического массива
//---
int init() 
{
  ArrayResize(Muss,i); // устанавливает новый размер массива
  return(0);
}
 

这样的事情。

如果你调用MarketInfo(Symbol(),MODE_TRADEALLOWED),它会返回 - 1=允许交易。

但如果你在市场概览中把鼠标悬停在符号上,就会弹出带有文字的工具提示--交易:关闭。

这里有什么诀窍?

它确实不让我交易,但为什么MODE_TRADEALLOWED返回错误的值?

 
chief2000:

你运行了多少次指标?看起来是好几次(周期性在你的结果中很明显)。
在deinit中增加一个带 "分隔符 "的打印,设置输入条件或在脚本中重做,使其运行不超过一次,这样就会更清楚了。


好主意))。

我把它变得更简单,像这样。

//+------------------------------------------------------------------+
//|                                            massive_fffffffff.mq4 |
//|                                                              hoz |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "hoz"
#property link      ""

int start()
{ 

   int Array[4] = {1, 2, 3, 4};
   int x1, x2, x3, x4;
   int Array_Size = ArrayRange(Array, 0);
   
   for(int i=0; i<11; i++)
   {
      i++;
      Print("_i = ", i);
   }

   for(x1=0; x1<Array_Size; x1++)
   {
      Print("Combination = ", Array[x1]);

      for(x2=x1+1; x2<Array_Size; x2++)
      {
         Print("Combination = ", Array[x1] + "   " + Array[x2]);

         for(x3=x2+1; x3<Array_Size; x3++)
         {
            Print("Combination = ", Array[x1] + "   " + Array[x2] + "   " + Array[x3]);

            for(x4=x3+1; x4<Array_Size; x4++)
            {
               Print("Combination = ", Array[x1] + "   " + Array[x2] + "   " + Array[x3] + "   " + Array[x4]);
            }
         }
      }
   }
  for(int h=0; h<11; i++)
   {
      h++;
      Print("h = ", h);
   }


   return(0);
}

记录本上的开头是这样的。

2013.09.10 17:09:08     2013.08.15 00:00  massive_fffffffff EURUSD.GI,M5: h = 9
2013.09.10 17:09:08     2013.08.15 00:00  massive_fffffffff EURUSD.GI,M5: _i = 9
2013.09.10 17:09:08     2013.08.15 00:00  massive_fffffffff EURUSD.GI,M5: _i = 7
2013.09.10 17:09:08     2013.08.15 00:00  massive_fffffffff EURUSD.GI,M5: _i = 5
2013.09.10 17:09:08     2013.08.15 00:00  massive_fffffffff EURUSD.GI,M5: _i = 3
2013.09.10 17:09:08     2013.08.15 00:00  massive_fffffffff EURUSD.GI,M5: _i = 1
2013.09.10 17:09:07     2013.08.15 00:00  massive_fffffffff EURUSD.GI,M5: h = 11
2013.09.10 17:09:07     2013.08.15 00:00  massive_fffffffff EURUSD.GI,M5: h = 10
2013.09.10 17:09:07     2013.08.15 00:00  massive_fffffffff EURUSD.GI,M5: h = 9
2013.09.10 17:09:06     2013.08.15 00:00  massive_fffffffff EURUSD.GI,M5: _i = 9
2013.09.10 17:09:06     2013.08.15 00:00  massive_fffffffff EURUSD.GI,M5: _i = 7
2013.09.10 17:09:06     2013.08.15 00:00  massive_fffffffff EURUSD.GI,M5: _i = 5
2013.09.10 17:09:06     2013.08.15 00:00  massive_fffffffff EURUSD.GI,M5: _i = 3
2013.09.10 17:09:06     2013.08.15 00:00  massive_fffffffff EURUSD.GI,M5: _i = 1
2013.09.10 17:09:06     2013.08.15 00:00  massive_fffffffff EURUSD.GI,M5: h = 11
2013.09.10 17:09:06     2013.08.15 00:00  massive_fffffffff EURUSD.GI,M5: h = 10
2013.09.10 17:09:06     2013.08.15 00:00  massive_fffffffff EURUSD.GI,M5: h = 9
2013.09.10 17:09:06     2013.08.15 00:00  massive_fffffffff EURUSD.GI,M5: Combination = 1
2013.09.10 17:09:06     2013.08.15 00:00  massive_fffffffff EURUSD.GI,M5: _i = 11
2013.09.10 17:09:06     2013.08.15 00:00  massive_fffffffff EURUSD.GI,M5: _i = 9
2013.09.10 17:09:06     2013.08.15 00:00  massive_fffffffff EURUSD.GI,M5: _i = 7
2013.09.10 17:09:06     2013.08.15 00:00  massive_fffffffff EURUSD.GI,M5: _i = 5
2013.09.10 17:09:06     2013.08.15 00:00  massive_fffffffff EURUSD.GI,M5: _i = 3
2013.09.10 17:09:06     2013.08.15 00:00  massive_fffffffff EURUSD.GI,M5: _i = 1
2013.09.10 17:09:06     massive_fffffffff test started
2013.09.10 17:09:04     TestGenerator: spread set to 2
2013.09.10 17:09:04     massive_fffffffff EURUSD.GI,M5: loaded successfully

甚至根本就没有任何周期。没有秩序。输出完全不一致。

 
hoz:


好主意))。

我把它变得更简单,像这样。

记录本上的开头是这样的。

甚至根本就没有任何周期。没有秩序。输出完全不一致。


你把事情弄得有点复杂了,在测试阶段,一切都可以在1-2行中完成,取决于变体。在Inite中可以做到一切。产出的顺序没有规定。


bool Status_Run = true;


start() {

   if(Status_Run==true) {
      Status_Run  = false;

      Print("---START ---");
      ......

   }
}
 
chief2000:

你把事情弄得有点复杂了,在检查阶段,一切都可以在1-2行中完成,取决于变体。在Inite中可以做到一切。没有规定产出的顺序。





你的意思是引入一个标志,使循环被执行一次就完事了吗?我没有停止执行... 这就是它的工作方式。

//+------------------------------------------------------------------+
//|                                            massive_fffffffff.mq4 |
//|                                                              hoz |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "hoz"
#property link      ""

int start()
{ 

   bool Status_run = true;
   int Array[4] = {1, 2, 3, 4};
   int x1, x2, x3, x4;
   int Array_Size = ArrayRange(Array, 0);
   
   if (Status_run == true)
   {
      Status_run = false;

      for(x1=0; x1<Array_Size; x1++)
      {
         Print("Combination = ", Array[x1]);

         for(x2=x1+1; x2<Array_Size; x2++)
         {
            Print("Combination = ", Array[x1] + "   " + Array[x2]);

            for(x3=x2+1; x3<Array_Size; x3++)
            {
               Print("Combination = ", Array[x1] + "   " + Array[x2] + "   " + Array[x3]);

               for(x4=x3+1; x4<Array_Size; x4++)
               {
                  Print("Combination = ", Array[x1] + "   " + Array[x2] + "   " + Array[x3] + "   " + Array[x4]);
               }
            }
         }
      }
   }

   return(0);
}

不过,从本质上讲,代码应该像INITA中那样工作,一劳永逸。然后布尔变量Status_run将立即被设置为false,if条件不会再执行。但我的日志由于某种原因没有用完的输出。

 
hoz:


你的意思是引入一个标志,使循环被执行一次就完事了吗?我没有停止跑步...这就是它的工作方式。

虽然在本质上,代码应该像INITE那样工作,一次就可以了。然后布尔变量Status_run将立即被设置为false,if条件不会再执行。但不知为何,我在日志中没有用完的输出。


你断言这个循环给出了错误的结果,我向你提供了一个测试的方法。如果它按照你的需要工作,那么你应该遵循你的算法,如果不是,你应该在检查时改变它。PS "Status_run "必须在start()之前创建,它是一个

全局变量
 

大师们,给你们一个忠告。 我设置了bool 变量 Flag=true; 开始

我打开了一个交易

如果( 条件)

{

Opn_S = true。

标志=false。

}

有一个关于标志的问题,如果标志在打开时返回,而在打开的条件下有这个标志。传给国旗的真假保持多久,第二天是否重置为零?

 
Forexman77:

大师们,给你们一个忠告。 我设置了变量bool=true 开始

我打开了一个交易

如果( 条件)

{

Opn_S = true。

标志=false。

}

有一个关于标志的问题,如果标志在打开时返回,而在打开的条件下有这个标志。传给国旗的真假保留多久,第二天会不会重置为零?


不会的,每一个新的刻度线, Flag的值都是真的 。https://book.mql4.com/ru/variables/types

要么全局性地声明该变量--例如在程序的开头,在所有函数之外。

或者让变量成为静态的 - 静态的 bool flag=true; .

 
ALXIMIKS:

不会的,每一个新的刻度线, Flag的值都是真的 。https://book.mql4.com/ru/variables/types

要么全局性地声明该变量--在程序的开头,在所有函数之外。

或者让变量成为静态的 - 静态的 bool flag=true; .

谢谢你!