[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 680

 
boris.45:
我怎样才能与你联系?我有很多问题,希望得到一些建议。
当你向某人提出问题时,请点击你要找的人的帖子的右下角的 "回复"。否则,人们会怀疑你的问题是向谁提出的......。:)
 
你能告诉我是否有可能从脚本中向EA发送断开连接的命令?
 
granit77:
我会用一个现成的数组来代替一个开关,为什么每次都要分配预定义的值?

谢谢,但你能不能说得更具体一点?因为这里的预定义值是时间框架,但不同指标的情况下,后面的代码会有所不同...可能,多布置一点代码会更容易......:)总的来说,我今天很迟钝--昨晚我睡不着,现在还在迷糊中......

int AnaliseFunc (string sy, int tf)
{
   
   CurAsk   =MarketInfo(Symbol(),MODE_ASK);
   CurBid   =MarketInfo(Symbol(),MODE_BID);
   OpnPrice =iOpen(NULL,PERIOD_M5,0);
   OpnPrice1=iOpen(NULL,PERIOD_M5,1);
   ClsPrice1=iClose(NULL,PERIOD_M5,1);
         
   if (sy=="" || sy=="0") sy=Symbol();
double
   BB_1  =iCustom(sy,tf,"BB_MA",13,1,1,1),
   BB_2  =iCustom(sy,tf,"BB_MA",13,1,1,2),
   BB_3  =iCustom(sy,tf,"BB_MA",13,1,1,3),
   AO1   =iAO(sy,tf,1),
   AO2   =iAO(sy,tf,2),
   AO3   =iAO(sy,tf,3),
   AC1   =NormalizeDouble(iAC(sy,tf,1),8)*1000,
   AC2   =NormalizeDouble(iAC(sy,tf,2),8)*1000,
   AC3   =NormalizeDouble(iAC(sy,tf,3),8)*1000,
   AC4   =NormalizeDouble(iAC(sy,tf,4),8)*1000,
   AC5   =NormalizeDouble(iAC(sy,tf,5),8)*1000,
   SpMan1=iCustom(sy,tf,"SpearmanRankCorr",14,1000,30,true,0,1),
   SpMan2=iCustom(sy,tf,"SpearmanRankCorr",14,1000,30,true,0,2),
   DeM_1 =iDeMarker(sy,tf,14,1),
   DeM_2 =iDeMarker(sy,tf,14,2),
   Mom_1 =iMomentum(sy,tf,14,PRICE_CLOSE,1),
   Mom_2 =iMomentum(sy,tf,14,PRICE_CLOSE,2),
   Mom_3 =iMomentum(sy,tf,14,PRICE_CLOSE,3);
   
//---------------- Проверка на разворот BB_MA -------------------------------------------------------   
   
   if (BB_1>BB_2 && BB_2<=BB_3 && BB_1<0)                               // Найден разворот BB вверх
      {
      switch (tf)
         {
            case 1:     TrBBTurnUP_M1 =true;  TrBBTurnDN_M1=false;      // Флаг разворота вверх на М1
            case 5:     TrBBTurnUP_M5 =true;  TrBBTurnDN_M5=false;      // Флаг разворота вверх на М5
            case 15:    TrBBTurnUP_M15=true;  TrBBTurnDN_M15=false;     // Флаг разворота вверх на М15 
            case 30:    TrBBTurnUP_M30=true;  TrBBTurnDN_M30=false;     // Флаг разворота вверх на М30 
            case 60:    TrBBTurnUP_H1 =true;  TrBBTurnDN_H1=false;      // Флаг разворота вверх на H1
            case 240:   TrBBTurnUP_H4 =true;  TrBBTurnDN_H4=false;      // Флаг разворота вверх на H4
            case 1440:  TrBBTurnUP_D1 =true;  TrBBTurnDN_D1=false;      // Флаг разворота вверх на D1
            case 10080: TrBBTurnUP_W1 =true;  TrBBTurnDN_W1=false;      // Флаг разворота вверх на W1
            case 43200: TrBBTurnUP_MN =true;  TrBBTurnDN_MN=false;      // Флаг разворота вверх на MN
         }
      }
   if (BB_1<BB_2 && BB_2>=BB_3 && BB_1>0)                               // Найден разворот BB вниз
      {
      switch (tf)
         {
            case 1:     TrBBTurnUP_M1 =false;  TrBBTurnDN_M1=true;      // Флаг разворота вниз на М1
            case 5:     TrBBTurnUP_M5 =false;  TrBBTurnDN_M5=true;      // Флаг разворота вниз на М5
            case 15:    TrBBTurnUP_M15=false;  TrBBTurnDN_M15=true;     // Флаг разворота вниз на М15 
            case 30:    TrBBTurnUP_M30=false;  TrBBTurnDN_M30=true;     // Флаг разворота вниз на М30 
            case 60:    TrBBTurnUP_H1 =false;  TrBBTurnDN_H1=true;      // Флаг разворота вниз на H1
            case 240:   TrBBTurnUP_H4 =false;  TrBBTurnDN_H4=true;      // Флаг разворота вниз на H4
            case 1440:  TrBBTurnUP_D1 =false;  TrBBTurnDN_D1=true;      // Флаг разворота вниз на D1
            case 10080: TrBBTurnUP_W1 =false;  TrBBTurnDN_W1=true;      // Флаг разворота вниз на W1
            case 43200: TrBBTurnUP_MN =false;  TrBBTurnDN_MN=true;      // Флаг разворота вниз на MN
         }
      }
//---------------------- Проверка на разворот Momentum -----------------------------------------------
   
   if (Mom_1>Mom_2 && Mom_2<=Mom_3 && Mom_1<100.0)
      {
      switch (tf)
         {
            case 1:     TrMomTurnUP_M1 =true;  TrMomTurnDN_M1=false;      // Флаг разворота вверх на М1
            case 5:     TrMomTurnUP_M5 =true;  TrMomTurnDN_M5=false;      // Флаг разворота вверх на М5
            case 15:    TrMomTurnUP_M15=true;  TrMomTurnDN_M15=false;     // Флаг разворота вверх на М15 
            case 30:    TrMomTurnUP_M30=true;  TrMomTurnDN_M30=false;     // Флаг разворота вверх на М30 
            case 60:    TrMomTurnUP_H1 =true;  TrMomTurnDN_H1=false;      // Флаг разворота вверх на H1
            case 240:   TrMomTurnUP_H4 =true;  TrMomTurnDN_H4=false;      // Флаг разворота вверх на H4
            case 1440:  TrMomTurnUP_D1 =true;  TrMomTurnDN_D1=false;      // Флаг разворота вверх на D1
            case 10080: TrMomTurnUP_W1 =true;  TrMomTurnDN_W1=false;      // Флаг разворота вверх на W1
            case 43200: TrMomTurnUP_MN =true;  TrMomTurnDN_MN=false;      // Флаг разворота вверх на MN
         }
      }
      
   if (Mom_1<Mom_2 && Mom_2>=Mom_3 && Mom_1>100.0)
      {
      switch (tf)
         {
            case 1:     TrMomTurnUP_M1 =false;  TrMomTurnDN_M1=true;      // Флаг разворота вверх на М1
            case 5:     TrMomTurnUP_M5 =false;  TrMomTurnDN_M5=true;      // Флаг разворота вверх на М5
            case 15:    TrMomTurnUP_M15=false;  TrMomTurnDN_M15=true;     // Флаг разворота вверх на М15 
            case 30:    TrMomTurnUP_M30=false;  TrMomTurnDN_M30=true;     // Флаг разворота вверх на М30 
            case 60:    TrMomTurnUP_H1 =false;  TrMomTurnDN_H1=true;      // Флаг разворота вверх на H1
            case 240:   TrMomTurnUP_H4 =false;  TrMomTurnDN_H4=true;      // Флаг разворота вверх на H4
            case 1440:  TrMomTurnUP_D1 =false;  TrMomTurnDN_D1=true;      // Флаг разворота вверх на D1
            case 10080: TrMomTurnUP_W1 =false;  TrMomTurnDN_W1=true;      // Флаг разворота вверх на W1
            case 43200: TrMomTurnUP_MN =false;  TrMomTurnDN_MN=true;      // Флаг разворота вверх на MN
         }
      }
//---------------------- Проверка DeMarker на перепроданность/перекупленность ---------
你看--有绝对相同的代码在进行,但它已经在检查其他指标的交易标准......我只是想把EA中使用的所有指数的检查压缩到一个分析块中,所以它将在每一个刻度上计算它们的值,把它们放入变量中,然后使用变量的值进行交易决策。我不知道如何使用预定义值的数组来安排它...
 
artmedia70:

谢谢,但你能不能说得更具体一点?因为这里的预定义值是时间框架,但不同指标的情况下,后面的代码会有所不同...可能,多布置一点代码会更容易......:)我今天脑子不清楚--昨晚睡不着,现在还在迷糊中......

你看--那里有绝对相同的代码,但它已经检查了其他指标的交易标准。我只是想把EA中使用的所有指数的检查压缩到一个分析块中,然后它将在每一个刻度上计算它们的值,把它们放到变量中,并使用变量的值进行交易决策。我不知道如何使用预定义值的数组来安排它...




也许你只需要选择一个计算的优先级,也就是说,看起来你有

如果(BB_1<0 )是第一个强制性条件,之后就不需要计算其他的BB_了,那么,做一个复合的if,在第二个if中进行必要的BB_计算,因为第一个if已经满足了,如果......。否则是相当有效的,而你只有如果

我同意,代码可能会变得更大,可读性更差,但性能会提高。

 
IgorM:


也许你只需要拿起计算的优先权,即

如果(BB_1<0 )是第一个强制条件,之后就不需要计算其他的BB_了,所以做一个复合的if,在第二个if中进行必要的BB_计算,前提是第一个if被满足了,如果 .否则是相当有效的,而你只有如果

我同意你的代码可能会变得更大,可读性更差,但性能会上升。

谢谢,伊戈尔,我看看会发生什么。这不是我所想的...我记得在电脑化的早期,在1991-94年,我不记得确切的时间...我在为ZX Spectrum做汇编语言编程...它的速度慢得吓人,而且只限于64Kb的内存......。因此,有一个命令给处理器,让它与屏幕内存区一起工作,以快速输出16386Kb到该区域。记载的CPU命令是所有命令中最快的,在一个大的数据集上工作。我们能做的不多,但...他们找到了一种将输出速度提高四倍的方法。有了处理堆栈的命令,它们的执行速度就快多了。他们是这样做的:将堆栈移到紧随屏幕之后的一个未使用的内存区域,用图形数据填充该区域,然后,在将堆栈移到屏幕之后,他们用一个填充堆栈的命令迅速将内存中准备的屏幕跳到屏幕区域...对那些时候来说,这只是一个奇迹,但对斯佩德鲁姆来说,这就是魔法......。

在这里,我也对非常规的工作方式感兴趣......。你知道,比如看看哪些命令是在多少个时钟周期内执行的,建立类似的东西...什么可以取代逻辑比较命令,也许是减法或其他相同的静脉....。

 
artmedia70:

而在这里,我对非标准的工作方式感兴趣...比如查找哪些命令是在多少个时钟周期内执行的,并构建类似的东西...什么可以取代逻辑比较命令,也许是减法或类似的东西....


我想你不会在mql中找到它--mql的原理与java的C语法非常相似,试着看看执行case和if哪个更快,我记得我在turbopascal中看到if更快。
 
artmedia70:
欢迎来到这里
 
Oper:
你知道你是否可以从脚本中发送一个命令来禁用EA?

你可以。例如,我用脚本控制我的EA,将全局变量 设置为某种状态。这些变量的状态

它们在专家顾问中被分析,并执行必要的命令。

 
下午好。
 
   SetIndexStyle(2,DRAW_ARROW);
   SetIndexArrow(2,241); 
你能告诉我如何正确设置箭头的大小吗?为什么当你重置颜色设置时,它的大小会增加,而当你重新编译时却会减少?