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

 
gyulnara.kosareva:
你好,如果我只有EA的ex文件,我可以安装一个没有mql4文件的EA吗?

是的,这就是.ex文件的作用。

 
大家好。
我的安卓机上安装了400.1129版本的MT4应用程序,直到2019年10月29日,该应用程序一直工作得很好。周五我开始在手机上打开它,闪屏显示我正在开一个新的模拟账户,然后应用程序立即关闭。而我发现自己在桌面上。接下来的十几次尝试都以同样的结果告终。取下终端,从播放列表中下载新的终端,安装后运行,结果相同--应用程序崩溃。我从市场上下载了Rojo外汇MT4,安装并启动它,它像时钟一样工作。我还从Market下载了MT5的500.1780版本,安装并运行,开设了模拟账户,一切运行正常。
如果我想让MT4再次在我的手机上工作,请告知该如何做!?请。
 

大家好,请告诉我出了什么问题?市场中的策略测试员抱怨重新报价 -NEW_ORDER(): lot=0.20;POSITION_TYPE_BUY(EURUSD); err: 4756/发送交易请求失败; retcode: 10004/重新报价

我在哪里可以读到更多关于这个错误的信息以及如何修复它?

 
Nikolai Konstantinov:

大家好,请告诉我出了什么问题?市场中的策略测试员抱怨重新报价 -NEW_ORDER(): lot=0.20;POSITION_TYPE_BUY(EURUSD); err: 4756/发送交易请求失败; retcode: 10004/重新报价

我在哪里可以读到更多关于这个错误的信息以及如何修复它?


这不是一个错误,而是一个市场情况。
1.在发送交易执行前更新价格。
2.修复后重新开放
3.增加滑移率
 
Vladislav Andruschenko:

这不是一个错误,这是一个市场情况。
1.在发送交易执行前更新价格。
2.修复后重新开放。
3.增加滑移率

谢谢你,但你写的一切都已经说明了。还有什么需要考虑的吗?

 

你好!请帮助我

突然间,MT4开始挂起。都是来自不同的经纪公司。

启动时,终端 挂起。经理在前面说 "没有反应"。对任何事情都没有反应,在MT面板的底部标明没有连接。

重新启动终端,从不同的经纪人那里更换终端,删除并重新安装,用Clean程序清理数据,关闭和打开计算机 - 没有得到结果。

它仍然是重新安装操作系统,但如此不情愿。

也许有人曾经有过这样的事情?

有什么建议吗?

 
odyn:

剩下的就是重新安装操作系统,但很不情愿。

另外,在虚拟机上安装 操作系统和终端,我安装了Oracle VM VirtualBox,没有任何问题,MT4/MT5也能工作。

如果这是操作系统的问题,你需要重新安装它。


我自己检查过了,它在MT4和MT5上运行没有任何问题。

 
odyn:

你好!请帮助我

突然间,MT4开始挂起。都是来自不同的经纪公司。

启动时,终端 挂起。经理在前面说 "没有反应"。对任何事情都没有反应,在MT面板的底部标明没有连接。

重新启动终端,从不同的经纪人那里更换终端,删除并重新安装,用Clean程序清理数据,关闭和打开计算机 - 没有得到结果。

它仍然是重新安装操作系统,但如此不情愿。

也许有人曾经有过这样的事情?

请告知谁可以。

Internet Explorer可能是问题的根源

从情况来看--必须升级或回滚 :-)而且绝不允许各种附加组件、插件和扩展。

作者决定,探索者组件在显示市场/信号/新闻/聊天方面占优势,但探索者本身是一个永久的测试版。而它的问题 "干扰 "了终端

 

大家好。

我们能否改变代码中的条件:"Expert Advisor根据上一个仓位的收盘情况开仓。如果没有头寸,它的开仓取决于前一个蜡烛图的方向",我们应该把它改为可以在离当前价格一定距离的地方放置2个挂单,而且,当其中一个挂单触发时,第2个挂单将被删除。算法的其余部分保持不变。

我自己进行了调整,但无法实现一个工作版本。

#property description "Советник открывает позицию в зависимости от закрытия прошлой позиции. Если позиции не было то в зависимости от направления прошлой свечи"
#property description "При достижение Т/P следующий ордер открывается в эту же сторону"
#property description "При достижение S/L следующий открывается в противоположную сторону"
//+------------------------------------------------------------------
#property  show_inputs
//+------------------------------------------------------------------
enum TT {BUY, SELL, BUYLIMIT, SELLLIMIT, BUYSTOP, SELLSTOP};
enum YN {No,Yes};
//+------------------------------------------------------------------
extern TT     Type         = BUY;
extern double Price        = 0; 
extern int    Distance     = 0;
extern int    stoploss     = 300,
              takeprofit   = 300;
extern double risk         = 0.01; //процент от депозита для рассчета объема первой позиции
extern double KoeffMartin  = 2.0;
extern int    OkrLOT       = 2;//округление лота
extern int    slippage     = 3;//Максимально допустимое отклонение цены для рыночных ордеров
extern int    MagicNumb    = 77;//Magic

double MINLOT,MAXLOT;                                  
//+------------------------------------------------------------------+
int OnInit()
{
   MAXLOT = MarketInfo(Symbol(),MODE_MAXLOT);
   MINLOT = MarketInfo(Symbol(),MODE_MINLOT);
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
void OnTick()
{
   double OSL,OTP,OOP,SL,TP;
   int tip;
   double STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);
   for (int i=0; i
   {
      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {
         if (OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumb)
         {
            tip = OrderType(); 
            OSL = NormalizeDouble(OrderStopLoss(),Digits);
            OTP = NormalizeDouble(OrderTakeProfit(),Digits);
            OOP = NormalizeDouble(OrderOpenPrice(),Digits);
            SL=OSL;TP=OTP;
            if (tip==OP_BUY)             
            {  
               if (OSL==0 && stoploss>=STOPLEVEL && stoploss!=0)
               {
                  SL = NormalizeDouble(OOP - stoploss   * Point,Digits);
               } 
               if (OTP==0 && takeprofit>=STOPLEVEL && takeprofit!=0)
               {
                  TP = NormalizeDouble(OOP + takeprofit * Point,Digits);
               } 
               if (SL != OSL || TP != OTP)
               {  
                  if (!OrderModify(OrderTicket(),OOP,SL,TP,0,White)) Print("Error OrderModify <<",GetLastError(),">> ");
               }
            }                                         
            if (tip==OP_SELL)        
            {
               if (OSL==0 && stoploss>=STOPLEVEL && stoploss!=0)
               {
                  SL = NormalizeDouble(OOP + stoploss   * Point,Digits);
               }
               if (OTP==0 && takeprofit>=STOPLEVEL && takeprofit!=0)
               {
                  TP = NormalizeDouble(OOP - takeprofit * Point,Digits);
               }
               if (SL != OSL || TP != OTP)
               {  
                  if (!OrderModify(OrderTicket(),OOP,SL,TP,0,White)) Print("Error OrderModify <<",GetLastError(),">> ");
               }
            } 
            return;
         }
      }
   }
   tip=-1;
   double Lot=0;
    for (i=OrdersHistoryTotal()-1; i>=0; i--)
   {
      if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
      {
         if (OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumb)
         {
            if (OrderProfit()<0) 
            {
               Lot=lot(OrderLots(),KoeffMartin);
               tip=OrderType();
            }
            else 
            {
               Lot=lot(0,1);
               if (OrderType()==OP_BUY)  tip=OP_SELL;
               if (OrderType()==OP_SELL) tip=OP_BUY;
            }
            break;
         }
      }
   }

   if (tip==-1)
   {
      Lot=lot(0,1);
      if (Open[1]>Close[1]) tip=OP_BUY;
      else tip=OP_SELL;
   }
   if (tip==OP_BUY) if (OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bi  d,Digits),slippage,0,0,NULL,MagicNumb,Blue)!=-1) Comment("Open Sell");
   if (tip==OP_SELL) if (OrderSend(Symbol(),OP_BUY ,Lot,NormalizeDouble(Ask,Digits),slippage,0,0,NULL  ,MagicNumb,Blue)!=-1) Comment("Open Buy");                               
}
//--------------------------------------------------------------------

double lot(double l,double k)

{

   double ML = AccountFreeMargin()/MarketInfo(Symbol(),MODE_MARGINREQUIRED);

   if (k==1) l = ML*risk/100;
   else l = NormalizeDouble(l*k,OkrLOT);
   if (l>ML) l = ML;
   if (l>MAXLOT) l = MAXLOT;
   if (l
   return(l);
}
//-----------------------------------------------------------------
            {
               Lot=lot(0,1);
               if (OrderType()==OP_BUY)  tip=OP_SELL;
               if (OrderType()==OP_SELL) tip=OP_BUY;
            }
            break;
         }
      }
   }

   if (tip==-1)
   {
      Lot=lot(0,1);
      if (Open[1]>Close[1]) tip=OP_BUY;
      else tip=OP_SELL;
   }
   
   if (tip==OP_BUY) if (OrderSend(Symbol(),OP_SELL,Lot,NormalizeDouble(Bi  d,Digits),slippage,0,0,NULL,MagicNumb,Blue)!=-1) Comment("Open Sell");
   if (tip==OP_SELL) if (OrderSend(Symbol(),OP_BUY ,Lot,NormalizeDouble(Ask,Digits),slippage,0,0,NULL  ,MagicNumb,Blue)!=-1) Comment("Open Buy");                                 
}
//--------------------------------------------------------------------
double lot(double l,double k)
{
   double ML = AccountFreeMargin()/MarketInfo(Symbol(),MODE_MARGINREQUIRED);
   if (k==1) l = ML*risk/100;
   else l = NormalizeDouble(l*k,OkrLOT);
   if (l>ML) l = ML;
   if (l>MAXLOT) l = MAXLOT;
   if (l
   return(l);
}
//-----------------------------------------------------------------
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Приказы на проведение торговых операций оформляются ордерами. Каждый ордер имеет множество свойств для чтения, информацию по ним можно получать с помощью функций Идентификатор позиции, который ставится на ордере при его исполнении. Каждый исполненный ордер порождает сделку, которая открывает новую или изменяет уже существующую позицию...
附加的文件:
SSSR_v.1.mq4  11 kb
 
我试着重新表述一下上一个帖子。

//--------------------------------------
根据该算法,专家顾问根据前一个仓位的收盘情况开仓。
如果没有头寸,则根据最后一根蜡烛的方向打开。

这一算法应改为。

购买。

在设置中指定的价格下2个挂单 BuyStop,在设置中指定的价格下SellStop。
只要价格达到其中一个止损单,它就会进入一个市场位置,并设置ТР和SL。没有触发的订单被删除。

算法的其余部分保持不变,即 "当达到TP/P时,在同一方向上开出下一个订单"。
"当达到S/L时,下一个订单就会向相反的方向打开"
//---------------------------------------------------