[存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. - 页 5

 
granit77:

问题:我如何把一个干净的终端? 毕竟,当我试图重新启动时,系统会自动识别我,允许我重新加载终端文件,并保存以前积累的信息:模拟账户、书面指标等。显然,在保存的文件中,有一个文件不允许重新加载历史数据。 :)
 
你好,我的问题是,MT4 EAs是否可以在这个设备上工作?
 
boris.45:
只需从你的经纪人那里再次下载,并把它放在一个不同的目录中。如果你需要的话,请手动输入你的模拟账户用户名和密码,但最好是开一个新的账户。
就像一个新生的婴儿,你将完全无罪。
 
afirius:
你好!问题是MT4的EA是否能在这个设备上工作
会的!
 
酷)终于有了万能药。)
T-G:
将会是!
 
谁愿意帮忙,把这个专家的代码中的买入改为卖出?
附加的文件:
ema_wma.mq4  5 kb
 

嗨,问题是这样的。

同一专家顾问在模拟账户和测试器中正常交易,但在真实账户 中却拒绝工作或工作不正常。

我应该怎么做才能解决这个问题?

extern int ma1 = 7;
extern int ma2 = 100;
extern int ma3 = 200;
extern int ma4 = 300;
extern int shift = 15;
extern double StartLot = 0.5;
extern double LotStep = 0.25;
extern int candleAmount = 25;
extern bool workAlone = true;

double   MA1;
double   MA2;
double   MA3;
double   MA4;
int      Trend;
int      i;
datetime shiftTime;
int      ticket;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   if (Digits == 3 || Digits == 5)
      shift = shift*10;
   MA1 = iMA(NULL,0,ma1,0,MODE_SMA,PRICE_CLOSE,1);
   MA2 = iMA(NULL,0,ma2,0,MODE_SMA,PRICE_CLOSE,1);
   MA3 = iMA(NULL,0,ma3,0,MODE_SMA,PRICE_CLOSE,1);
   MA4 = iMA(NULL,0,ma4,0,MODE_SMA,PRICE_CLOSE,1);
   if (MA1<MA2 && MA1<MA3 && MA1<MA4)        {Trend = 1;}
   else if (MA1>MA2 && MA1>MA3 && MA1>MA4)   {Trend = 4;}
   else                                      {Trend = 2;}
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
   MA1 = iMA(NULL,0,ma1,0,MODE_SMA,PRICE_CLOSE,1);
   MA2 = iMA(NULL,0,ma2,0,MODE_SMA,PRICE_CLOSE,1);
   MA3 = iMA(NULL,0,ma3,0,MODE_SMA,PRICE_CLOSE,1);
   MA4 = iMA(NULL,0,ma4,0,MODE_SMA,PRICE_CLOSE,1);

   if (Trend == 2)
   {  if (MA1<MA2 && MA1<MA3 && MA1<MA4)
      {  for (i = OrdersTotal(); i >= 0; i--)
         {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderType() == OP_BUY)
               OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),shift,Blue);
         }
         shiftTime = Time[0];
         if (OrdersTotal() == 0 || !workAlone)
         {  ticket = OrderSend(Symbol(),OP_SELL,LotsOptimized(Symbol()),NormalizeDouble(Bid,Digits),shift,0,0,"",777,0,Red);
            if (OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))
               shiftTime = OrderOpenTime();
         }
         Trend = 1;
      }
      else if (MA1>MA2 && MA1>MA3 && MA1>MA4)
      {  for (i = OrdersTotal(); i >= 0; i--)
         {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderType() == OP_SELL)
              OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),shift,Red);
         }
         shiftTime = Time[0];
         if (OrdersTotal() == 0 || !workAlone)
         {  ticket = OrderSend(Symbol(),OP_BUY,LotsOptimized(Symbol()),NormalizeDouble(Ask,Digits),shift,0,0,"",777,0,Blue);
            if (OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))
               shiftTime = OrderOpenTime();
         }
         Trend = 4;
      }
   }

   if (Trend == 1)
   {  if (MA1>MA2 || MA1>MA3 || MA1>MA4)
      {  Trend = 2;
         if (iBarShift(NULL,0,shiftTime,false) >= candleAmount)
         {  for (i = OrdersTotal(); i >= 0; i--)
            {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
               {  OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),shift,Red);}}}}}

   if (Trend == 4)
   {  if (MA1<MA2 || MA1<MA3 || MA1<MA4)
      {  Trend = 2;
         if (iBarShift(NULL,0,shiftTime,false) >= candleAmount)
         {  for (i = OrdersTotal(); i >= 0; i--)
            {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
               {  OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),shift,Blue);}}}}}
//----
   return(0);
  }

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

double LotsOptimized(string symbol)
{  double lot = StartLot;
   int    losses = 0;
   if (LotStep > 0)
   {  for (int c = OrdersHistoryTotal() - 1; c >= 0; c--)
      {  if (OrderSelect(c,SELECT_BY_POS,MODE_HISTORY) == false) break;
         if (OrderSymbol() != symbol) continue;
         //----
         if (OrderProfit() > 0) break;
         if (OrderProfit() < 0) losses++;
      }
      if (losses >= 1) lot = NormalizeDouble(lot + LotStep * losses,2);
   }
   if (lot < MarketInfo(symbol,MODE_MINLOT)) lot = MarketInfo(symbol,MODE_MINLOT);
   return (lot);
}

//+------------------------------------------------------------------+ 
 
deboir:

嗨,问题是这样的。

同一专家顾问在模拟账户和测试器中正常交易,但在真实账户中却拒绝工作或工作不正常。

我应该怎么做才能解决这个问题?


奇迹不会发生。你有什么经纪公司?如果你的订单包含设置止损和/或获利的指示,一些经纪公司不允许你下市场订单。例如,Broco就是这样的。在那里,你必须先开一个市场订单,然后才通过修改来下止损单。
 
我专门用参数x=1进行了测试,然后是参数x=2,然后我把x从1优化到2的步骤1。所有的复选框都关闭了,也跳过了无用的切割。遗传算法已经打开和关闭了。结果是不同的,请帮助。

,我取消了 "跳过无用的切割",切割出现了。只是它们与简单的测试不同。例如,在参数x=1时,简单测试结果是500笔交易,x=2-700笔。我应该优化这个参数,x=1现在得到了1笔交易,x=2也得到了1笔交易。我的专家顾问使用的是虚拟图形修改,是否有可能是优化未能创建一个图形对象

,这可能是什么,我已经在测试器中试过了,订单开仓和平仓都正常,我选择了参数,我测试了所有结果都被拒绝,我在测试中手动改变了这个参数,一切正常。 我在优化期间激活了遗传算法,禁用它,改变我的设置。
 

Dzhini, Eddy

对重复的帖子发出警告。重复的帖子已被删除。从现在开始会有一个禁令。