[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 456

 
sergeev писал(а)>>

让它成为一个专家,而不是一个脚本,并控制专家中的脚本功能代码的执行时间。时间到了--执行脚本代码。

我从这句话中理解到,你的终端是关闭的。 我在回答你--脚本不能运行终端本身。

正如你所写的,这就是对它的理解。如果这不是你的意思,那就更清楚地解释你自己。

这个想法的价值是什么? 如果你那么需要它,你就不会在很久以前让专业人员来设置它了......这是为你个人。

1.复制脚本的内容。

2.使用MetaEditor创建一个新的EA

3.插入脚本的代码

4.如何增加按时间工作的功能,在哪里插入(我不是程序员)?

我需要从9-00到9-01的职能工作时间

要编辑的脚本代码。 (提前感谢所有愿意帮助的人)

#财产版权 "Kim Igor V. aka KimIV"
#属性链接"https://www.mql5.com/go?link=http://www.kimiv.ru/"
#property show_inputs

#import "kernel32.dll"
int GetUserDefaultLCID()。
int GetLocaleInfoA(
int Locale, // Locale标识符
int LCType, // 信息的类型
string lpLCData, // 信息缓冲区的地址
int cchData // 缓冲区的大小
);
##进口

//+------ 脚本的外部参数 -------------------------------------------+
外部 bool bCommission = False; //卸下佣金
外部 bool bSwap = True; // 卸载交换器
外部 bool bComment = True; // 卸载注释
外部 bool bMagic = True; // 卸载 MagicNumber

// LCTYPE常量
#define LOCALE_SDECIMAL 0x000E // 用于十进制分隔符的字符。

//+----------------------------------------------------------------------------+
//| 脚本程序启动功能|
//+----------------------------------------------------------------------------+
空白启动() {
int dg, i, k=OrdersHistoryTotal()。
string FileName=DoubleToStr(AccountNumber(), 0)+".csv"; st;

FileDelete(FileName)。
st="Ticket;Open Time;Type;Lots;Item;Price;SL;TP;Close Time;Price"。
如果(bCommission)st=st+";Commission"。
如果(bSwap)st=st+";交换"。
st=st+";利润"; if (bSwap) st=st+";利润。
如果(bMagic)st=st+";Magic"。
如果(bComment)st=st+";评论"。
WriteingLineInFile(FileName, st)。
for (i=0; i<k; i++) {
如果(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)){
如果(OrderType()<2) {
dg= MarketInfo(OrderSymbol(), MODE_DIGITS)。
st= DoubleToStr(OrderTicket(), 0)+"; "。
st=st+TimeToStr(OrderOpenTime(), TIME_DATE|TIME_MINUTES)+"; "。
st=st+GetNameOP(OrderType())+"; "。
st=st+DoubleToStrLocale(OrderLots(), 2)+"; "。
st=st+OrderSymbol()+"; "。
st=st+DoubleToStrLocale(OrderOpenPrice(), dg)+"; "。
st=st+DoubleToStrLocale(OrderStopLoss(), dg)+"; "。
st=st+DoubleToStrLocale(OrderTakeProfit(), dg)+"; "。
st=st+TimeToStr(OrderCloseTime(), TIME_DATE|TIME_MINUTES)+"; "。
st=st+DoubleToStrLocale(OrderClosePrice(), dg)+"; "。
如果(bCommission)st=st+DoubleToStrLocale(OrderCommission(), 2)+";"。
如果(bSwap)st=st+DoubleToStrLocale(OrderSwap(), 2)+";"。
st=st+DoubleToStrLocale(OrderProfit(), 2)+"; "。
如果(bMagic)st=st+DoubleToStr(OrderMagicNumber(), 0)+";"。
如果(bComment)st=st+OrderComment()+";"。
WriteingLineInFile(FileName, st)。
}
Comment("Read: " ,i+1," from " ,k);
}
}
Comment("File written: " ,FileName);
}

//+----------------------------------------------------------------------------+
//|用系统转换数字值为字符串。
//|整数部分和小数部分之间的分隔符。
//| 参数: |
//| v - 类型为双数的数字
//| d - 小数点后的位数。
//+----------------------------------------------------------------------------+
string DoubleToStrLocale(double v, int d) {
如果(d<0)d=0。
如果(d>8)d=8。

string se=GetUserLocale(LOCALE_SDECIMAL), st=DoubleToStr(v, d);
if (se!=".") st=StrTran(st, ".", se);

return(st)。
}

//+----------------------------------------------------------------------------+
//| 返回交易操作的名称。
//| 参数: |
//| op - 交易操作标识符 |
//+----------------------------------------------------------------------------+
string GetNameOP(int op) {
switch (op) {
case OP_BUY : return("Buy");
case OP_SELL : return("Sell");
case OP_BUYLIMIT : return("Buy Limit");
case OP_SELLLIMIT : return("Sell Limit");
case OP_BUYSTOP : return("Buy Stop");
case OP_SELLSTOP : return("Sell Stop");
默认:返回("未知操作")。
}
}

//+----------------------------------------------------------------------------+
//|返回用户的区域设置。
//| 参数: |
//| LCType - 区域设置的类型(LCTYPE常数)|
//+----------------------------------------------------------------------------+
string GetUserLocale(int LCType) {
int loc=GetUserDefaultLCID()。
string str=" "。

GetLocaleInfoA(loc, LCType, str, 64)。

return(str)。
}

//+----------------------------------------------------------------------------+
//|替代子串|
//| 参数: |
//| str - 文本行,在此进行替换。
//| strfrom - 要被替换的子串。
//| strto - 替代子串|
//+----------------------------------------------------------------------------+
string StrTran(string str, string strfrom, string strto) {
int n;
string outstr="", tempstr;

for (n=0; n<StringLen(str); n++){
tempstr=StringSubstr(str, n, StringLen(strfrom))。
如果(tempstr==strfrom){
outstr=outstr+strto。
n=n+StringLen(strfrom)-1。
} else outstr=outstr+StringSubstr(str, n, 1);
}
return(outstr)。
}

//+----------------------------------------------------------------------------+
//|将字符串写入文件|
//| 参数: |
//| FileName - 文件名称 ||
//| text - string ||
//+----------------------------------------------------------------------------+
空白的WritingLineInFile(string FileName, string text) {
int file_handle=FileOpen(FileName, FILE_READ|FILE_WRITE, " " )。

如果(file_handle>0) {
FileSeek(file_handle, 0, SEEK_END)。
FileWrite(file_handle, text)。
FileClose(file_handle)。
}
}
//+----------------------------------------------------------------------------+

 
嗨,你能告诉我在MT4中把字体放在哪个文件夹里吗?
 
%windir%\字体
 

巴尔蒂克


string NeedTime="9:00";
datetime time0=0;

//----------------------------------------------------------------------------
void start() 
{

 if ( time0>=StrToTime( NeedTime)) return; // если сегодня уже выполняли код
 if (TimeCurrent()<=StrToTime( NeedTime)) return; // если требуемое время ещё не наступио
 time0=TimeCurrent(); // иначе запоминаем время

// и делаем то что надо

// бла бла бла остальной код

这条线是为正在学习编程的人准备的,而不是为那些要求你为他们写作的人准备的。

 
sergeev >>:
%windir% \ fonts

你能不能简单点,我不明白... 它是什么样的文件夹? 或者它到底是什么?

 
chepikds >>:

можно как-то попроще, я ничего не понял... это что за папка? или что это вообще такое?


实际上,"在MT4中放哪个文件夹的字体 "的问题也不是很清楚。请用俄语解释。:)

字体不存储在终端中。字体由操作系统处理。

 
sergeev >>:

вообще-то вопрос "в какую папку вставить шрифты в МТ4" тоже не очень понятен.

в терминале никакие шрифты не хранятся. шрифтами занимается операционная система.

好吧,我试试把它放在操作系统中...

 
谢谢你Sergeev 它正在工作
 
sergeev писал(а)>>

巴尔蒂克

这条线是为正在学习编程的人准备的,而不是为那些要求你为他们写作的人准备的。

谢谢你

我将学习 :)

 

我写了一个简单的EA,使用教程中的例子。EA应该在价格走出由两个MAs组成的区间时发出信号,也就是说,如果一个柱子在区间内打开并开始上升,其当前价格 走出区间,那么它就会发出提示音。

if (Bid > MA1 || Bid < MA2) // 检查范围通过
{
Alert("Price is out of range.");// Message
}。

如果价格高于范围,那么专家顾问会提醒我,但如果我这样做

if (Bid > MA1 && Fact_Up==true) // 检查向上传递
{
Fact_Dn=true; // 报告价格高于MA1
Fact_Up=false; // 不报告价格低于MA1
Alert("价格高于范围。");//消息
}
//--------------------------------------------------------------------
if (Bid < MA2 && Fact_Dn==true) // Check down pass
{
Fact_Up=true; // Report price below MA2
Fact_Dn=false; // Not report price above MA2
Alert("Price is below range." ); // Message
}

如果显示这个信息,那么它根本不清楚,什么时候给出信号--有时给出信号,有时不给出。

我搞不清楚 "Fact_Up==true "是什么,为什么需要它。

原因: