一个顾问,会在发射后在五分钟的图表上跟随汇率的情况。 - 页 6 1234567891011121314 新评论 dertop 2008.03.19 07:21 #51 日子过得不错。 能否告知:有一个脚本能及时在文件中写入历史记录,但当文件被打开时,记录并没有去....。你可能知道或已经看到的脚本被称为currency_loader //从M1加载历史数据 空白加载M1(){/1 int MaxBars=MaxBarsInFile。 if(LoadM1 && iBars(Symbol(),PERIOD_M1)>BarsMin){ArrayCopyRates(ArrayM1,Symbol(),PERIOD_M1); ArrSizeM1=ArrayRange(ArrayM1,0); } 如果(ArrSizeM1>1){/2 如果(MaxBars>ArrSizeM1){MaxBars=ArrSizeM1;}。 for(i2=1; i2<=Tryes; i2++){/3 h1 = FileWrite(FileNameM1,FILE_WRITE|FILE_CSV)。 if(h1==-1){LastError=GetLastError();Info("1.2",1"," 打开文件时有一个错误:"+FileNameM1+" 在 "+i2+" 尝试 "+ErrorDescription(LastError));Pause=Pause+Pause; Sleep(Pause); continue; }else{Info("1。2",2", "文件 "+文件名M1+"成功打开");};}。 FileWrite(h1,FirstLine)。 for (i=MaxBars-1; i>=0; i-- ) {/4 if(!USRegionSet){ CString=CString+TimeToStr(ArrayM1[i][0],TIME_DATE)+"; // 酒吧的日期 CString=CString+TimeToStr(ArrayM1[i][0],TIME_MINUTES)+","; //酒吧的时间 } 否则{ BarTime=ArrayM1[i][0]; CString=CString+GetUSFormatTime(BarTime)+" "; // 酒吧的日期 BarTime=0。 } CString=CString+DoubleToStr(ArrayM1[i][1],iDigits)+","; //开盘价 CString=CString+DoubleToStr(ArrayM1[i][3],iDigits)+","; // 高价格 CString=CString+DoubleToStr(ArrayM1[i][2],iDigits)+","; // 低价格 CString=CString+DoubleToStr(ArrayM1[i][4],iDigits)+"; // 收盘价 FileWrite(h1,CString)。 CString=""。 }//4 FileClose(h1)。 LCM1 = iTime(Symbol(),PERIOD_M1,0)。 返回。 }//3 }//2 }//1 据我所知,手柄有问题,但问题在哪里呢? An advisor that would 从 MQL4 迁移到 MQL5 交易员生存诀窍: 若干测试的比较报告 Aleksandr 2008.03.19 19:34 #52 经过测试的EA,在以下参数下显示了利润,以下是代码。 //+------------------------------------------------------------------+ //| Expert-000001.mq4 | //| Copyright © 2008, salesman*** | //| http://www.forexgrand.ru | //+------------------------------------------------------------------+ #property copyright "Copyright © 2008, salesman***" #property link "http://www.forexgrand.ru" extern double StopLoss=30; // Stop Loss extern double TakeProfit=3; // Take Profit extern double Lots=0.02; // Объем сделки в % extern double Slippage =4; // Максимальное отклонение от запрошенной цены extern double Delta=30; // Сигнал приказа в пунктах extern double MagicNumber ; // Order ID int ticket; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- if (iOpen(NULL,5,0)-Bid>Delta*Point) //Цена упала больше Delta пунктов { ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,"Купил",MagicNumber,11111,Green); } if (iOpen(NULL,5,0)-Bid<Delta*Point) //Цена выросла больше Delta пунктов { ticket=OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Ask-StopLoss*Point,Bid+TakeProfit*Point,"Продал",MagicNumber,22222,Green); } //---- return(0); } //+------------------------------------------------------------------+ 仍然无法工作!!!! 请帮助我了解原因是什么。 Rid 2008.03.19 20:59 #53 那么你是如何测试的呢?而且,如果它不工作,怎么会显示出利润呢?那它怎么会不起作用呢?杂志上印的是什么?你在哪里测试的,在测试器中吗?还是在网上? 另外,看看OrdersTotal函数,它的作用和它的插入方式:.... 例如,int total=OrdersTotal(); if(total<1) { igor 2008.03.19 21:05 #54 int start() { //---- if (iOpen(NULL,5,0)-Bid>Delta*Point) //价格下跌超过Delta点 { ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-StopLoss*Point, Ask+TakeProfit*Point, "Bought",MagicNumber, 11111, Green); } if (iOpen(NULL,5,0)-Bid<Delta*Point) //价格上涨超过Delta点 { ticket=OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point, "Sold",MagicNumber,22222,Green); } //---- return(0); } //+------------------------------------------------------------------+ 而你是一个爱出风头的人,明白吗?它可以工作,但就是很愚蠢。 把它复制到MetaEditor,否则你又会把 "+"和"-"搞混。 An advisor that would [WARNING CLOSED!] Any newbie OrderSend and stops igor 2008.03.19 21:14 #55 据我所知,问题出在手柄的某个地方,但问题出在哪里...... 下面是一个获得Handle的例子 int hwnd1 =WindowHandle(Symbol(), Period())。 我没有注意到你的代码中有类似的东西。 如果一个 "csv "文件被Excel打开,它被锁定,文件没有写入权限,这是不是一个谜? Aleksandr 2008.03.19 21:21 #56 rid: 那么你是如何测试的呢?而且,如果它不工作,怎么会显示出利润呢?那它怎么会不起作用呢?杂志上印的是什么?你在哪里测试的,在测试器中吗?还是在网上? 另外,看看OrdersTotal函数,它的作用和它的插入方式:.... 例如,int total=OrdersTotal(); if(total<1) { 用测试器测试,还能怎样?:) 显示利润504,交易次数432,缩水788美元,7.31%。在设置中,我把m5放在磅上,17/03/08 - 19/03/08。 而当我在图表上运行时,我的交易条件得到了满足,但专家顾问没有做任何事情.......。 Aleksandr 2008.03.19 21:34 #57 zhuki: int start() { //---- 如果(iOpen(NULL,5,0)-Bid>Delta*Point) //价格下跌超过Delta点 { ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point, "Bought",MagicNumber,11111,Green) } 如果(iOpen(NULL,5,0)-Bid<Delta*Point) //价格上涨超过Delta点 { ticket=OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point, "Sold",MagicNumber,2222,Green)。 } //---- return(0); } //+------------------------------------------------------------------+ 而你是一个顽固的人,明白吗?这很有效,但这太愚蠢了。 把它复制到MetaEditor中,否则你又会把 "+"和"-"弄混。 Urgh!!!!!!非常感谢你。它正在发挥作用。 igor 2008.03.19 21:42 #58 当你完成你的GRAAL 时,至少要分享这个想法。 Aleksandr 2008.03.20 17:37 #59 我不好意思问:))))。 我怎样才能使我的专家顾问只开一个交易,在它完成之前不开其他交易? Alexander Sevastyanov 2008.03.20 18:00 #60 salesman77: 我不好意思问:))))。如何让我的专家顾问只开一个交易,并且在交易结束前不开其他交易? 在一个循环中安排搜索所有开放的位置,并检查它们的当前符号和神奇数字。如果没有发现,那么我们就打开绿灯。Kodobase中充满了这样的例子,几乎在每一个专家顾问中都有。 1234567891011121314 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
日子过得不错。
能否告知:有一个脚本能及时在文件中写入历史记录,但当文件被打开时,记录并没有去....。你可能知道或已经看到的脚本被称为currency_loader
//从M1加载历史数据
空白加载M1(){/1
int MaxBars=MaxBarsInFile。
if(LoadM1 && iBars(Symbol(),PERIOD_M1)>BarsMin){ArrayCopyRates(ArrayM1,Symbol(),PERIOD_M1); ArrSizeM1=ArrayRange(ArrayM1,0); }
如果(ArrSizeM1>1){/2
如果(MaxBars>ArrSizeM1){MaxBars=ArrSizeM1;}。
for(i2=1; i2<=Tryes; i2++){/3
h1 = FileWrite(FileNameM1,FILE_WRITE|FILE_CSV)。
if(h1==-1){LastError=GetLastError();Info("1.2",1"," 打开文件时有一个错误:"+FileNameM1+" 在 "+i2+" 尝试 "+ErrorDescription(LastError));Pause=Pause+Pause; Sleep(Pause); continue; }else{Info("1。2",2", "文件 "+文件名M1+"成功打开");};}。
FileWrite(h1,FirstLine)。
for (i=MaxBars-1; i>=0; i-- ) {/4
if(!USRegionSet){
CString=CString+TimeToStr(ArrayM1[i][0],TIME_DATE)+"; // 酒吧的日期
CString=CString+TimeToStr(ArrayM1[i][0],TIME_MINUTES)+","; //酒吧的时间
}
否则{
BarTime=ArrayM1[i][0];
CString=CString+GetUSFormatTime(BarTime)+" "; // 酒吧的日期
BarTime=0。
}
CString=CString+DoubleToStr(ArrayM1[i][1],iDigits)+","; //开盘价
CString=CString+DoubleToStr(ArrayM1[i][3],iDigits)+","; // 高价格
CString=CString+DoubleToStr(ArrayM1[i][2],iDigits)+","; // 低价格
CString=CString+DoubleToStr(ArrayM1[i][4],iDigits)+"; // 收盘价
FileWrite(h1,CString)。
CString=""。
}//4
FileClose(h1)。
LCM1 = iTime(Symbol(),PERIOD_M1,0)。
返回。
}//3
}//2
}//1
据我所知,手柄有问题,但问题在哪里呢?
仍然无法工作!!!!
请帮助我了解原因是什么。
那么你是如何测试的呢?而且,如果它不工作,怎么会显示出利润呢?那它怎么会不起作用呢?杂志上印的是什么?你在哪里测试的,在测试器中吗?还是在网上?
另外,看看OrdersTotal函数,它的作用和它的插入方式:....
例如,int total=OrdersTotal(); if(total<1) {
{
//----
if (iOpen(NULL,5,0)-Bid>Delta*Point) //价格下跌超过Delta点
{
ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-StopLoss*Point, Ask+TakeProfit*Point, "Bought",MagicNumber, 11111, Green);
}
if (iOpen(NULL,5,0)-Bid<Delta*Point) //价格上涨超过Delta点
{
ticket=OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point, "Sold",MagicNumber,22222,Green);
}
//----
return(0);
}
//+------------------------------------------------------------------+
而你是一个爱出风头的人,明白吗?它可以工作,但就是很愚蠢。 把它复制到MetaEditor,否则你又会把 "+"和"-"搞混。
据我所知,问题出在手柄的某个地方,但问题出在哪里......下面是一个获得Handle的例子
int hwnd1 =WindowHandle(Symbol(), Period())。
我没有注意到你的代码中有类似的东西。
如果一个 "csv "文件被Excel打开,它被锁定,文件没有写入权限,这是不是一个谜?
那么你是如何测试的呢?而且,如果它不工作,怎么会显示出利润呢?那它怎么会不起作用呢?杂志上印的是什么?你在哪里测试的,在测试器中吗?还是在网上?
另外,看看OrdersTotal函数,它的作用和它的插入方式:....
例如,int total=OrdersTotal(); if(total<1) {
显示利润504,交易次数432,缩水788美元,7.31%。在设置中,我把m5放在磅上,17/03/08 - 19/03/08。
而当我在图表上运行时,我的交易条件得到了满足,但专家顾问没有做任何事情.......。
int start()
{
//----
如果(iOpen(NULL,5,0)-Bid>Delta*Point) //价格下跌超过Delta点
{
ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point, "Bought",MagicNumber,11111,Green)
}
如果(iOpen(NULL,5,0)-Bid<Delta*Point) //价格上涨超过Delta点
{
ticket=OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Ask+StopLoss*Point,Bid-TakeProfit*Point, "Sold",MagicNumber,2222,Green)。
}
//----
return(0);
}
//+------------------------------------------------------------------+
而你是一个顽固的人,明白吗?这很有效,但这太愚蠢了。 把它复制到MetaEditor中,否则你又会把 "+"和"-"弄混。
我怎样才能使我的专家顾问只开一个交易,在它完成之前不开其他交易?
我不好意思问:))))。如何让我的专家顾问只开一个交易,并且在交易结束前不开其他交易?
在一个循环中安排搜索所有开放的位置,并检查它们的当前符号和神奇数字。如果没有发现,那么我们就打开绿灯。Kodobase中充满了这样的例子,几乎在每一个专家顾问中都有。