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

 

伙计们,提示一下...这里是计算市场进入条件的代码部分。 优化过程中获得的时间框架的给定值相比, WHY

extern int s_signal_period=7;
extern int t_trend_period =7; // 1-M1, 2-M5, 3-M15, 4-M30, 5-H1, 6-H4, 7-D1, 8-W.

即TF=白天,市场进入发生在策略测试器中的4小时蜡烛开端,当在H4时期测试时? 我给出了一个代码和报告部分,用于在H4和D1上进行测试,专家顾问可以控制一个新条形图的打开。

xtern string A4 = "Таймфрейм и параметры технических индикаторов";
extern int s_signal_period=7;
extern int t_trend_period =7;
...
static datetime prevtime = 0;       // по ценам открытия

...
int start()
{
   if(Time[0] == prevtime)   return(0);  //ждем нового бара
   prevtime = Time[0];                   //если появился новый бар , включаемся
   
   ...                     
//---------------------------------------------В ЛОНГ-------------------------------------------------------------------------      

      if(((type_op()==OP_BUY) || (Buy_signal==true && Sell_signal==false)) && (orderCount==0 || orderCount < 10) && Period_MA_Fast<Period_MA_Slow && delta_fma()>0 && delta_sma()>0 &&   
           iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,1) > iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,2) && //идентификация впадины 
           iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,2) > iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,3) && //с последующим
           iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,4) > iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,3))   //ростом
            
           WmOrderSend(Symbol(), OP_BUY, Lots_New, Ask,Bid-StopLoss*Point, Bid + TakeProfit*Point, "2MA+Momentum", magic);


//---------------------------------------------В ШОРТ--------------------------------------------------------------------------     
     
      if(((type_op()==OP_SELL) || (Buy_signal==false && Sell_signal==true)) && (orderCount==0 || orderCount < 10) && Period_MA_Fast<Period_MA_Slow  && delta_fma()<0 && delta_sma()<0 &&
          iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,1) < iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,2) && //вершина 
          iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,2) < iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,3) && //с последующим 
          iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,4) < iMomentum(Symbol(),signal_period,Period_M, PRICE_CLOSE,3))   //падением
      
          
           WmOrderSend(Symbol(), OP_SELL, Lots_New, Bid, Ask+StopLoss*Point, Ask - TakeProfit*Point, "2MA+Momentum", magic); 
      
         
 ...          
}//------------------------------------------Конец Старт-----------------------------------------------------

double delta_fma()
  {
    int signal_period= GetPeriod(s_signal_period);
    return(iMA(Symbol(),signal_period,Period_MA_Fast,0,MODE_EMA,PRICE_CLOSE,1)-
           iMA(Symbol(),signal_period,Period_MA_Fast,0,MODE_EMA,PRICE_CLOSE,3));
  }

double delta_sma()
  {
    int trend_period = GetPeriod(t_trend_period); 
    return(iMA(Symbol(),trend_period,Period_MA_Slow,0,MODE_EMA,PRICE_CLOSE,1)-
           iMA(Symbol(),trend_period,Period_MA_Slow,0,MODE_EMA,PRICE_CLOSE,3));
  }

//для оптимизации по всем периодам по всем периодам
int GetPeriod(int period)
{int periodres;
 switch(period)
  {
   case 1: periodres=1;break;     //M1
   case 2: periodres=5;break;     //M5
   case 3: periodres=15;break;    //M15
   case 4: periodres=30;break;    //M30
   case 5: periodres=60;break;    //H1
   case 6: periodres=240;break;   //H4
   case 7: periodres=1440;break;  //D1
   case 8: periodres=10080;break; //W
   default: periodres=1;break;
  }
return(periodres);
} 

报告。在H4上测试时--每4小时入市一次,如果交易条件得到满足,虽然extern int s_signal_period =7;
extern int
t_trend_period =7。

D1 - 在D1上测试 - 在D1开盘时进入市场,在 同一外部 int s_signal_period=7;
外部 int
t_trend_period=7。

这应该是如此...为什么在H4上测试时,策略测试器会在H4开盘时入市,而不是在日线蜡烛图的开盘时 入市?因为s_signal_period=7;
extern int
t_trend_period =7;

谢谢你对这个问题的提示。

 
Roman.:

伙计们,提示一下...我向你展示计算市场进入条件的代码片段。 优化过程中获得的时间框架的给定值相比, WHY

即TF=白天,市场进入发生在4小时蜡烛图的开端,在策略测试器中,当在H4时期测试时? 我给出了一个代码和报告部分,用于在H4和D1上进行测试,专家顾问可以控制一个新条形图的打开。

报告。在H4上测试时--每4小时入市一次,如果交易条件得到满足,虽然extern int s_signal_period =7;
extern int
t_trend_period =7。

D1 - 在D1上测试 - 在D1开盘时进入市场,在同一 外部 int s_signal_period=7;
外部 int
t_trend_period=7。

这应该是如此...为什么在H4上测试时,策略测试器会在H4开盘时入市,而不是在日线蜡烛图的开盘时 入市?因为s_signal_period=7;
extern int
t_trend_period =7;

谢谢你对这个问题的提示。


给出的代码不足以回答
 
Vinin:

所给的代码不足以回答

你需要多少代码?信号部分是有的...
 
Vinin:

所给的代码不足以回答

现在我在H1上测试了它--它在s_signal_period=7的情况下每小时开启交易
外部t_trend_period =7;
 
Roman.:

现在在H1上测试--每小时打开交易,s_signal_period=7;
extern int t_trend_period =7;


让signal_period变量成为全局变量并在init()中给它赋值是有意义的。

为一个新的酒吧 改变控制

   if(iTime(Symbol(),signal_period,0) == prevtime)   return(0);  //ждем нового бара
   prevtime = iTime(Symbol(),signal_period,0);                   //если появился новый бар , включаемся
 
Vinin:


让signal_period变量成为全局变量并在init()中给它赋值是有意义的。

并改变新栏的控制方式


我明白了,维克多,谢谢你--我今晚下班后会试试。我将把结果写到这个主题上。
 
我怎么知道一个订单是否抓住了麋鹿?
 
CLAIN:
有什么技巧可以知道一个订单是否抓住了损失?

想得没错。

搜索:检测亏损贸易网站:mql4.com,搜索亏损贸易网站:mql4.com

 
CLAIN:
我如何知道一个订单是否抓住了损失?

如果OrderClosePrice()==OrderStopLoss(),那么该订单肯定是 按亏损订单关闭。诀窍在于它是在哪个利润领域被关闭的。比方说,交易者开了一个头寸,设置了一个止损,然后,当头寸转为盈利后,他/她将止损移到了一个正的盈利区--因此,如果止损触发,订单将被盈利平仓。价格赢回来了,把订单打到了止损点。也就是说,OrderClosePrice()实际上等同于OrderStopLoss()。ORDER抓住了一只麋鹿,但它并没有显示出损失,而是显示出盈利。在这种情况下,你会怎么做?
 

你好!

你能告诉我如何根据进场价格、止损和存款的百分比来计算手数吗?我们假设进场价格是1.4500,止损是1.4400。风险是100点。如果一个点的价格是0.1,风险是余额的2%(10000),那么手数就是0.2。是否有可能在MQL中推导出这个公式? 我几乎搜遍了整个论坛,都没有找到这样的东西。所有其他的地段计算方法都完全不同。

谢谢你。