int hF; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--------------Set default vaules for all new order requests mReq.action=TRADE_ACTION_DEAL; mReq.magic=777; mReq.symbol=Symbol(); // Trade symbol mReq.deviation=3; // Maximal possible deviation from the requested price mReq.type_filling=ORDER_FILLING_AON; // Order execution type mReq.type_time=ORDER_TIME_GTC; // Order execution time mReq.comment="MAMASKHA_"+IntegerToString(PeriodSeconds()/60,2); //----------------------- Set Volume pi Print ("----- Start init ---");
oldTT=TimeCurrent()+51;TimeToStruct(oldTT,oldT); oldTT-=oldT.hour; oldTT-=oldT.min; printf("%02d.%02d.%4d %2d:%2d %3d",oldT.day,oldT.mon, oldT.year,oldT.hour,oldT.min, SymbolInfoInteger(Symbol(),SYMBOL_TRADE_STOPS_LEVEL)); StringConcatenate(FName,mReq.comment,"_",oldT.year,"x",oldT.mon,"x", oldT.day,"_",oldT.hour,"_",oldT.min,".csv"); if (File) {hF=FileOpen(FName, FILE_WRITE|FILE_CSV|FILE_COMMON); if (hF<-1) Print ("Ошибка открытия файла ",FName," ", GetLastError()); if (File) FileWrite(hF,oldT.day,oldT.mon, oldT.year,oldT.hour,oldT.min,"I" ); Print ("Start on ",FName); } Print ("Start ",mReq.comment); return(0); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { if (File) FileClose(hF); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() {
bool poz=true;
int i,per=PeriodSeconds();
MqlTick tick; //------------------ if(!SymbolInfoTick(Symbol(),tick)) { Print("Failed to get Symbol info!",per); return; }
真可惜,我没有专门为我准备的去产能和盈利功能。
给予1.#INF。
Servicedesk已经写了...
而且你不能像这样在点的后面加一个零。
无论你如何拼写,它仍然是1.#INF。
无论是10.还是10.0,似乎都没有任何区别。
无论你怎么拼写,它仍然是1.#INF。
10.或10.0似乎没有任何区别。
我刚刚检查了表达方式。
它没有给你一个错误,它工作得很好。
刚刚检查了表达方式。
没有错误,一切运作正常。
当然,这很好,而且会很好!"。
我正在使用两个图书馆....我不会描述整个情况。
当然,这很好,而且会很好!"。
在use....,我有两个库我不会描述整个情况。
那为什么要问为什么会有错误,你举的例子中的表达没有错误,错误一定是在别的地方。
我不是在问)。
那么你的帖子的意义是什么呢?
那么你的帖子的意义是什么呢?
你在哪里看到了一个问题? )))
我决定测试一个策略。但不知何故,专家顾问在测试器中开始表现得很奇怪。
我想长期使用它。虽然该算法几乎是黄牛党。;)
所以我决定检查一下进入专家顾问的数据。
我开始了一个朴实无华的专家顾问
input bool File=true;
MqlTradeRequest mReq;
MqlTradeResult mRez;
int handle1,handle2;
double iBuffer1[],iBu1[];
double iBuffer2[],iBu2[];
double vol[22],OTS;
MqlDateTime newT,oldT;
datetime newTT,oldTT;
string FName;
int hF;//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--------------Set default vaules for all new order requests
mReq.action=TRADE_ACTION_DEAL;
mReq.magic=777;
mReq.symbol=Symbol(); // Trade symbol
mReq.deviation=3; // Maximal possible deviation from the requested price
mReq.type_filling=ORDER_FILLING_AON; // Order execution type
mReq.type_time=ORDER_TIME_GTC; // Order execution time
mReq.comment="MAMASKHA_"+IntegerToString(PeriodSeconds()/60,2);
//----------------------- Set Volume pi
Print ("----- Start init ---");
oldTT=TimeCurrent()+51;TimeToStruct(oldTT,oldT);
oldTT-=oldT.hour; oldTT-=oldT.min;
printf("%02d.%02d.%4d %2d:%2d %3d",oldT.day,oldT.mon,
oldT.year,oldT.hour,oldT.min,
SymbolInfoInteger(Symbol(),SYMBOL_TRADE_STOPS_LEVEL));
StringConcatenate(FName,mReq.comment,"_",oldT.year,"x",oldT.mon,"x",
oldT.day,"_",oldT.hour,"_",oldT.min,".csv");
if (File) {hF=FileOpen(FName, FILE_WRITE|FILE_CSV|FILE_COMMON);
if (hF<-1) Print ("Ошибка открытия файла ",FName," ",
GetLastError());
if (File) FileWrite(hF,oldT.day,oldT.mon,
oldT.year,oldT.hour,oldT.min,"I"
);
Print ("Start on ",FName);
}
Print ("Start ",mReq.comment);
return(0);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
if (File) FileClose(hF);
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
bool poz=true;
int i,per=PeriodSeconds();
MqlTick tick;//------------------
if(!SymbolInfoTick(Symbol(),tick))
{
Print("Failed to get Symbol info!",per);
return;
}
newTT=tick.time;
if(newTT<=oldTT+per+1)
{if (diskret)return;}
else
{
MqlRates rates[];
int copied=CopyRates(Symbol(),0,0,1,rates);
if(copied<=0)
Print("Ошибка копирования ценовых данных ",GetLastError());
else oldTT=rates[0].time;
TimeToStruct(oldTT,oldT);
printf("%02d.%02d.%4d %2d:%2d",oldT.day,oldT.mon,
oldT.year,oldT.hour,oldT.min);
TimeToStruct(newTT,newT);
printf(" New %02d.%02d.%4d %2d:%2d",newT.day,newT.mon,
newT.year,newT.hour,newT.min);
if (File) FileWrite(hF,oldT.day,oldT.mon,
oldT.year,oldT.hour,oldT.min,"I",
tick.ask,tick.bid,tick.last,tick.volume);
}
return;
}
并得到了一个奇怪的日志。谁能告诉我跳过数据期的原因?
还有一件事--在该目录中必须创建的文件(xp2sp)没有被检测到。
请澄清一下,我已经很久没有研究过MT5了,我完全迷失了......
:(