//+------------------------------------------------------------------+//| Get value of buffers for the iATR |//+------------------------------------------------------------------+double iATRGet(constint index)
{
double ATR[1];
//--- reset error code ResetLastError();
//--- fill a part of the iATR array with values from the indicator buffer that has 0 index if(CopyBuffer(handle_iATR,0,index,1,ATR)<0)
{
//--- if the copying fails, tell the error code PrintFormat("Failed to copy data from the iATR indicator, error code %d",GetLastError());
//--- quit with zero result - it means that the indicator is considered as not calculated return(0.0);
}
return(ATR[0]);
}
//+------------------------------------------------------------------+//| Get value of buffers for the iATR in the array |//+------------------------------------------------------------------+bool iATRGetArray(constint start_pos,constint count,double &arr_buffer[])
{
bool result=true;
if(!ArrayIsDynamic(arr_buffer))
{
Print("This a no dynamic array!");
return(false);
}
ArrayFree(arr_buffer);
int buffer_num=0; // indicator buffer number //--- reset error code ResetLastError();
//--- fill a part of the iATRBuffer array with values from the indicator buffer that has 0 index int copied=CopyBuffer(handle_iATR,buffer_num,start_pos,count,arr_buffer);
if(copied!=count)
{
//--- if the copying fails, tell the error code PrintFormat("Failed to copy data from the iATR indicator, error code %d",GetLastError());
//--- quit with zero result - it means that the indicator is considered as not calculated return(false);
}
//---return(result);
}
//--- Используя функцию CopyBuffer, мы копируем по 1 последних новых значения индикаторов в динамические массивыif(CopyBuffer(Handle_4P72_L0_1,0,0,200,line1_L0)<0// || CopyBuffer(Handle_4P72_L0_2,0,0,1,line2_L0)<0 || CopyBuffer(SMA_Handle_00,0,0,1,SMA_L0)<0
|| CopyBuffer(Handle_4P72_L1_1,0,0,200,line1_L1)<0// || CopyBuffer(Handle_4P72_L1_2,0,0,1,line2_L1)<0 || CopyBuffer(SMA_Handle_01,0,0,1,SMA_L1)<0
|| CopyBuffer(Handle_4P72_L2_1,0,0,200,line1_L2)<0// || CopyBuffer(Handle_4P72_L2_2,0,0,1,line2_L2)<0 || CopyBuffer(SMA_Handle_02,0,0,1,SMA_L2)<0
|| CopyTime(_Symbol,_Period,0,1,New_Time)<0)
一个指标在三个时间段有六个把手。
而要取的价值的偏移,已经被规定了。我每次都从他们那里抄袭一个价值。
我在三个时间段使用一个指标的三个手柄,并从中复制可能的偏移区间,这让我感到困惑。
如果你需要一次从一个以上的条形图中获取指标值,你应该把这些值复制到一个数组中。以iATR为例。
如果你想一次从多个条形图中接收一个指标值,你需要将这些值复制到一个数组中。以iATR为例。
是的,看来把我复制到的数组留作动态是个错误。:(
将检查。
是的,把我复制进来的数组作为动态数组似乎是个错误。:(
我会检查的。
我只复制到动态数组!而且,在复制之前,我强行让ArrayFree。我在静态数组方面遇到了问题。从那时起,只有动态的。
我只复制到动态 数组!而在复制之前,我强制ArrayFree。静态数组存在问题。从那时起,只有动态的。
明白了。错误不在这里。
这里是没有去的专家顾问。
明白了。错误不在这里。
这里是没有去的专家。
错误:你复制的是一个值还是两个 值?
错误:你复制的是一个值还是两个 值?
在这个EA中(它的日期不同),我尝试了三个手势和两百个数值。
如果你准备为MT5制作机器人,我可以开始给你出主意。我在TS-Lab中模拟条件,但我想在MT5上以自动模式交易。
如果测试没有问题,我将描述交易逻辑。第一个可能会是这个。
#55
我先从小份量开始。
只要在当前蜡烛关闭前有"关闭信号蜡烛前的秒数",我们就计算"计算平均蜡烛尺寸的蜡烛数"的平均尺寸。如果当前烛光超过平均尺寸的"当前烛光:超体尺寸, 百分比"--我们以成交量"手"开立头寸,并以成交量"手"*开盘价的"乘法系数"在"待定限价水平:当前烛光高度的百分比"的距离,以信号烛光高度的百分比放置待定限价单。
这是否正确?
我需要时间来记住我在那里做了什么 :)因为通风,我得了感冒。既生气又好笑:在夏天发烧,还得了感冒:)
这需要时间来记住我一直在做的事情 :)然后,仿佛是故意的,出现了气流,结果就是感冒了。这既有趣又愤怒:在夏天发烧和感冒:)
感觉更好。
我只复制到动态 数组!而在复制之前,我强制ArrayFree。静态数组存在问题。从那时起,只有动态的。
哦,来吧...我对静态的也没有问题。不过,这取决于我们正在谈论的内容。在指数中,是的,动态的更好,如果没有管理缓冲区和捕捉错误的愿望。但在猫头鹰身上,其实没有任何区别。