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

 
Stells:

下午好。

问题是如何测试或谁的结果更可靠?

在专家顾问中,H1期在任何地方都有明确规定。

我在开盘时在M1上测试--明确的损失。

我在H1上进行了测试,所有指标都在上升。

问题是止损点很小--只有几个点。利润是很大的。

如果EA对新条形图 的打开有明确的控制,并且只在新条形图打开时才工作,那么你可以在新条形图打开时进行测试。否则,只有虱子。此外,止损点很小,它们显然会在一个新的柱子开盘时被吹走,因为在M1上,一个柱子可以在一分钟内抓住你的止损点。在M1上测试所有刻度线。
 
artmedia70:
如果EA对新条形图的打开有明确的控制,并且只在新条形图打开时工作,那么你可以在新条形图的打开时进行测试。否则,只有虱子。此外,止损点很小,它们显然会在一个新的柱子开盘时被吹走,因为在M1上,一个柱子可以在一分钟内抓住你的止损点。在M1上测试所有刻度线。

(理论上)所有ticks与H1有何不同?
 

你好!请帮助我理解这段代码,我做错了什么。我是编程新手。我读了我的mql4教程,看了很多专家顾问的代码,但我还是找不到问题的答案。我有一个5位数的终端,ECN账户,可变点差+佣金。专家顾问是最简单的,当快线МА从上到下穿过慢线МА时,它就会打开卖单,反之亦然, 当快线МА从下到上穿过慢线МА 时,它就会打开卖单 事实上,TS要复杂得多,只是我还没有让所有的基本功能正常工作,无法正确测试,更不用说优化了,我决定不要用多余的计算使代码复杂化。这里是专家顾问本身的代码。

#define MAGICMA  20050610
extern string text1              ="===========================MoneyManagment===========================";
extern double Lots               = 0.1;
extern string text2              ="======================Simple_Close_settings=========================";
extern double TakeProfit         = 100;
extern double StopLoss           = 100;
extern double Bezubitok          = 30; //Расстояние, через которое пройдёт цена от открытия сделки в "+", чтобы перенести СтопЛос в безубыток
extern string text3              = "===================TrailingStopLoss_settings=======================";
extern double Trailing           = 100; //Расстояние, через которое будет подтягиватся СтопЛос к текущей цене
extern double Slippage           = 3; // Допуск проскальзования цены при открытии и закрытии сделок
extern string text4              = "===================Indicator_Trade_System_settings=================";
extern int    Fast_EMA_Period    = 8;
extern int    Slow_EMA_Period    = 21;




//+------------------------------------------------------------------+
//| Calculate open positions                                         |
//+------------------------------------------------------------------+
int CalculateCurrentOrders(string symbol)
  {
   int buys=0,sells=0;
//----
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA)
        {
         if(OrderType()==OP_BUY)  buys++;
         if(OrderType()==OP_SELL) sells++;
        }
     }
//---- return orders volume
   if(buys>0) return(buys);
   else       return(-sells);
  }

//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
int CheckForOpen()
  {
   double X1,X2,X3,X4;
   int ticket;

   
   X1=iMA(NULL,0,Fast_EMA_Period,0,MODE_EMA,PRICE_CLOSE,1);
   X2=iMA(NULL,0,Slow_EMA_Period,0,MODE_EMA,PRICE_CLOSE,1);
   X3=iMA(NULL,0,Fast_EMA_Period,0,MODE_EMA,PRICE_CLOSE,2);
   X4=iMA(NULL,0,Slow_EMA_Period,0,MODE_EMA,PRICE_CLOSE,2);
//----
if(Volume[0]>1) return;
  {   
      //ENTRY Ask(buy, long) 
      if (X3<=X4 && X1>X2)
        {
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,",",MAGICMA,0,White);
        }
      //ENTRY Bid (sell, short)
      if (X3>=X4 && X1<X2)
        {
         ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,",",MAGICMA,0,Red);
        }
  }
//----
  }
//+------------------------------------------------------------------+
//| Check for TrailingStop                                           |
//+------------------------------------------------------------------+
void CheckForTrailing()
 {

     if (Trailing>0) for(int i=0; i<=OrdersTotal();i++) 
     {
         OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
           if (OrderMagicNumber()==MAGICMA && OrderSymbol()==Symbol()) 
           {
            if (OrderType()==OP_BUY && Bid-OrderOpenPrice()>Trailing*Point && Bid-OrderStopLoss()>Trailing*Point)
            OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Trailing*Point,OrderTakeProfit(),0,CLR_NONE);
            if (OrderType()==OP_SELL && OrderOpenPrice()-Ask>Trailing*Point && OrderStopLoss()-Ask>Trailing*Point)
            OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Trailing*Point,OrderTakeProfit(),0,CLR_NONE);
           }
        }
}
//+------------------------------------------------------------------+
//| Check for close order conditions                                 |
//+------------------------------------------------------------------+
void CheckForClose()
  {
   double X1,X2,X3,X4;
//---- go trading only for first tiks of new bar
   if(Volume[0]>1) return;
//---- get Moving Average 
   X1=iMA(NULL,0,Fast_EMA_Period,0,MODE_EMA,PRICE_CLOSE,1);
   X2=iMA(NULL,0,Slow_EMA_Period,0,MODE_EMA,PRICE_CLOSE,1);
   X3=iMA(NULL,0,Fast_EMA_Period,0,MODE_EMA,PRICE_CLOSE,2);
   X4=iMA(NULL,0,Slow_EMA_Period,0,MODE_EMA,PRICE_CLOSE,2);
//----
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)        break;
      if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue;
      //---- check order type 
     
      if(OrderType()==OP_BUY)
        {
         if(Bid>=(OrderOpenPrice()+TakeProfit*Point)||Bid<=(OrderOpenPrice()-StopLoss*Point))OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
         break;
        }
        
      if(OrderType()==OP_SELL)
        {
         if(Ask<=(OrderOpenPrice()-TakeProfit*Point)||Ask>=(OrderOpenPrice()+StopLoss*Point)) OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
         break;
        }
     }
//----
  }



//+------------------------------------------------------------------+
//| Start function                                                   |
//+------------------------------------------------------------------+
void start()
  {
   if(Bars<25 || IsTradeAllowed()==false) 
     return (0);
   if (AccountFreeMargin()<(100*Point*Lots))
     {
      Print("Стоп! Недостаточно средств для продолжения торговли. Свободная маржа = ", AccountFreeMargin());
      return(0);  
     }
      
   if(Trailing>0) CheckForTrailing();  
     
      
//---- calculate open orders by current symbol
   if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
   else                                    CheckForClose();
   
 
   

   return(0);
  }
//+------------------------------------------------------------------+

也许有人能回答我的问题。

1.当我打开一个订单时,我在OrderSend中的Stopplos和TakeProfit参数处保留了空值;当我试图把其他数字放在那里时,专家没有打开交易;我检查了我是否可以手动打开一个交易并立即设置SL和TP,问题可能是什么?

2.我不明白为什么我设置了100点的TP、SL和TS,尽管交易的关闭不是这些点的倍数,甚至考虑到了点差。也许我的订单关闭功能不起作用?在这种情况下,我怎样才能限制损失,原来设置的SL,我怎样才能让它只在+方向上跟随价格?

3.我的经纪公司有Stop Level=100点,我如何设置虚拟TP和SL,以便我可以设置低于Stop Level的水平,比如在手动平仓的 时候?(Ecn账户的点数不被禁止)。

4.是否可以做到以下几点,如果可以的话:进行反向平仓,同时按SL和TP平仓,并转到Breakeven(取决于哪个事件先发生)?我试图这样做,但在测试器中,它打开一个位置,直到测试结束才关闭,但只收集交换)。他们中的任何一个都可以。

提前感谢所有愿意回答的人!

附加的文件:
 

下午好...

只有一个问题

让我们来看看日线上的分形......如何找到结束这个分形形成的价格,例如在H1上....,最好是在价格上出现箭头......。

 
Cmu4:
先生们,EA如何连接到一个特定的服务器和端口?这有可能吗?
那么,这里没有这方面的专家吗?
 
Cmu4:
先生们,EA如何连接到一个特定的服务器和端口?这有可能吗?

连接到一个套接字是什么意思? 或者通过http读取信息?
 
你好。我有一个简单的、可能是愚蠢的问题。策略测试者 会不会犯错......你有什么方法来测试你的策略?......谢谢你。
 

只有一个问题

让我们来看看日线上的分形......如何找到结束这个分形形成的价格,例如在H1上....,最好是在价格上出现箭头......。

 

下午好!

关于特殊函数的问题:init(), start(), deinit()。

正如你所知道的,包括从教程中知道的,为了终止(退出)这个特殊函数,你必须完全加入

返回运算符(例如,在条件运算符IF-ELSE中)。

那么返回值是什么意思?例如:Return(0)和可能的其他整数(Return(1))。

 

大家下午好!

请帮助我编辑一下 "FX5_Divergence_V2.1 "指标。

我正在用3个屏幕工作。窗口中的指标显示的是它的名字和一些其他的值,他们看到指标的时候非常不安。 往往因为这些数字,我看不到指标节点,很难进行比较(截图上黄色圈出的)。

(请帮助我纠正指标,使其只显示指标名称,而不显示其他所有数字)

指标和截图见附录。


提前感谢任何能提供帮助的人)


附加的文件: