新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1300

 
ANDREY:

有可能关闭价差,即为买入价格增加一些价值。但是,如何才能固定这种传播的规模呢?在真实的点位中,点差是浮动的,即点差的值是未知的。因此,在我的专业意见中,它不能在真实的蜱虫上关闭.....,但纯粹是逻辑上的。可能只能缝制确切知道的东西,直到永远。

metatrader是否让你感到惊讶?我不是......不是了......。请....

<日期> <时间> <打开> <高> <低<close> <tickvol> <vol> <spread>
1999。01.28 00:03:00 1.14450 1.14450 1.14450 1.14450 1.14450 1 0 50
1999.01.28 00:13:00 1.14440 1.14440 1.14420 1.14420 3 0 50

 
Александр:

metatrader是否让你感到惊讶?我不是......不是了......。请....

<日期> <时间> <打开> <高> <低<close> <tickvol> <vol> <spread>
1999。01.28 00:03:00 1.14450 1.14450 1.14450 1.14450 1.14450 1 0 50
1999.01.28 00:13:00 1.14440 1.14440 1.14420 1.14420 3 0 50

也就是说,价差要么是O ,要么就是不显示价差的数值。而这些数据是由MT4或者MT5提供的。而这个数据是来自哪个菜单项?

如果有一个点差值,但由于某些原因没有显示,那么这个MT故障与我的MT5故障非常相似。Alpari说历史深度对tick报价的质量没有影响,并认为我的问题隐藏在终端本身,建议联系开发者。所以,就像你的例子一样,我在2010年有相同的质量历史值,但由于某些原因,它没有在MT5中显示 。如果根本没有刻度,或者其数量太少(比如1000),那么历史质量就不会被显示。
 

你好。
请关注一个新手。
编译时没有错误或警告,但EA在测试器中无法打开订单...而且日志中没有任何错误...

原因可能是什么?已经尝试了不同的东西...

extern double Lot=0.1;            
extern int Slippage = 30;
extern int TakeProfit = 30;
extern int StopLoss   = 30;
extern int MA_Smoth_S = 60;
extern int MA_Smoth_B = 12;
extern int MA_Simpl_S = 3;
extern int MA_Simpl_B = 1;

int start()
         {
          int MA_Simpl_S_Op,      
              MA_Simpl_B_Op;      
                 
          MA_Smoth_S = iMA(NULL,0,MA_Smoth_S,0,MODE_SMMA,PRICE_CLOSE,1);
          MA_Smoth_B = iMA(NULL,0,MA_Smoth_B,0,MODE_SMMA,PRICE_CLOSE,1);
          MA_Simpl_S = iMA(NULL,0,MA_Simpl_S,0,MODE_SMA,PRICE_CLOSE,1);
          MA_Simpl_B = iMA(NULL,0,MA_Simpl_B,0,MODE_SMA,PRICE_CLOSE,1);
          MA_Simpl_S_Op = iMA(NULL,0,MA_Simpl_S,0,MODE_SMA,PRICE_CLOSE,2);
          MA_Simpl_B_Op = iMA(NULL,0,MA_Simpl_B,0,MODE_SMA,PRICE_CLOSE,2);
          
          //Условие для Buy______________________
          while(MA_Smoth_B > MA_Smoth_S)
               {
                if(MA_Simpl_B_Op < MA_Simpl_S_Op && MA_Simpl_B > MA_Simpl_S)
                  {
                   bool check = OrderSend(Symbol(),OP_BUY,Lot,NormalizeDouble(Ask, Digits),Slippage,Bid-StopLoss*Point,Ask+TakeProfit*Point,"Buy",0,0,clrGreen);
                   return(0);
                  }
               }
               
          //Условия для Sell_____________________
          while(MA_Smoth_S > MA_Smoth_B)
               {
                if(MA_Simpl_B_Op > MA_Simpl_S_Op && MA_Simpl_B < MA_Simpl_S)
                  {
                   check = OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bid, Digits),Slippage,Ask+StopLoss*Point,Bid-TakeProfit*Point,"Sell",0,0,clrRed);
                   return(0);
                  }   
               }     
          return(0);
         }
 
IndependentMK:

你好。
请关注一个新手。
编译时没有错误或警告,但EA在测试器中无法打开订单...而且日志中没有任何错误...

原因可能是什么?我已经尝试了不同的东西...

int X = 5;
if(X > 10 && X < 3)  int ticket = OrderSend(Symbol(), OP_SELL, Доп_Лот, NormalizeDouble(Bid, Digits), 3,  NormalizeDouble(Ask + StopLoss_S * Point, Digits),  NormalizeDouble(Bid - TakeProfit_S * Point, Digits), "", MAGIC_S, 0, CLR_NONE);
 

你怎么看?测试员会不会开仓?不,因为X不在测试范围内。这就是原因。将普林斯插入代码中,并分析测试人员的日志。

int start()
  {
   int MA_Simpl_S_Op,
       MA_Simpl_B_Op;
   MA_Smoth_S = iMA(NULL, 0, MA_Smoth_S, 0, MODE_SMMA, PRICE_CLOSE, 1);
   MA_Smoth_B = iMA(NULL, 0, MA_Smoth_B, 0, MODE_SMMA, PRICE_CLOSE, 1);
   MA_Simpl_S = iMA(NULL, 0, MA_Simpl_S, 0, MODE_SMA, PRICE_CLOSE, 1);
   MA_Simpl_B = iMA(NULL, 0, MA_Simpl_B, 0, MODE_SMA, PRICE_CLOSE, 1);
   MA_Simpl_S_Op = iMA(NULL, 0, MA_Simpl_S, 0, MODE_SMA, PRICE_CLOSE, 2);
   MA_Simpl_B_Op = iMA(NULL, 0, MA_Simpl_B, 0, MODE_SMA, PRICE_CLOSE, 2);
//Условие для Buy______________________
   Print(" MA_Smoth_B = ", MA_Smoth_B, " MA_Smoth_B = ", MA_Smoth_B);
   while(MA_Smoth_B > MA_Smoth_S)
     {
      Print(" MA_Simpl_B_Op = ", MA_Simpl_B_Op, " MA_Simpl_S_Op = ", MA_Simpl_S_Op);
      if(MA_Simpl_B_Op < MA_Simpl_S_Op)
        {
         Print(" MA_Simpl_B = ", MA_Simpl_B, " MA_Simpl_S = ", MA_Simpl_S);
         if(MA_Simpl_B > MA_Simpl_S)
           {
            bool check = OrderSend(Symbol(), OP_BUY, Lot, NormalizeDouble(Ask, Digits), Slippage, Bid - StopLoss * Point, Ask + TakeProfit * Point, "Buy", 0, 0, clrGreen);
            return(0);
           }
        }
     }
//Условия для Sell_____________________
   while(MA_Smoth_S > MA_Smoth_B)
     {
      if(MA_Simpl_B_Op > MA_Simpl_S_Op && MA_Simpl_B < MA_Simpl_S)
        {
         bool check = OrderSend(Symbol(), OP_SELL, Lot, NormalizeDouble(Bid, Digits), Slippage, Ask + StopLoss * Point, Bid - TakeProfit * Point, "Sell", 0, 0, clrRed);
         return(0);
        }
     }
   return(0);
  }
//+------------------------------------------------------------------+
Совершение сделок - Торговые операции - Справка по MetaTrader 5
Совершение сделок - Торговые операции - Справка по MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
ANDREY:

也就是说,点差要么是O,要么就是根本不显示点差值。这些数据是来自MT4还是MT5?那么这个数据来自哪个菜单项?

如果点差值是存在的,但由于某种原因没有显示,那么这个MT故障与我的MT5故障非常相似。Alpari说,历史深度对tick报价的质量没有影响,并认为我的问题隐藏在终端本身,建议与开发商联系。所以,就像你的例子一样,我在2010年有相同的历史质量值,但由于某些原因,它没有在MT5中显示 。如果根本没有刻度,或者其数量太少(比如1000),那么历史质量就不会被显示

这里是MT4的报价

2007.02.12, 00:00, 0.9051, 0.9087, 0.9047, 0.907, 3739

这里是MT5
1999.01.28 00:03:00 1.14450 1。14450 1.14450 1.14450 1 0 50
1999。01.28 00:13:00 1.14440 1.14440 1.14420 1.14420 3 0 50

感受不同...我很久以前就不再与蜱虫打交道了。而现在的情况是,我没有足够的精力与各种 "方便/好玩 "的人打交道。

把同样的专家顾问放在另一家经纪公司。那里的虱子是个什么问题。甚至在打开时,甚至同时打开和关闭。区别在于BOTH。也许有人已经解决了这个问题(蜱虫等),而我不知道如何处理它。而在MT5中,也有一个点差...

 
Александр:

以下是MT4的报价

2007.02.12, 00:00, 0.9051, 0.9087, 0.9047, 0.907, 3739

这里是MT5
1999.01.28 00:03:00 1.14450 1。14450 1.14450 1.14450 1 0 50
1999。01.28 00:13:00 1.14440 1.14440 1.14420 1.14420 3 0 50

感受不同...我很久以前就不再与蜱虫打交道了。而现在的情况是,我没有足够的精力与各种 "方便/好玩 "的人打交道。

把同样的专家顾问放在另一家经纪公司。那里的虱子是个什么问题。甚至在打开时,甚至同时打开和关闭。区别在于BOTH。也许有人已经解决了这个问题(蜱虫等),而我不知道如何处理它。而在MT5中,也有一个点差...

当然,你在所有这些问题上比我更先进......,这就是为什么我不理解你在某些地方的思维过程......
当我尝试使用Mt4时,例如我的代码显示出非常好的结果,Tiki代码......然后我了解到,我的非常好的结果并不完全准确,因为MT4没有考虑到真正的点差,Alpari的真实MT4点差不能被考虑到,因为它是浮动的(特别是在晚上)。 而我的专家顾问显示最好的结果只是从22到1。

在这个论坛上,我被告知,在测试过程中,只有在MT5上才会考虑到真实的点差(也就是确切的浮动)。 这促使我研究MT5,并在它的模型上运行我的代码--在真实的点差基础上的每个点。之后我就清醒了,因为我的代码没有显示出像MT4上那样好的结果。另一方面,在MT4上的代码的一些积极点,在MT5上也得到了证实。我很高兴能够改进我的代码,确信测试结果接近于真实的交易。

正因为如此,我不太理解(也许是由于缺乏知识和经验)你对测试蜱虫 病史的消极态度。毕竟,如果你不是按Сlose(如你所做的)打开交易,而是按打开订单请求中指定的任何价格打开交易(如我所做的),那么在ticks上测试有什么缺点
可能的缺点是,在我看来,只有一套不完整的刻度线,并且在加载的报价中省略了它们。 但是,与一分钟的蜡烛数量相比,刻度线的数量是巨大的。而且我还没有调查过缺失的刻度线(如蜡烛图)是否可以被检测到并添加到刻度线文件中。这就是为什么到目前为止我不得不相信Alpari的承诺,他们有自2001年以来的完整的tick历史。
,我仍然不明白其中的区别,看着你带来的烛台,我应该感到你的一些想法。

我不想在其他经纪商那里测试我的EA,因为如果我敢于进行现场交易,那将是在Alpari那里。此外,你自己也说过,这个经纪人拥有最完整和最可靠的tick数据。

我相信你有一些有价值的信息给我,不幸的是,我无法从你的话语中得到这些信息。

Тестирование торговых стратегий на реальных тиках
Тестирование торговых стратегий на реальных тиках
  • www.mql5.com
В данной статье мы покажем результаты тестирования простой торговой стратегии в 3-х режимах: " OHLC на M1 " с использованием только цен Open,High, Low и Close минутных баров; затем детальное моделирование в режиме " Все тики ", и самое достоверное тестирование в режиме " Каждый тик на основе реальных тиков " с использованием записанных тиков из...
 
ANDREY:


你对蜱虫 病史的检测 持消极态度。毕竟,如果你不是按Сlose(如你所做的)而是按开单请求中指定的任何价格开单(如我所做的),那么按ticks测试的缺点是什么

我仍然不明白,当我看到你用来证明你的想法的烛台参数时,我应该感到有什么不同。

我不想在其他经纪商那里测试我的EA,因为如果我敢于进行现场交易,那将是在Alpari那里。此外,你自己也说过,这个经纪人拥有最完整和最可靠的tick数据。

我相信你有一些有价值的信息给我,不幸的是,到目前为止,我还没能从你的话语中把握住这些信息。

1.消极的态度...不,这不是消极的。只是你试着等了几个星期才完成测试,然后发现报价不够好,强烈影响了结果。 所有的经纪公司都对报价进行过滤。滤波器会扭曲它们。我走的路线是写一个对报价质量不挑剔的EA。

2.MT4和MT5之间的报价差异是,我开始认为MT5对每个汇率都有一个点差。这是为什么呢?我不知道。离线时,这个价差已经达到了最大值。离线是走来走去。也就是说,我们应该制作一个不具有关键性的系统。见第1 G点)。

这就是它的全部内容。没有潜台词。

 
Александр:

1.消极的态度...不,这不是消极的。只是你推动,你等了几个星期才完成测试,然后发现报价不够好,这对结果有很大影响。 所有DC都对报价进行过滤。滤波器会扭曲它们。我走的路线是写一个对报价质量不挑剔的EA。

2.MT4和MT5之间的报价差异是,我开始认为MT5对每个汇率都有一个点差。这是为什么呢?我不知道。离线时,这个价差已经达到了最大值。离线是走来走去。也就是说,我们应该制作一个不具有关键性的系统。见第1 G点)。

这就是它的全部内容。没有潜台词。

".......,然后发现报价不够好,强烈影响了结果。过滤器会扭曲它们。...."


假设有一个从2008年开始,自动从Alpari服务器下载到MT5进行测试的货币对的tick真实 报价。你如何确定这些引言不够好?一般来说,你以什么标准来评估报价的质量?哪些参数应该有最佳质量的勾选 报价?
正如Alpari所说,打勾报价 不是模拟或生成的,而是取自有记录的历史。根据我的理解,....带来了另一个打勾的任何报价--Alpari打勾,并记录了这个报价。以此类推,每一次打勾 都是如此。因此,他们有一个巨大的带价格的点阵数据库,他们下载到MT5进行测试。只有当一个必要的报价或其序列因某种原因而缺失时,Alpari才会不遗漏真实的价格点,而是根据接近真实价格点的算法来模拟这些价格点的出现。

这就是为什么我不太理解对报价的质量可能会有什么抱怨。作为一种选择,我可以想象,一个刻度线已经到来,并带来了价格,例如,1.00061。但是Alpari为这个刻度线分配了一个不同的价格,比如说1.00077或者他们可以在这个蜱虫上附加一个与现实中不同的传播。但如果真的是这样,一个陌生人是无法发现这种改变的,尤其是在深厚的历史上。所以当然可以说Alpari已经用报价过滤掉了这个勾。但在我看来,要证明这一点实际上是不可能的。因为除了相关的Alpari专家,没有人知道被过滤的tick的主要价格或价差是多少。唯一可能的变数是,这位专家会向某人透露这个秘密,甚至可能以书面形式确认这一事实。但是,在我看来,这种有文件证据的信息会立即出现在这个论坛上。


"...所有DC都是过滤性报价。滤波器扭曲了它们....."


我已经读过很多次这方面的文章。但这次过滤是关于真正的交易。而在我看来,这种过滤对经纪公司来说是合理的。在它的帮助下,他们可以避免大的损失,如果经纪公司没有进入市场,大量的头寸与非常大的成交量可以在止盈点关闭。而当经纪公司提供测试报价时,过滤有什么用呢?

Основы тестирования в MetaTrader 5
Основы тестирования в MetaTrader 5
  • www.mql5.com
Идея автоматической торговли привлекательна тем, что торговый робот может без устали работать 24 часа в сутки и семь дней в неделю. Робот не знает усталости, сомнений и страха,  ему не ведомы психологические проблемы. Достаточно четко формализовать торговые правила и реализовать их в виде алгоритмов, и робот готов неустанно трудиться. Но прежде...
 

你能告诉我在亏损平仓 时如何获得x2的比率吗?

现在我得到了1,4,9,16--而我需要2,4,8,16。

代码中要修正什么?

 int cn=0,c=0;
  datetime dt=0;
   for(int i=OrdersHistoryTotal()-1; i>=0; i--){
    if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && OrderType()<=1) {
     if((OrderSymbol()==mSymbol)&&(OrderMagicNumber()==Magic)) {
       double Profit=OrderProfit()+OrderCommission()+OrderSwap();
        if(Profit<0) {  
        c++;   
        cn=(int)MathPow(c,2); // что здесь исправить?
        } else break;     
 }}}
   Comment(cn);
 
Denis Pershin:

你能告诉我,当一个头寸 以亏损收盘 时,如何获得x2的乘数。

现在我得到了1,4,9,16--而我需要2,4,8,16。

代码中要修正什么?

一切都需要修复。

你的代码从订单历史中搜索第一个具有指定符号和神奇数字的订单。

然后计算无利可图的订单数量并乘以2。

在论坛上搜索"CMM的有用功能",然后做这样的事情

- 找到我们的符号和我们的魔法 的最后订单的票。

- 从找到的票据中获得OrderProfit()和OrderLots(),如有必要,乘以你的马丁格尔系数。

ZS:可能有一个现成的解决方案

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