一个顾问,会在发射后在五分钟的图表上跟随汇率的情况。 - 页 6

 

日子过得不错。

能否告知:有一个脚本能及时在文件中写入历史记录,但当文件被打开时,记录并没有去....。你可能知道或已经看到的脚本被称为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


据我所知,手柄有问题,但问题在哪里呢?

 
经过测试的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);
}
//+------------------------------------------------------------------+
仍然无法工作!!!!
请帮助我了解原因是什么。
 

那么你是如何测试的呢?而且,如果它不工作,怎么会显示出利润呢?那它怎么会不起作用呢?杂志上印的是什么?你在哪里测试的,在测试器中吗?还是在网上?

另外,看看OrdersTotal函数,它的作用和它的插入方式:....

例如,int total=OrdersTotal(); if(total<1) {

 
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,否则你又会把 "+"和"-"搞混。
 


据我所知,问题出在手柄的某个地方,但问题出在哪里......

下面是一个获得Handle的例子
int hwnd1 =WindowHandle(Symbol(), Period())。
我没有注意到你的代码中有类似的东西。
如果一个 "csv "文件被Excel打开,它被锁定,文件没有写入权限,这是不是一个谜?
 
rid:

那么你是如何测试的呢?而且,如果它不工作,怎么会显示出利润呢?那它怎么会不起作用呢?杂志上印的是什么?你在哪里测试的,在测试器中吗?还是在网上?

另外,看看OrdersTotal函数,它的作用和它的插入方式:....

例如,int total=OrdersTotal(); if(total<1) {

用测试器测试,还能怎样?:)
显示利润504,交易次数432,缩水788美元,7.31%。在设置中,我把m5放在磅上,17/03/08 - 19/03/08。
而当我在图表上运行时,我的交易条件得到了满足,但专家顾问没有做任何事情.......。
 
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!!!!!!非常感谢你。它正在发挥作用。
 
当你完成你的GRAAL 时,至少要分享这个想法。
 
我不好意思问:))))。
我怎样才能使我的专家顾问只开一个交易,在它完成之前不开其他交易?
 
salesman77:
我不好意思问:))))。如何让我的专家顾问只开一个交易,并且在交易结束前不开其他交易?


在一个循环中安排搜索所有开放的位置,并检查它们的当前符号和神奇数字。如果没有发现,那么我们就打开绿灯。Kodobase中充满了这样的例子,几乎在每一个专家顾问中都有。