当我使用OpenCL和MQL5时,我的输出中得到零 . 我试图使用OpenCL的缓冲区传递数组 . 请参阅以下内容:
Print(CLBufferWrite(cl_price, price));
我的输出中零,这意味着没有复制 .price
来自 OnCalculation
函数,如下所述:
int OnCalculate(const int rates_total,
const int prev_calculated,
const int begin,
const double &price[])
我在我的内核中使用它:
const string cl_src =
//" #pragma OPENCL EXTENSION cl_khr_fp64 : enable \r\n"
"__kernel void CalculateSimpleMA(int rates_total, \r\n"
"int prev_calculated, \r\n"
"int begin, \r\n"
"int InpMAPeriod, \r\n"
"__global float *price, \r\n"
"__global float *storeValue \r\n"
") \r\n"
"{ \r\n"
" int i,limit; \r\n"
" if(prev_calculated==0)// first calculation \r\n"
"{ \r\n"
"limit=InpMAPeriod+begin; \r\n"
//"for(i=0;i<limit-1;i++) storeValue[i]=0.0; \r\n"
"float firstValue=0; \r\n"
"for(i=begin;i<limit;i++) firstValue+=price[i]; \r\n"
"firstValue/=InpMAPeriod; \r\n"
"storeValue[limit-1]=1;//firstValue; \r\n"
"} \r\n"
"else limit=prev_calculated-1; \r\n"
"for(i=limit;i<rates_total;i++) \r\n"
"storeValue[i]=1;//storeValue[i-1]+(price[i]-price[i-InpMAPeriod])/InpMAPeriod;\r\n"
"} \r\n";
请帮助我提出有关我所面临问题的建议