初学者的问题 MQL4 MT4 MetaTrader 4 - 页 25

 
Viachaslau Baiko:

由于类型转换可能造成的数据损失

试试吧。

附加的文件:
 
Renat Akhtyamov:
给我看看编译器指向的代码中的那一行

有很多这样的线,这就是为什么我要求为新的终端提供一个适应的模块。但感谢你愿意提供帮助)

 
Alekseu Fedotov:
谢谢你,我会试一试的。
 
Viachaslau Baiko:

有很多这样的线,这就是为什么我要求为新的终端提供一个适应的模块。但感谢你愿意提供帮助)

就在这条线上。

" 由于类型转换可能造成的数据损失"

应该是出现错误的代码行的行号和位置。

就是这么简单,你可以修复所有的错误,知道代码中的确切位置

 
Renat Akhtyamov:

就在这条线上。

" 由于类型转换可能造成的数据损失"

应该有一个行号和代码行中出现错误的位置。

这是一个修复所有错误的简单方法,知道代码中的确切位置。

我采用了Alekseu Fedotov 提供的专家顾问,并试图修改它以适应我的需要。

我的需求如下。在魔杖的交叉点,我们开仓,并在相反的交叉点平仓。如果可能的话,我们把头寸转到盈亏平衡点。

但最终什么都没有打开。我正在绞尽脑汁。问题可能是什么?

附加的文件:
4Tester.mq4  20 kb
 
Viachaslau Baiko:

我采用了Alekseu Fedotov 提供的EA,并试图修改它以适应我的需要。

我的需求如下。如果它们被越过,我们就开仓;如果它们再次被越过,我们就平仓。如果可能的话,我们把头寸转到盈亏平衡点。

但最终什么都没有打开。我正在绞尽脑汁。问题可能是什么?

我不确定问题出在哪里,但我想看看CMM的一行错误代码,这是最后一次了。
 
Renat Akhtyamov:
显示代码中带有CMM错误的那一行,这是最后一次我提供帮助。
我有一个错误。我把程序的逻辑弄错了。而且对我来说,重做也比较容易。CMM的代码中没有错误。
 
请告知是否可以用mql4或mql5进行以下操作。

在价格越过一个垂直水平后,将背景的一部分染成另一种颜色,如图所示。

谢谢你。
附加的文件:
Immagine1.JPG  100 kb
 
Renat Akhtyamov:
显示一个代码片段,说明你如何在你的EA中从指标中读取信号。
extern int     stoploss             = 200,
               takeprofit           = 400,
               slippage             = 10,
               Magic                = 777;          

extern double  Lot                  = 0.5,
               buy_level            = 15;      
            

void OnTick()
{
   for (int i=0; i<OrdersTotal(); i++)                        
   if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
   if (OrderSymbol()==Symbol() && Magic==OrderMagicNumber())return;
  
   double STO = iStochastic(NULL,15,2,3,1,MODE_SMA,0,MODE_SIGNAL,0);
   double SL=0,TP=0;
  
   if (STO > buy_level)
  
  
   {
      if (takeprofit!=0) TP  = NormalizeDouble(Ask + takeprofit*Point,Digits);
      if (stoploss!=0)   SL  = NormalizeDouble(Ask - stoploss*  Point,Digits);    
      if (OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,NULL,Magic)==-1) Print(GetLastError());
      PlaySound("timeout.wav");
      Print("Ордер успешно размещен");
}
}
 
TimBerg:
extern int     stoploss             = 200,
               takeprofit           = 400,
               slippage             = 10,
               Magic                = 777;          

extern double  Lot                  = 0.5,
               buy_level            = 15;      
            

void OnTick()
{
   for (int i=0; i<OrdersTotal(); i++)                        
   if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
   if (OrderSymbol()==Symbol() && Magic==OrderMagicNumber())return;
  
   double STO = iStochastic(NULL,15,2,3,1,MODE_SMA,0,MODE_SIGNAL,0);
   double SL=0,TP=0;
  
   if (STO > buy_level)
  
  
   {
      if (takeprofit!=0) TP  = NormalizeDouble(Ask + takeprofit*Point,Digits);
      if (stoploss!=0)   SL  = NormalizeDouble(Ask - stoploss*  Point,Digits);    
      if (OrderSend(Symbol(),OP_BUY, Lot,NormalizeDouble(Ask,Digits),slippage,SL,TP,NULL,Magic)==-1) Print(GetLastError());
      PlaySound("timeout.wav");
      Print("Ордер успешно размещен");
}
}

就在这里。

iStochastic(NULL,15,2,3,1,MODE_SMA,0,MODE_SIGNAL,0)。

改变周期(时间框架)为1,5,15,30,60,240,1440,10080,43200 //M1.M5.M30 ...等。

或者输入Period() 而不是15,那么当你手动切换TF时,当前的将被自动设置为

原因: