datetime ts=st+StartTime*60;// начало временного диапазона в секундах от 01.01.1970int tss=(int)ts;//преобразование в секундыAlert( "tss",tss);
datetime tsp=st+StopTime*60;// конец временного диапазона в секундах от 01.01.1970int tspp=(int)tsp;//преобразование в секунды
我同意关于int(round)的说法。谢谢你。明确的类型转换 也无妨。但它在没有明确的类型转换的情况下工作得很好。
我没有任何错误。该建筑是最新的。
谢谢你,MT5的更新帮助了我。该错误已经消失了。该版本是2013年7月23日的版本。顺便说一下,在旧版本中,没有类型转换 授权,这就是为什么我没有注意到它们。
谁会想到编译器会出现如此严重的错误。
谢谢你,MT5的更新帮助了我。这个错误已经消失了。 该版本是2013年7月23日的版本。 顺便说一下,在旧的版本中,没有类型转换 权证,所以我没有注意到它们。
谁会想到编译器会出现如此严重的错误。
需要找到时间间隔内的最小值。我编写了以下代码来寻找时间间隔中的最小值。
为了找到这个区间的最小值,我使用函数CopyLow。
然后,如果我理解正确,我得到一个一维数组Low[]。
我在用ArrayMinimum寻找其中的最小值。
我试图在今天设置一个开始时间为1小时,停止时间为2小时,并调用Alert检查min=-1。
问题:对于这个问题,为了解决这个问题,函数的选择是否正确,还是在某个地方有错误?我需要得到最低价格。
我试图在《手册》中查找,但这是一个基于类的例子,而我还没有准备好。
我想写一个不使用类的EA。我已经排除了所有不相干的东西,并为每个人获得了3张纸条。
我写了以下程序片段。
输入 int Kurtz_Period=5; //快速移动的Kurtz周期
输入int Mittel_Period=8 。
输入int Long_Period=13。
int maHandle; // 移动平均线 指标的手柄
double ma_buf[]; // 这是一个缓冲数组,用于存放MA函数的移动平均线读数。
// 然后它将被复制到相应的数组中。
datetime Time_buf[]; // 这是一个酒吧开放时间的数组。
datetime Time_[6][150]; // 酒吧开盘时间的数组
double Kurtz[6][70]; //这是一个快速移动Kurtz的数组,行号对应于使用的货币数量,而列是移动的计数。
double Mittel[6][70]; // 这是移动平均线Mittel的阵列。
double Long[6][70]; // 这是一个用于长周期滑动的数组 Long
string Name_symbol[6] = { "AUDUSD", "EURUSD", "GBPUSD", "USDCAD", "USDCHF", "USDJPY" } ; // 这是一个货币名称的文本阵列。
int nomer_instr; // 这是一个工具(货币)编号,只是为了按货币组织周期。
int OnInit()
{
//-----
//-------
}
空白的OnDeinit(const int reason)。
{
//---
ArrayFree(Time_buf)。
ArrayFree(ma_buf); // 将释放的数组清零。
//-------
}
空白的OnTick()
{
//---------------------
ArraySetAsSeries(time_buf, true); //将时间阵列的索引设置为timeseries的索引。
ArraySetAsSeries(ma_buf,true); //将数组ma_buf 的索引设置为时间序列的索引
for( nomer_instr=0; nomer_instr<=5; nomer_instr++ ) // 这是 对所有已用货币的循环 。
{
int digit = int( SymbolInfoInteger( Name_symbol[nomer_instr], SYMBOL_DIGITS)); // 这是货币报价中的数字。
CopyTime( Name_symbol[nomer_instr], PERIOD_M1,0,160,Time_buf); // 复制每个柱状图的历史时间数据到缓冲区。
for( i=1; i<=145; i++ ) Time[nomer_instr][i]=Time_buf[i]; // 第一根 柱子的开盘时间。
//#############################################################################################
//产生前3个滑动条的计数:Kurtz,Mittel,Long
manHandle = iMA( Name_symbol[nomer_instr],PERIOD_M1, Kurtz_Period , 0, MODE_SMMA, PRICE_CLOSE );
如果( CopyBuffer(maHandle,0,0,155,ma_buf)<0 )
{
Alert("复制指标缓冲区时出错---PERIOD_M1,Kurtz_Period---移动平均线---错误号。",GetLastError())。
返回。
}
for( i=1; i<=45; i++ ) Kurtz[nomer_instr][ i ] = NormalizeDouble( ma_buf[i], digit);
/*
//===============================================================
// BLOCK检查时间序列中的条形偏移和数字归一化的准确性
//快速移动的MA-5
if( Multi_Torgi == 0 && Optim_parametrov == nomer_instr ) // 这是一个选择专家顾问模式的键,现在它处于调试模式。
{
for( i=1; i<=5; i++ )
{
if(i==1) Alert("====================");
if(i==1) Alert(" 第1 条 的 开盘时间。Time[nomer_instr][1]=",Time[nomer_instr][1] );
Alert(" bar number:i=",i,", MA_buf[i]=",MA_buf[i],", Kurtz[nomer_instr][i]=",Kurtz[nomer_instr][i]);
}
}
//=================================================================
*/
//---------------------------------------------------------------------------------------------------------------------------
maHandle = iMA( Name_symbol[nomer_instr],PERIOD_M1, Mittel_Period, 0, MODE_SMMA, PRICE_CLOSE ) 。
如果(CopyBuffer(maHandle,0,0,155,ma_buf)<0)
{
Alert("复制指标缓冲区时出错 ===PERIOD_M1, Mittel_Period,===移动平均线 - 错误编号。",GetLastError())。
返回。
}
for( i=1; i<=45; i++ ) Mittel[nomer_instr][ i ] = NormalizeDouble( ma_buf[i], digit);
//----------------------------------------------------------------------------------------------------------------------
maHandle = iMA( Name_symbol[nomer_instr],PERIOD_M1, Long_Period, 0, MODE_SMMA, PRICE_CLOSE ) 。
如果(CopyBuffer(maHandle,0,0,155,ma_buf)<0)
{
Alert("复制指标缓冲区时出错 ===PERIOD_M1, Long_Period,===Moving Average - 错误编号。",GetLastError())。
返回。
}
for( i=1; i<=45; i++ ) Long[nomer_instr][ i ] = NormalizeDouble( ma_buf[i], digit);
// 形成前3张幻灯片计数的区块的末端:Kurtz,Mittel,Long
//#############################################################################################
}// 按使用中的货币结束循环
//============================================================
其他项目运营商
//============================================================
//-----------------------------------------
}// End ofOnTick()
//+------------------------------------------------------------------+
这个程序在编译时没有检测到错误,但当在日志中对每个滑移进行测试时,有一个
错误信息:4806是 "未找到要求的数据"。
请告诉我哪里出了错误。
谢谢你。
你不明白类型化 的原则吗?它是如此简单。
现在看来很清楚了)事实证明,int st操作数的类型比datetime tp[]小。
这就是为什么在操作中没有转换为秒的原因。
我试图找到时间间隔中的最小值。我不确定我的做法是否正确。你能看到之前的帖子吗?
如果没有新的刻度线,如何调用Alert或Comment来做周末检查?
需要找到时间间隔内的最小值。我编写了以下代码来寻找时间间隔中的最小值。
为了找到这个区间的最小值,我使用函数CopyLow。
然后,如果我理解正确,我得到一个一维数组Low[]。
我在用ArrayMinimum寻找其中的最小值。
我试图在今天设置一个开始时间为1小时,停止时间为2小时,并调用Alert检查min=-1。
问题:对于这个问题,为了解决这个问题,函数的选择是否正确,还是在某个地方有错误?你需要获得最低价格。
请仔细阅读。
返回值。
该函数考虑到数组的序列性,返回找到的元素的索引 。如果失败,该函数返回-1。
因此,它应该是这样的。
在周末及以后的时间里进行检查和测试,你必须要有脚本。
在周末及以后的时间里进行检查和测试,你必须要有脚本。