[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. - 页 404

 
splxgf:
最好还是第一种选择,在试图打开一个订单之前下单(OrderSend)。
非常感谢您!一切顺利 :)
 
kolyango:

所有这些条件可能不会立即相继出现(可能是在一小时或两小时或三小时内),因此我们应该使指标一达到1.0000,这个条件就不会在每个tick上被检查,而要等到有一个bar以下跌收盘,之后这两个条件就不会在每个tick上被检查,而要等到指标达到0.9980或相等。一旦所有条件得到满足,我们就开出一个市场订单,卖出0.1手,止损400便士,获利400便士。

一般来说是可以的,但我会密切注意指标返回的值。

bool Val_max=false, Cl_dn=false, Val_min=false; 
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   int
   i, j, total,
   cnt,
   OrderBuy,
   OrderSell,
   Magic,
   Ticket,                                      // Номер ордера
   Total=0,                                     // Количество ордеров в окне
   Tip=-1;                                      // Тип выбран. ордера (B=0,S=1)      
   double
   Open_0,
   ask,
   bid,
   Price,                                       // Цена выбранного ордера
   SL,                                          // SL выбранного ордера
   TP,                                          // TP выбранного ордера
   Lot;                                         // Колич. лотов в выбран.ордере
   Open_0=Open[0];                             // Цена откр. формирующегося бара
   ask=Ask;                                    // Текущая цена покупки
   bid=Bid;                                    // Текущая цена продажи
   string
   Symb;                                        // Название финанс. инструмента
   Symb=Symbol();                               // Название фин.инстр.
double Value_max=1.0000;
double Value_min=0.9980;
double Open_1= Open[1];
double Close_1= Close[1];
//----

//--------------------------------------------------------------- 4 --

double Val=iCustom(NULL, 0, "HMR MULTI Indicator",0,0);   
if (Val >= Value_max) Val_max=true;                  // 
if (Open_1 > Close_1 && Val_max==true) Cl_dn=true;
if (Val <= Value_min && Cl_dn==true) Val_min=true;
if (Val_max==true && Cl_dn==true && Val_min==true)
  {
   for (j = 0; j < OrdersTotal(); j++)
    {
     OrderSelect(j, SELECT_BY_POS, MODE_TRADES);
     if (OrderSymbol() == Symbol())
      {
      if (OrderType() == OP_SELL) return(0);
      }
    }

   OrderSend(Symbol(),OP_SELL,0.1,NormalizeDouble(Bid,Digits),2,Bid+400*Point,Bid-400*Point,"",3,Red);  // Открытие SELL
   Val_max=false; Cl_dn=false; Val_min=false;
  }

//----
   return(0);
  }
[Deleted]  
splxgf:

总的来说是可以的,但我会密切注意指标返回的值。


试着通过Alert实时显示指标值,信息显示正常。

double Val=iCustom(NULL, 0, "HMR MULTI Indicator",0,0);   
if (Val >= Value_max)
{
Alert("Значение индикатора >= 1.0000");
}
当数值达到1.0000时,在每一个刻度 都会显示以下信息: "指标值>=1.0000"。
 
kolyango:


试着通过Alert显示指标的实时值,信息显示正常。

然后,测试人员不喜欢的东西,你需要添加警报 并查看日志。
[Deleted]  
splxgf:
那么测试者不喜欢的东西,你需要添加警报,并在日志中查看。

那么代码是否正确?
[Deleted]  

它是什么意思?

2011.12.06 01:07:55 HMR MULTI指标 EURUSD,M15: 已删除

2011.12.06 01:07:57 TestGenerator: 未匹配的数据错误(2011.12.01 00:00的音量限制603,超过了)

2011.12.06 01:07:57 2011.12.01 00:00 HMR MULTI Indicator EURUSD,M15:ObjectCreate函数 的未知子窗口号-1


 
kolyango:

它是什么意思?

2011.12.06 01:07:55 HMR MULTI指标 EURUSD,M15: 已删除

2011.12.06 01:07:57 TestGenerator: 未匹配的数据错误(2011.12.01 00:00的音量限制603,超过了)

2011.12.06 01:07:57 2011.12.01 00:00 HMR MULTI Indicator EURUSD,M15: ObjectCreate函数的未知子窗口号-1


似乎有两个错误。
1.可能需要断开MT4与互联网的连接,然后再导入 历史数据。
2.你需要检查代码。

 
chief2000:
那里似乎有两个错误。
1.您可能需要断开MT4与互联网的连接,然后再导入历史数据。
2.你需要检查代码。

...指标。

 int start(){
  double Val=iCustom(NULL, 0, "HMR MULTI Indicator",0,0);   
  Alert(Val);
}

试试用空的专家顾问的 "直觉 "方法。

在指标中验证ObjectCreate 找到它的子窗口(或者为什么要画它,如果我们测试或优化它)。

if(IsTesting()||IsOptimization())флаг_Канады_не_рисовать_obj=true;          //проверяем надо ли рисовать (в ините ему место через статик переменную)
if(!флаг_Канады_не_рисовать_obj){                                           //запрет отрисовки объектов ели оптимизация или тестирование
ObjectCreate(........................);
}
 
granit77:
也就是说,如果不存在参数转移,那么。

谢谢你的回答!
 

下午好!

请告诉我,如何防止专家顾问使用 "工具 "参数(_OrderSymbol)向文件中写入重复的内容。我在论坛上看到如何删除数组中的重复https://forum.mql4.com/ru/5814,但我还没有想出如何将其应用于我的情况。在重复的情况下,它开始在一个文件中印制200个相同的行,甚至在一个循环中。

void TimeStr6() { 
   int i,handle,_ordertype;
   double _openprice,_orderLots,_OrderProfit;
   string _orderspread,_orderbalance,_OrderSymbol,_orderOpenTime,_orderOpenTime1;
   string tekTime=TimeToStr(CurTime(),TIME_DATE)+"_";
   string path=tekTime+"Оптимальный.csv";
//---------------------------
    handle=FileOpen(path,FILE_READ|FILE_WRITE);
    if (handle>0){
       FileWrite(handle,"Дата","Время","Инструмент","Баланс оптимальный"); 
       _orderOpenTime=TimeToStr(OrderOpenTime(),TIME_DATE);
       _orderOpenTime1=TimeToStr(OrderOpenTime(),TIME_SECONDS);
       _OrderSymbol=SymbolMax[nnnn];
       _orderbalance=DoubleToStr(StartBalance,0);
       FileSeek(handle,0,SEEK_END);
       FileWrite(handle,_orderOpenTime,_orderOpenTime1,_OrderSymbol,_orderbalance);
       FileClose(handle);
     }
   return;
}