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)
{
case1: TrBBTurnUP_M1 =true; TrBBTurnDN_M1=false; // Флаг разворота вверх на М1case5: TrBBTurnUP_M5 =true; TrBBTurnDN_M5=false; // Флаг разворота вверх на М5case15: TrBBTurnUP_M15=true; TrBBTurnDN_M15=false; // Флаг разворота вверх на М15 case30: TrBBTurnUP_M30=true; TrBBTurnDN_M30=false; // Флаг разворота вверх на М30 case60: TrBBTurnUP_H1 =true; TrBBTurnDN_H1=false; // Флаг разворота вверх на H1case240: TrBBTurnUP_H4 =true; TrBBTurnDN_H4=false; // Флаг разворота вверх на H4case1440: TrBBTurnUP_D1 =true; TrBBTurnDN_D1=false; // Флаг разворота вверх на D1case10080: TrBBTurnUP_W1 =true; TrBBTurnDN_W1=false; // Флаг разворота вверх на W1case43200: TrBBTurnUP_MN =true; TrBBTurnDN_MN=false; // Флаг разворота вверх на MN
}
}
if (BB_1<BB_2 && BB_2>=BB_3 && BB_1>0) // Найден разворот BB вниз
{
switch (tf)
{
case1: TrBBTurnUP_M1 =false; TrBBTurnDN_M1=true; // Флаг разворота вниз на М1case5: TrBBTurnUP_M5 =false; TrBBTurnDN_M5=true; // Флаг разворота вниз на М5case15: TrBBTurnUP_M15=false; TrBBTurnDN_M15=true; // Флаг разворота вниз на М15 case30: TrBBTurnUP_M30=false; TrBBTurnDN_M30=true; // Флаг разворота вниз на М30 case60: TrBBTurnUP_H1 =false; TrBBTurnDN_H1=true; // Флаг разворота вниз на H1case240: TrBBTurnUP_H4 =false; TrBBTurnDN_H4=true; // Флаг разворота вниз на H4case1440: TrBBTurnUP_D1 =false; TrBBTurnDN_D1=true; // Флаг разворота вниз на D1case10080: TrBBTurnUP_W1 =false; TrBBTurnDN_W1=true; // Флаг разворота вниз на W1case43200: TrBBTurnUP_MN =false; TrBBTurnDN_MN=true; // Флаг разворота вниз на MN
}
}
//---------------------- Проверка на разворот Momentum -----------------------------------------------if (Mom_1>Mom_2 && Mom_2<=Mom_3 && Mom_1<100.0)
{
switch (tf)
{
case1: TrMomTurnUP_M1 =true; TrMomTurnDN_M1=false; // Флаг разворота вверх на М1case5: TrMomTurnUP_M5 =true; TrMomTurnDN_M5=false; // Флаг разворота вверх на М5case15: TrMomTurnUP_M15=true; TrMomTurnDN_M15=false; // Флаг разворота вверх на М15 case30: TrMomTurnUP_M30=true; TrMomTurnDN_M30=false; // Флаг разворота вверх на М30 case60: TrMomTurnUP_H1 =true; TrMomTurnDN_H1=false; // Флаг разворота вверх на H1case240: TrMomTurnUP_H4 =true; TrMomTurnDN_H4=false; // Флаг разворота вверх на H4case1440: TrMomTurnUP_D1 =true; TrMomTurnDN_D1=false; // Флаг разворота вверх на D1case10080: TrMomTurnUP_W1 =true; TrMomTurnDN_W1=false; // Флаг разворота вверх на W1case43200: TrMomTurnUP_MN =true; TrMomTurnDN_MN=false; // Флаг разворота вверх на MN
}
}
if (Mom_1<Mom_2 && Mom_2>=Mom_3 && Mom_1>100.0)
{
switch (tf)
{
case1: TrMomTurnUP_M1 =false; TrMomTurnDN_M1=true; // Флаг разворота вверх на М1case5: TrMomTurnUP_M5 =false; TrMomTurnDN_M5=true; // Флаг разворота вверх на М5case15: TrMomTurnUP_M15=false; TrMomTurnDN_M15=true; // Флаг разворота вверх на М15 case30: TrMomTurnUP_M30=false; TrMomTurnDN_M30=true; // Флаг разворота вверх на М30 case60: TrMomTurnUP_H1 =false; TrMomTurnDN_H1=true; // Флаг разворота вверх на H1case240: TrMomTurnUP_H4 =false; TrMomTurnDN_H4=true; // Флаг разворота вверх на H4case1440: TrMomTurnUP_D1 =false; TrMomTurnDN_D1=true; // Флаг разворота вверх на D1case10080: TrMomTurnUP_W1 =false; TrMomTurnDN_W1=true; // Флаг разворота вверх на W1case43200: TrMomTurnUP_MN =false; TrMomTurnDN_MN=true; // Флаг разворота вверх на MN
}
}
//---------------------- Проверка DeMarker на перепроданность/перекупленность ---------
我怎样才能与你联系?我有很多问题,希望得到一些建议。
我会用一个现成的数组来代替一个开关,为什么每次都要分配预定义的值?
谢谢,但你能不能说得更具体一点?因为这里的预定义值是时间框架,但不同指标的情况下,后面的代码会有所不同...可能,多布置一点代码会更容易......:)总的来说,我今天很迟钝--昨晚我睡不着,现在还在迷糊中......
你看--有绝对相同的代码在进行,但它已经在检查其他指标的交易标准......我只是想把EA中使用的所有指数的检查压缩到一个分析块中,所以它将在每一个刻度上计算它们的值,把它们放入变量中,然后使用变量的值进行交易决策。我不知道如何使用预定义值的数组来安排它...谢谢,但你能不能说得更具体一点?因为这里的预定义值是时间框架,但不同指标的情况下,后面的代码会有所不同...可能,多布置一点代码会更容易......:)我今天脑子不清楚--昨晚睡不着,现在还在迷糊中......
你看--那里有绝对相同的代码,但它已经检查了其他指标的交易标准。我只是想把EA中使用的所有指数的检查压缩到一个分析块中,然后它将在每一个刻度上计算它们的值,把它们放到变量中,并使用变量的值进行交易决策。我不知道如何使用预定义值的数组来安排它...也许你只需要选择一个计算的优先级,也就是说,看起来你有
如果(BB_1<0 )是第一个强制性条件,之后就不需要计算其他的BB_了,那么,做一个复合的if,在第二个if中进行必要的BB_计算,因为第一个if已经满足了,如果......。否则是相当有效的,而你只有如果
我同意,代码可能会变得更大,可读性更差,但性能会提高。
也许你只需要拿起计算的优先权,即
如果(BB_1<0 )是第一个强制条件,之后就不需要计算其他的BB_了,所以做一个复合的if,在第二个if中进行必要的BB_计算,前提是第一个if被满足了,如果 .否则是相当有效的,而你只有如果
我同意你的代码可能会变得更大,可读性更差,但性能会上升。
谢谢,伊戈尔,我看看会发生什么。这不是我所想的...我记得在电脑化的早期,在1991-94年,我不记得确切的时间...我在为ZX Spectrum做汇编语言编程...它的速度慢得吓人,而且只限于64Kb的内存......。因此,有一个命令给处理器,让它与屏幕内存区一起工作,以快速输出16386Kb到该区域。记载的CPU命令是所有命令中最快的,在一个大的数据集上工作。我们能做的不多,但...他们找到了一种将输出速度提高四倍的方法。有了处理堆栈的命令,它们的执行速度就快多了。他们是这样做的:将堆栈移到紧随屏幕之后的一个未使用的内存区域,用图形数据填充该区域,然后,在将堆栈移到屏幕之后,他们用一个填充堆栈的命令迅速将内存中准备的屏幕跳到屏幕区域...对那些时候来说,这只是一个奇迹,但对斯佩德鲁姆来说,这就是魔法......。
在这里,我也对非常规的工作方式感兴趣......。你知道,比如看看哪些命令是在多少个时钟周期内执行的,建立类似的东西...什么可以取代逻辑比较命令,也许是减法或其他相同的静脉....。
而在这里,我对非标准的工作方式感兴趣...比如查找哪些命令是在多少个时钟周期内执行的,并构建类似的东西...什么可以取代逻辑比较命令,也许是减法或类似的东西....
我想你不会在mql中找到它--mql的原理与java的C语法非常相似,试着看看执行case和if哪个更快,我记得我在turbopascal中看到if更快。
你知道你是否可以从脚本中发送一个命令来禁用EA?
你可以。例如,我用脚本控制我的EA,将全局变量 设置为某种状态。这些变量的状态
它们在专家顾问中被分析,并执行必要的命令。