[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 371

 
belous:

伙计们...帮助谁知道!!!!


该策略的实质是:通过随机方式进入(5,14,3),也通过随机方式退出,但有另一个周期(5,3,3)。我不明白为什么zdelat可以通过随机指标退出,而不是通过逆向信号?
我有一个问题,我不知道如何解决,我试着解释一下。
因此,在我所布置的代码中,有2个函数
...

将代码与SRC一起发布在论坛上。而且也没有什么值得叫好的。


 
你好。谁能建议一下顾问的问题是什么。当编译时给出的错误是你必须放一个小括号,我把-编译又给出了小括号放错了。我所有的脑袋已经坏了。
附加的文件:
 
artemka_1981:
你好,请问谁能告诉我我的EA有什么问题。 我在编译过程中一直得到一个错误,当我写一个封闭的小括号时,我一直得到一个错误,当我写一个封闭的小括号时,编译器又给我一个错误。

如果你在结尾处放一个封闭的大括号。

添加像OrderMagicNumber() == )这样的行。

并在其中一个括号 中加上结束语,一切都可以编译。

 
你能告诉我如何正确设置订单 的到期时间吗?我试着写TimeCurrent()+60,订单没有打开。一般来说,这个参数在经纪人那里是允许的
 
sss2019:
告诉我如何正确设置订单到期时间?我试着写TimeCurrent()+60,它没有打开订单。一般来说,这个参数是允许在经纪人 。

60是60秒,所以你可能不能把它设置得那么低(例如,我有一个10分钟的限制)。

尝试TimeCurrent()+60*60*24--一天的时间

并看看回来的错误代码 是什么

 
ilunga:

如果你在结尾处放一个封闭的大括号。

添加像OrderMagicNumber() == )这样的行。

并在其中一个括号中加上结束语,一切都可以编译。

你好。我加了一个小括号,现在的错误是'\end_of_program'--不平衡的左括号。不清楚( ,在其中一个括号 里加一个结束语 )
if(tim<iTime(Symbol(),PERIOD_D1,0)) return(1);
 return(0);
 }
 
 OrderMagicNumber()

 
artemka_1981:
你好。我加了一个小括号,现在的错误是'\end_of_program'--不平衡的左括号。不清楚( ,在其中一个括号里加一个结束语 )

它的编译方式是这样的。

//+------------------------------------------------------------------+
//|                                                Open_Buy_Sell.mq4 |
//|                                                                  |
//|                                        http://www.metaquotes.net |
//+------------------------------------------------------------------+
#define magic 999

#property link      "http://www.metaquotes.net"
extern double  _lots         = 0.01;
extern int     _takeProfit   = 1200;
extern int      maxpos       = 1;     // количество поз
extern bool    _trailingStop = true;
//+------------------------------------------------------------------+

int start()
  {
   double _slBuy=0.0,_slSell=0.0, _tpBuy=0.0, _tpSell=0.0, _opBuy=0.0, _opSell=0.0;

//if (iVolume(Symbol(),PERIOD_D1,0)>1) return;
//     if (Volume[0]>1) return;
     if (_trailingStop){ 
     _TrailingStop();
      }
   _opBuy=NormalizeDouble(iHigh(Symbol(),0,1), Digits);
   _slBuy=NormalizeDouble(iLow(Symbol(),PERIOD_D1,1), Digits);
   _tpBuy=NormalizeDouble(Ask+_takeProfit*Point, Digits);
      if ( _opBuy<Ask && CountPos(1)<maxpos)
       if(barOpen(OP_BUYSTOP)==1 ||barOpen(OP_BUY)==1 )
        OrderSend(Symbol(),OP_BUYSTOP,_lots,_opBuy,15,_slBuy,_tpBuy,"Open_Buy_Sell",0,Green);

   _opSell=NormalizeDouble(iLow(Symbol(),0,1), Digits);
   _slSell=NormalizeDouble(iHigh(Symbol(),PERIOD_D1,1), Digits);
   _tpSell=NormalizeDouble(Bid-_takeProfit*Point, Digits);
     if (_opSell>Bid && CountPos(0)<maxpos)
      if(barOpen(OP_SELLSTOP)==1 ||barOpen(OP_SELL)==1 )
       OrderSend(Symbol(),OP_SELLSTOP,_lots, _opSell,15,_slSell,_tpSell,"Open_Buy_Sell",0,Red);
//----
   return(0);
  }
//+------------------------------------------------------------------+  
 //Проверяем количесвто позиций.
   int CountPos(int type) 
{//Описание http://fxnow.ru/blog.php?user=Yuriy&blogentry_id=66

int i;
int col;
int count=0 ;
for(i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i,SELECT_BY_POS)==true)
{
if(OrderType()==OP_BUYSTOP && OrderSymbol()==Symbol() && type==1 && OrderMagicNumber()== magic){count++;}
if(OrderType()==OP_SELLSTOP && OrderSymbol()==Symbol() && type==0 && OrderMagicNumber()== magic){count++;}
         }
       }   
return(count);
}
//+------------------------------------------------------------------+
void _TrailingStop(){
   int i;
   double _stopLossSellF=NormalizeDouble(iHigh(Symbol(),0,1), Digits),
          _stopLossBuyF=NormalizeDouble(iLow(Symbol(),0,1), Digits);
   if (OrdersTotal()>0){
      for (i=OrdersTotal()-1; i>=0; i--){
         if (OrderSelect(i, SELECT_BY_POS)){
            if (OrderSymbol()==Symbol() && OrderMagicNumber()==magic){
             
               if (OrderType()==OP_BUY && OrderOpenPrice() < _stopLossBuyF){
                  while (IsTradeContextBusy()) Sleep(1000);
                  RefreshRates();
                  OrderModify(OrderTicket(),OrderOpenPrice(),_stopLossBuyF,OrderTakeProfit(),OrderExpiration(),CLR_NONE);
               }
           
               if (OrderType()==OP_SELL && OrderOpenPrice() > _stopLossSellF && _stopLossSellF!=0.0){
                  while (IsTradeContextBusy()) Sleep(1000);
                  RefreshRates();
                  OrderModify(OrderTicket(),OrderOpenPrice(),_stopLossSellF,OrderTakeProfit(),OrderExpiration(),CLR_NONE);
               }
            }
         }
      }
   }
return;
}
int barOpen(int ty)
{
datetime tim=0;
 for(int i=0; i<=OrdersTotal(); i++)
    {  
       if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))continue;
       if(OrderSymbol() !=Symbol()|| OrderMagicNumber()!= magic|| OrderType()!=ty) continue; 
       if(tim<OrderOpenTime())        
          tim=OrderOpenTime();
   }
 for(i=0; i<=OrdersHistoryTotal(); i++)
    {  
       if (!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))continue;
       if(OrderSymbol() !=Symbol()|| OrderMagicNumber()!= magic|| OrderType()!=ty) continue; 
       if(tim<OrderOpenTime())        
          tim=OrderOpenTime();
   }
 
if(tim<iTime(Symbol(),PERIOD_D1,0)) return(1);
 return(0);
}
 

你能告诉我,如果我有两个连续的OrderSend 命令用于设置订单,我是否需要在它们之间放置IsTradeAllowed 函数?

还是没有必要,只有在成功下单后, EA 会从第一个OrderSend 调用传递到第二个?

如果仍然需要IsTradeAllowed ,那么应该在while循环中设置什么时间延迟?

 
这句话有什么错误吗?非常感谢你。
if(OrderType()==OP_BUYSTOP && OrderSymbol()==Symbol() && type==1 && OrderMagicNumber()==MAGICMA ){count++;}
if(OrderType()==OP_SELLSTOP && OrderSymbol()==Symbol() && type==0 && OrderMagicNumber()==MAGICMA ){count++;}
ilunga:

这就是它的编译方式。

现在测试时没有打开任何交易,在日志中写道Open_BuyS_SellS EURUSD,Daily: OrderSenderror 131

 
晚上好。我想知道是否有人使用在特定时间框架上按价格水平分配 交易的指标,该指标可以从http://fxcoder.ru/indicators/tpo。如果是这样,如何才能正确地分析它?你有什么相关信息吗?