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

 
atztek #:
在我装有i3处理器的旧笔记本电脑上,我仍然使用WinXP 32位,不受MT5支持。最近我把内存增加到6Gb,我想安装一个64位操作系统,运行MT4和MT5。哪个更合适 - Win7或Win8.1

我更喜欢7号车。办公室有一个8,一个10和一个7。7号的终端更稳定。由于未知的原因,7中的测试人员在弱小的计算机上更快。8ka根本就不是很过渡的。它吃的资源最多。10需要为自己提供更多的资源。

 
atztek #:
我的 带i3处理器的 旧笔记本电脑 仍然安装着WinXP 32位,不被MT5支持。最近我把内存增加到6Gb,我想安装支持MT4和MT5的64位操作系统。哪个更合适 - Win7或Win8.1 ?

去你的笔记本电脑制造商的网站,看看官方驱动程序是哪种最大的操作系统,这将是你的首选操作系统。如果驱动程序是针对Win 8.1的,那么你可以试试Win 10。如果驱动程序最终出现在Win 7中,那么就没有什么选择。

 

下午好,请你帮忙。

我需要给这个EA添加一个止损点,并在EA运行时显示参数的变化。

在'OrderClose'的返回值上有两个警告,应检查 ,也请修复。


外置双Lots = 0.1。

外置双倍最大风险 = 0.3。

外置双倍的DecreaseFactor = 100。

双层st1,st2。

//+------------------------------------------------------------------+

//|计算未结头寸|

//+------------------------------------------------------------------+

int CalculateCurrentOrders(string symbol)

{

int buys=0,sells=0。

//----

for(int i=0;i<OrdersTotal();i++)

{

如果(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;

如果(OrderSymbol()==Symbol())

{

如果(OrderType()==OP_BUY) buys++;

如果(OrderType()==OP_SELL) sells++;

}

}

//---- 退货订单量

if(buys>0) return(buys)。

否则返回(-sells)。

}

//+------------------------------------------------------------------+

//|计算最佳手数|

//+------------------------------------------------------------------+

double LotsOptimized()

{

double lot=Lots。

int orders=HistoryTotal(); // 历史订单总数

int losses=0; // 亏损订单的数量,没有休息时间

//---- 选择地段大小

lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,3)。

//----,计算无休止的损失订单的数量

如果(DecreaseFactor>0)

{

for(int i=orders-1;i>=0;i--)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("历史中的错误!"); break; }

如果(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) 继续。

//----

如果(OrderProfit()>0),则休息。

if(OrderProfit()<0) losses++;

}

如果(损失>1)lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1)。

}

//----,返回地段大小

如果(lot<0.1)lot=0.1。

return(lot)。

}

//+------------------------------------------------------------------+

//| 检查未结订单的情况 |

//+------------------------------------------------------------------+

空白的CheckForOpen()。

{

int res;

如果(Volume[0]>1)返回。


//---- 购买-----------------------

如果((iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_MAIN,0)>iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_SIGNAL,0) )

if ((Open[0]<Open[1])&&(Close[0]<Close[1])

//

{

res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,15,0," ,0,0,Blue)。

返回。

}

//---- 卖------------------------

如果((iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_MAIN,0)<iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_SIGNAL,0) )

if((Open[0]>Open[1])&&(Close[0]>Close[1]))

{

res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,15,0,",0,0,Red)。

返回。

}

}

//------------Закрытие позиций----------------------------------------

空白的CheckForClose2()

{

如果(OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(), Bid,3,White);

如果(OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3,Blue) 。

//CheckForOpen()。

}


//

//+------------------------------------------------------------------+

//| 检查平仓的条件|

//+------------------------------------------------------------------+

空白的CheckForClose1()

{

如果(Volume[0]>1)返回。

//检查是否有损失

如果((AccountProfit()<0)&(MathAbs(AccountProfit())>=(AccountMargin()*MaximumRisk))

{

CheckForClose2()。

Print("loss", AccountProfit())。

}/**/

//---- 检查订单类型

如果(OrderType()==OP_BUY)

{

如果((iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_MAIN,0)<iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_SIGNAL,0) )

if ((Open[0]>Open[1])&&(Close[0]>Close[1]))

CheckForClose2()。

}

如果(OrderType()==OP_SELL)

{

如果((iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_MAIN,0)>iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_SIGNAL,0) )

if ((Open[0]<Open[1])&&(Close[0]<Close[1]))

CheckForClose2()。

}


}

//+------------------------------------------------------------------+

//| 启动功能|

//+------------------------------------------------------------------+


空白启动()。

{


//---- 按当前符号计算未结订单

如果(CalculateCurrentOrders(Symbol())==0) CheckForOpen()。

否则CheckForClose1()。

//---

}

//+-----------------------------------------------+

MetaQuotes — разработчик торговых платформ для брокеров, банков, бирж и хедж-фондов
MetaQuotes — разработчик торговых платформ для брокеров, банков, бирж и хедж-фондов
  • www.metaquotes.net
Торговая платформа MetaTrader 5 - это бесплатный инструмент трейдера, позволяющий торговать на форексе и фондовых биржах
 
bob88 #:



extern double Lots               = 0.1;

extern double MaximumRisk        = 0.3;

extern double DecreaseFactor     = 100;

extern int stopLoss = 15;
extern int takeProfit = 30;


//+------------------------------------------------------------------+

//| Check for open order conditions                                  |

//+------------------------------------------------------------------+

void CheckForOpen()

  {

  int res;
  double openPrice, sl, tp;

 if(Volume[0]>1) return;



//---- покупаем -----------------------

  

  if ( (iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_MAIN,0)>iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_SIGNAL,0))) 

     if  ((Open[0]<Open[1])&&(Close[0]<Close[1])) 

    

  //  

     {
      openPrice = NormalizeDouble(Ask, Digits);
      sl = NormalizeDouble(openPrice - stopLoss * Point, Digits);
      tp = NormalizeDouble(openPrice + takeProfit * Point, Digits);
      res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),openPrice,3,sl,tp,"",0,0,Blue);

      return;

     }

//---- продаем ------------------------

if ((iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_MAIN,0)<iStochastic(NULL,0,15,26,10,MODE_SMA,0,MODE_SIGNAL,0)))  

    if((Open[0]>Open[1])&&(Close[0]>Close[1]))

     {
      openPrice = NormalizeDouble(Bid, Digits);
      sl = NormalizeDouble(openPrice + stopLoss * Point, Digits);
      tp = NormalizeDouble(openPrice - takeProfit * Point, Digits);
      res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),openPrice,3,sl,tp,"",0,0,Red);

      return;

     }

     

  }

我已经添加了SL和TP的计算,但如果能添加他们的检查就更好了。你可以在文章https://www.mql5.com/ru/articles/2555#invalid_SL_TP_for_position,了解如何做到这一点。

你的警告并不重要。OrderClose的 结果被忽略了,因此出现了警告例如,你可以让CheckForClose2 函数返回OrderClose 的结果。或者你可以让它保持原样。

我注意到的另一件事是,函数CheckForClose2、CheckForOpen等 的名称很奇怪而你让他们进行贸易操作。

Какие проверки должен пройти торговый робот перед публикацией в Маркете
Какие проверки должен пройти торговый робот перед публикацией в Маркете
  • www.mql5.com
Все продукты Маркета перед публикацией проходят обязательную предварительную проверку для обеспечения единого стандарта качества. В этой статье мы расскажем о наиболее частых ошибках, которые допускают разработчики в своих технических индикаторах и торговых роботах. А также покажем как самостоятельно проверить свой продукт перед отправкой в Маркет.
 
大家好。谁能帮我编辑一下这个EA。我需要删除开单功能,这样EA就不会自己开单,而是只与手动开单一起工作。事先非常感谢。
附加的文件:
 
Иван Макаров #:
大家好。谁能帮我编辑一下这个EA。我必须删除开单功能,这样EA就不会自己开单,而只能与手动开单一起工作。事先非常感谢

移除开单功能,并将magic设置为0,机器人将捡起手动开单并跟踪它们。如果我们想让机器人只关注单个订单,而不是所有的订单都在一排,那么就把条目变成买入和卖出,例如,通过按下相应的按钮,机器人应该在每个订单的OnChartEvent事件CHARTEVENT_OBJECT_CLICK中创建和处理。在这种情况下,Magic必须大于0,以便只对它自己的订单工作。

 
问候。谁能告诉我如何在MT4 EA中添加时间交易 功能?我想让我的EA从00.00到23.00工作,其余一小时不做任何事情。也许有人有一段代码和如何实现它。我有一个很好的想法,如何在我的EA中实现这一点。
 
Иван Макаров 时间交易 功能?我想让我的EA从00:00到23:00工作,接下来的一个小时什么都不做。也许有人有一段代码和如何实现它。我有一个很好的 想法,如何在我的EA中实现这一点。

https://www.mql5.com/ru/forum/131859/page9#434297

isTradeTimeString()

isTradeTimeInt()

Только "Полезные функции от KimIV".
Только "Полезные функции от KimIV".
  • 2011.02.18
  • www.mql5.com
Все функции взяты из этой ветки - http://forum.mql4...
 

你好。

这样的小毛病...我正在测试一个!3台计算机的专家。其中2个准确地工作,而其中一个在计算中总是出现某种错误--一般来说,它不能正确计算止损 或错误地触发。

硬件不新,但也不旧。

有人遇到过这样的事情吗?

 
Zalevsky1234 止损 或虚假触发。

硬件不新,但也不旧。

有人遇到过这样的问题吗?

这三个人都连接到同一个经纪人/交易商服务器?(我的意思是,这是同一个故事吗?)如果不是,这是第一个要看的地方。