任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 1129 1...112211231124112511261127112811291130113111321133113411351136...1178 新评论 Roni Iron 2017.02.22 19:06 #11281 Vladimir: 有一种可能性,如果从采取和纠正源代码的角度来看,EA(或脚本)是由你支配的。你需要在所有警报周围设置一个条件,检查按钮是否被按下。如果不按下按钮,就不要拨打报警电话。谢谢弗拉基米尔-- 我想我要么使用你的方法,要么把整个EA放在这个条件下。感谢维塔利-波斯托拉奇--我将研究你的建议。我还没有研究过mql5。 Maxim Kuznetsov 2017.02.22 19:23 #11282 miss.natasha:我需要把数据写入一个hst文件,这样我就可以用这些数据来建立一个自治图。我已经挣扎了两天,但没有任何效果。代码。#property copyright "Copyright 2016, MetaQuotes Software Corp."#property link "https://www.mql5.com"#property version "1.00"#property strictulong last_fpos=0; //int HandleHistory=-1;//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+void OnStart() { string symbol=Symbol(); int per=Period()*9; ResetLastError(); if(CreateHeader()==true)//если создали заголовок { HandleHistory=FileOpenHistory(symbol+(string)per+".hst",FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_SHARE_READ|FILE_ANSI); if(HandleHistory!=INVALID_HANDLE) { for(int i=199;i>0;i--)//заполняем данными { MqlRates r; r.time=Time[i];//просто пытаюсь записать, это так для примера r.open=Open[i];//просто пытаюсь записать, это так для примера r.low=Low[i]; r.high=High[i]; r.close=Close[i]; r.tick_volume=(long)10; r.spread=0; r.real_volume=(long)10; uint byteswritten=FileWriteStruct(HandleHistory,r); Print("FileOpen OK ",byteswritten," ",Time[i]); } FileClose(HandleHistory); // FileFlush(HandleHistory); } else Print("Операция FileOpen неудачна, ошибка ",GetLastError()); }// long id=ChartOpen(symbol,per);//Alert(id); }//+------------------------------------------------------------------+bool CreateHeader()//создаем файл с историей hst(заголовок) { int file_version=401; string c_copyright; string c_symbol=Symbol(); int i_period=Period()*9; int i_digits=Digits; int i_unused[13];//--- ResetLastError(); HandleHistory=FileOpenHistory(c_symbol+(string)i_period+".hst",FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_SHARE_READ|FILE_ANSI); if(HandleHistory<0) { Print("Error open ",c_symbol+(string)i_period,".hst file ",GetLastError()); return(false); } c_copyright="(C)opyright 2003, MetaQuotes Software Corp."; ArrayInitialize(i_unused,0);//--- write history file header FileWriteInteger(HandleHistory,file_version,LONG_VALUE); FileWriteString(HandleHistory,c_copyright,64); FileWriteString(HandleHistory,c_symbol,12); FileWriteInteger(HandleHistory,i_period,LONG_VALUE); FileWriteInteger(HandleHistory,i_digits,LONG_VALUE); FileWriteInteger(HandleHistory,0,LONG_VALUE); FileWriteInteger(HandleHistory,0,LONG_VALUE); FileWriteArray(HandleHistory,i_unused,0,13); return(true); }执行的结果是创建了一个带有历史记录的文件,但没有创建自主图。以下是图表上的信息由于某些原因,这些数据是2003年的!结果,当我启动图表时,我得到一个错误HistoryBase: 196个错误在'NZDCHF45'。我明白,我写错了什么。我不知道如何正确写,我的资料太少了。谁知道呢--请告知。 我不记得MQ正式开放了.hst文件结构(如果他们有,请查看官方规格)。 也许这是一个非常、非常老的项目的摘录(C,gcc)。/* .hst file header*/ struct HstHeader { uint32_t version; // +0 4 LE : database version char copyright[64]; // +4 64 : copyright data char symbol[12]; // +68 12 : symbol (EURUSD..) uint32_t period; // +80 4 LE : timeframe (sec. in period) uint32_t digits; // +84 4 LE : decimals after . datetime timesign; // +88 4 LE : creation time sign. datetime last_sync; // +92 4 LE : last sync. timestamp uint8_t unused[52]; // +96 52 : reserved for feauture use // total 148 bytes, packed, aligned by 1};/* .hst bar array (file payload)*/// when HstHeader.version==400 struct HstRates400 { datetime ctm; // +0 4 LE : start (creation) time double open; // +4 8 LE : open price double low; // +12 8 LE : lowest price double high; // +20 8 LE : highst price double close; // +28 8 LE : close price double volume; // +36 8 LE : volume (nr of ticks) // total 44 bytes,packed, aligned by 1} __attribute__((packed));// when HstHeader.version==401 struct HstRates401 { datetime ctm; // +0 8 LE : bar start time (with ms?) double open; // +8 8 LE : open price double low; // +16 8 LE : lowest price double high; // +24 8 LE : highst price double close; // +32 8 LE : close price uint64_t volume; // +40 8 LE : volume (nr of ticks) uint32_t spread; // +48 4 LE : spread long real_volume; // +52 8 LE : real volume // total 60 bytes,packed,aligned by 1} __attribute__((packed)); 现在,过了很多年,我不确定高/低是否应该按这个顺序,但请检查你的结构 至少是相同大小 的(头和记录)。 Any rookie question, so .hst file format . Candle sticks with custom Mickey Moose 2017.02.22 21:18 #11283 大家好,只是继续完善我们已经有的东西我们有一个不规则的订单网格和一条水平线,它可以在任何地方我们需要落实这一点。如果价格低于该线,则关闭所有订单困难有以下几点 1)如果订单是非统一类型的,并且在设置线的时候已经完成了一切,而不是在我们打上标记和设置线的时候(在这种情况下,我们也应该设置开/关标志)。2) 按类型在线的右上方实施铭文(如果订单在这个价格被关闭,结果对余额来说是一样的,也就是说,我们必须改变每一个刻度的显示,在移动线的时候也是如此;如果是手动下单,它一般类似于拖曳止损或sl,只是浮动的,最初有可能出现错误的触发)机器人就在那里,除了数字标记外,一切都已经画好了,问题在于正确地分配数值和对整个网格进行信息处理。 附加的文件: USDCHFH1.png 26 kb Evgeny Belyaev 2017.02.23 15:43 #11284 trader781:1)如果订单是不规则的类型 这是我第一次听说他们。 Nauris Zukas 2017.02.23 16:48 #11285 你好。我不明白为什么iTime有时会显示错误的时间。在打开一个新的蜡烛时,PERIOD_H1应该在Print(iTime(NULL,PERIOD_M1,30))日志中显示时间。在测试中,它能正确显示一切,但在现实中,时间有时甚至相差几个小时。为什么会这样呢? Vitaly Muzichenko 2017.02.23 17:12 #11286 Nauris Zukas: 你好。我不明白为什么iTime有时会给出错误的时间。新蜡烛的开盘PERIOD_H1应该在日志中显示时间 Print(iTime(NULL,PERIOD_M1,30))。在测试中,它能正确显示一切,但在现实中,时间有时甚至相差几个小时。为什么会这样呢?使用CopyTime,我在构建图形对象时也注意到这个问题,CopyTime 解决了这个问题datetime TM[];if(CopyTime(Symbol(),Period(),0,1,TM)<0) return; TIME0=TM[0]; Nauris Zukas 2017.02.23 17:33 #11287 Vitaly Muzichenko:使用CopyTime,我在构建图形对象时也注意到这个问题,CopyTime 解决了这个问题datetime TM[];if(CopyTime(Symbol(),Period(),0,1,TM)<0) return; TIME0=TM[0];谢谢你! Mickey Moose 2017.02.23 21:50 #11288 Evgeny Belyaev: 这是我第一次听说他们。 我只需要一个浮动的取值,它与一个物体相联系。 igrok333 2017.02.24 06:27 #11289 如何使我的指标的刻度显示小数点后5位? 这里,图表有5位数字,指标有4位。 Artyom Trishkin 2017.02.24 06:36 #11290 igrok333: 如何使我的指标的刻度显示小数点后5位? 这里,图表有5位数字,指标有4位。IndicatorSetInteger(INDICATOR_DIGITS,Digits()); 1...112211231124112511261127112811291130113111321133113411351136...1178 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
有一种可能性,如果从采取和纠正源代码的角度来看,EA(或脚本)是由你支配的。你需要在所有警报周围设置一个条件,检查按钮是否被按下。如果不按下按钮,就不要拨打报警电话。
谢谢弗拉基米尔-- 我想我要么使用你的方法,要么把整个EA放在这个条件下。
感谢维塔利-波斯托拉奇--我将研究你的建议。我还没有研究过mql5。
我需要把数据写入一个hst文件,这样我就可以用这些数据来建立一个自治图。
我已经挣扎了两天,但没有任何效果。
代码。
#property link "https://www.mql5.com"
#property version "1.00"
#property strict
ulong last_fpos=0; //
int HandleHistory=-1;
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
string symbol=Symbol();
int per=Period()*9;
ResetLastError();
if(CreateHeader()==true)//если создали заголовок
{
HandleHistory=FileOpenHistory(symbol+(string)per+".hst",FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_SHARE_READ|FILE_ANSI);
if(HandleHistory!=INVALID_HANDLE)
{
for(int i=199;i>0;i--)//заполняем данными
{
MqlRates r;
r.time=Time[i];//просто пытаюсь записать, это так для примера
r.open=Open[i];//просто пытаюсь записать, это так для примера
r.low=Low[i];
r.high=High[i];
r.close=Close[i];
r.tick_volume=(long)10;
r.spread=0;
r.real_volume=(long)10;
uint byteswritten=FileWriteStruct(HandleHistory,r);
Print("FileOpen OK ",byteswritten," ",Time[i]);
}
FileClose(HandleHistory);
// FileFlush(HandleHistory);
}
else Print("Операция FileOpen неудачна, ошибка ",GetLastError());
}
// long id=ChartOpen(symbol,per);
//Alert(id);
}
//+------------------------------------------------------------------+
bool CreateHeader()//создаем файл с историей hst(заголовок)
{
int file_version=401;
string c_copyright;
string c_symbol=Symbol();
int i_period=Period()*9;
int i_digits=Digits;
int i_unused[13];
//---
ResetLastError();
HandleHistory=FileOpenHistory(c_symbol+(string)i_period+".hst",FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_SHARE_READ|FILE_ANSI);
if(HandleHistory<0)
{
Print("Error open ",c_symbol+(string)i_period,".hst file ",GetLastError());
return(false);
}
c_copyright="(C)opyright 2003, MetaQuotes Software Corp.";
ArrayInitialize(i_unused,0);
//--- write history file header
FileWriteInteger(HandleHistory,file_version,LONG_VALUE);
FileWriteString(HandleHistory,c_copyright,64);
FileWriteString(HandleHistory,c_symbol,12);
FileWriteInteger(HandleHistory,i_period,LONG_VALUE);
FileWriteInteger(HandleHistory,i_digits,LONG_VALUE);
FileWriteInteger(HandleHistory,0,LONG_VALUE);
FileWriteInteger(HandleHistory,0,LONG_VALUE);
FileWriteArray(HandleHistory,i_unused,0,13);
return(true);
}
执行的结果是创建了一个带有历史记录的文件,但没有创建自主图。
以下是图表上的信息
由于某些原因,这些数据是2003年的!
结果,当我启动图表时,我得到一个错误HistoryBase: 196个错误在'NZDCHF45'。
我明白,我写错了什么。我不知道如何正确写,我的资料太少了。谁知道呢--请告知。
也许这是一个非常、非常老的项目的摘录(C,gcc)。
/* .hst file header
*/
struct HstHeader {
uint32_t version; // +0 4 LE : database version
char copyright[64]; // +4 64 : copyright data
char symbol[12]; // +68 12 : symbol (EURUSD..)
uint32_t period; // +80 4 LE : timeframe (sec. in period)
uint32_t digits; // +84 4 LE : decimals after .
datetime timesign; // +88 4 LE : creation time sign.
datetime last_sync; // +92 4 LE : last sync. timestamp
uint8_t unused[52]; // +96 52 : reserved for feauture use
// total 148 bytes, packed, aligned by 1
};
/* .hst bar array (file payload)
*/
// when HstHeader.version==400
struct HstRates400 {
datetime ctm; // +0 4 LE : start (creation) time
double open; // +4 8 LE : open price
double low; // +12 8 LE : lowest price
double high; // +20 8 LE : highst price
double close; // +28 8 LE : close price
double volume; // +36 8 LE : volume (nr of ticks)
// total 44 bytes,packed, aligned by 1
} __attribute__((packed));
// when HstHeader.version==401
struct HstRates401 {
datetime ctm; // +0 8 LE : bar start time (with ms?)
double open; // +8 8 LE : open price
double low; // +16 8 LE : lowest price
double high; // +24 8 LE : highst price
double close; // +32 8 LE : close price
uint64_t volume; // +40 8 LE : volume (nr of ticks)
uint32_t spread; // +48 4 LE : spread
long real_volume; // +52 8 LE : real volume
// total 60 bytes,packed,aligned by 1
} __attribute__((packed));
大家好,只是继续完善我们已经有的东西
我们有一个不规则的订单网格和一条水平线,它可以在任何地方
我们需要落实这一点。
如果价格低于该线,则关闭所有订单
困难有以下几点
1)如果订单是非统一类型的,并且在设置线的时候已经完成了一切,而不是在我们打上标记和设置线的时候(在这种情况下,我们也应该设置开/关标志)。
2) 按类型在线的右上方实施铭文(如果订单在这个价格被关闭,结果对余额来说是一样的,也就是说,我们必须改变每一个刻度的显示,在移动线的时候也是如此;如果是手动下单,它一般类似于拖曳止损或sl,只是浮动的,最初有可能出现错误的触发)
机器人就在那里,除了数字标记外,一切都已经画好了,问题在于正确地分配数值和对整个网格进行信息处理。
1)如果订单是不规则的类型
你好。我不明白为什么iTime有时会给出错误的时间。新蜡烛的开盘PERIOD_H1应该在日志中显示时间 Print(iTime(NULL,PERIOD_M1,30))。在测试中,它能正确显示一切,但在现实中,时间有时甚至相差几个小时。为什么会这样呢?
使用CopyTime,我在构建图形对象时也注意到这个问题,CopyTime 解决了这个问题
if(CopyTime(Symbol(),Period(),0,1,TM)<0) return;
TIME0=TM[0];
使用CopyTime,我在构建图形对象时也注意到这个问题,CopyTime 解决了这个问题
if(CopyTime(Symbol(),Period(),0,1,TM)<0) return;
TIME0=TM[0];
这是我第一次听说他们。
这里,图表有5位数字,指标有4位。
如何使我的指标的刻度显示小数点后5位?
这里,图表有5位数字,指标有4位。