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

 
ponochka:
你好!我使用该功能对屏幕进行了截图。
WindowScreenShot ("Screenshotname.png",1280,720); 但它把所有东西都保存在Files文件夹中,而我需要在另一个文件夹中指定路径,这样才能保存它!
使用符号链接
 

你好!

最初,在专家顾问中实现了通过自由保证金紧急锁定的可能性。 以下是代码的一部分

如果(AccountFreeMargin()<= inpMarginLock)

{

gv.isEmergencyLock = true。

.....................

随着时间的推移,人们发现这并不完全方便。

我想通过缩减来实现紧急锁定。

比如说,当存款达到-100美元时,锁应该被激活。

我想请教一下,我是否可以添加这段代码来代替AccountFreeMargin(), 以触发

帮助我在代码中写上FreeMargin(),而不是在自由保证金上发生阻断,而是在存款上发生缩减时发生。

预先感谢!!!!!!!

 
你好,我有一个问题,当我按下F9时,我得到了通常的菜单,以打开一个订单,但我必须选择一个符号对,而不是像以前那样,我打开的符号的菜单会消失,告诉我如何解决这个问题。
 
Andrey Sablin:
你好,我有一个问题,当我按下F9时,我得到了通常的菜单,以打开一个订单,但我必须选择一个符号对,而不是像以前那样,我打开的符号的菜单会消失,告诉我如何解决这个问题。

服务 --> 设置 --> 交易


 

下午好)

请帮助我,我是一个新手.....,想在超级信号通道和ZigZag指标的交叉点上做一个EA,发现了一个模板。我把指标扔进去了,但订单还是打不开。这里是代码的一部分....,我做错了什么?

空白 信号(double&ar[][],bool&op[],bool&cl[])

{

int trd=-1;

双倍up=0.0,dn=0.0。

//---

ArrayInitialize(cl,false)。

ArrayInitialize(op,false)。

//连接ZigZag过滤指标

up=iCustom(_Symbol,tf, "ZigZag",InpDepth,InpDeviation,InpBackstep,0,0);//名称,设置,缓冲区,BUY的起始蜡烛。

dn=iCustom(_Symbol,tf, "ZigZag",InpDepth,InpDeviation,InpBackstep,0,0);//名称,设置,缓冲区,SELL的蜡烛开始时间

如果(dn==EV) trd=0。

if(up==EV) trd=0; //Comment(trd);

//连接反转和退出指标

up=iCustom(_Symbol,tf, "SuperSignalsChannel_1",SignalGap_1,ShowBars_1,dist_1,0,0);//开始买入的蜡烛图

dn=iCustom(_Symbol,tf, "SuperSignalsChannel_1",SignalGap_1,ShowBars_1,dist_1,1,0,0);//SELL的起始蜡烛图

如果(up>0.0 && up<EV) cl[1]=true。

如果(dn>0.0 && dn<EV) cl[0]=true。

up=0.0。

dn=0.0。

// 基本指标,我们 通过它进入市场

开关(指示器)

{

case SuperSignalsChannel:

up=iCustom(_Symbol,tf, "SuperSignalsChannel",SignalGap,ShowBars,dist_0,1,0);//买入时的起始蜡烛图

dn=iCustom(_Symbol,tf, "SuperSignalsChannel",SignalGap,ShowBars,dist_0,0,0);//SELL的起始蜡烛图

突破。


P.S. 如果论坛上有类似的主题,请留下链接。

 


下午好。我有这个EA,我正试图修改它以适应我的需要,但到目前为止,它不是很好。订单在高价和低价时打开,但我需要它是高价+5点。 我知道这是负责的,但我不能在代码中应用它。我希望得到帮助。谢谢))))

//+------------------------------------------------------------------+
//|                                                 
//+------------------------------------------------------------------+


extern string TimeTrade  = "19:00";    // Время открытия позиции
extern int    DistanceSet    = 100;
extern int TYPE = 0;
extern int TP = 50;
extern int SL = 4500;
extern double lot = 0.1;
extern int Magic_Number = 639713;

int init(){   return(0);}
int deinit(){   return(0);}
int start()
{
   double SPREAD = MarketInfo(Symbol(),MODE_SPREAD)*Point;
   double STOPLEVEL = MarketInfo(Symbol(),MODE_STOPLEVEL)*Point;
   double pAsk=Ask+(DistanceSet)*Point;
  double pBid=Bid-DistanceSet*Point;

   if(Orders_Total( Magic_Number, Symbol()) == 0 )
   {
      //Установка ордеров
      if(TYPE<=0)
      {
         // Здесь установим STOP-ордера
         if(iHigh(Symbol(),PERIOD_D1,1)+SPREAD - STOPLEVEL > Ask)
            OrderSend(Symbol(),OP_BUYSTOP,lot,iHigh(Symbol(),PERIOD_D1,1)+SPREAD,3,iHigh(Symbol(),PERIOD_D1,1) - SL*Point,iHigh(Symbol(),PERIOD_D1,1) + TP*Point,NULL,Magic_Number,iTime(Symbol(),PERIOD_D1,0)+PERIOD_D1*60,Aqua);
         else Alert("Невозможно установить OP_BUYSTOP, цена слишком близка или выше High");
         if(iLow(Symbol(),PERIOD_D1,1) + STOPLEVEL < Bid)
            OrderSend(Symbol(),OP_SELLSTOP,lot,iLow(Symbol(),PERIOD_D1,1),3,iLow(Symbol(),PERIOD_D1,1) + SPREAD + SL*Point,iLow(Symbol(),PERIOD_D1,1) + SPREAD - TP*Point,NULL,Magic_Number,iTime(Symbol(),PERIOD_D1,0)+PERIOD_D1*60,Magenta);
         else Alert("Невозможно установить OP_SELLSTOP, цена слишком близка или ниже Low");
      }
      if(TYPE>=1)
      {
         // Здесь установим LIMIT-ордера
         if(iHigh(Symbol(),PERIOD_D1,1) - STOPLEVEL > Bid)
            OrderSend(Symbol(),OP_SELLLIMIT,lot,iHigh(Symbol(),PERIOD_D1,1),3,iHigh(Symbol(),PERIOD_D1,1) + SPREAD + SL*Point,iHigh(Symbol(),PERIOD_D1,1) + SPREAD - TP*Point,NULL,Magic_Number,iTime(Symbol(),PERIOD_D1,0)+PERIOD_D1*60,Magenta);
         else Alert("Невозможно установить OP_SELLLIMIT, цена слишком близка или выше High");
         if(iLow(Symbol(),PERIOD_D1,1) + STOPLEVEL < Ask)
            OrderSend(Symbol(),OP_BUYLIMIT,lot,iLow(Symbol(),PERIOD_D1,1)+SPREAD,3,iLow(Symbol(),PERIOD_D1,1) - SL*Point,iLow(Symbol(),PERIOD_D1,1) + TP*Point,NULL,Magic_Number,iTime(Symbol(),PERIOD_D1,0)+PERIOD_D1*60,Aqua);
         else Alert("Невозможно установить OP_BUYLIMIT, цена слишком близка или ниже Low");
      }
   }
   return(0);
}


//---- Возвращает количество ордеров указанного эксперта(Маджик,Символ) ----//
int Orders_Total( int mn, string sym)
{
   int num_orders=0;
   for(int i= OrdersTotal()-1;i>=0;i--)
   {
      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(OrderMagicNumber() == mn && sym==OrderSymbol())
         num_orders++;
   }
   return(num_orders);
}



 
Aleksandr SHablevskiy:


下午好。我有这个EA,我正试图修改它以适应我的需要,但到目前为止,它不是很好。订单在高价和低价时打开,但我需要它是高价+5点。 我知道这是负责的,但我不能在代码中应用它。我希望得到帮助。谢谢))))




extern string TimeTrade  = "19:00";    // Время открытия позиции

extern int    DistanceSet    = 100;

extern int    DistanceStopOrder    = 5;

extern int    DistanceLimitOrder   = 5;

extern int TYPE = 0;

extern int TP = 50;

extern int SL = 4500;

extern double lot = 0.1;

extern int Magic_Number = 639713;


int init(){   return(0);}

int deinit(){   return(0);}

int start()

{

   double SPREAD = MarketInfo(Symbol(),MODE_SPREAD)*Point;

   double STOPLEVEL = MarketInfo(Symbol(),MODE_STOPLEVEL)*Point;

   double pAsk=Ask+(DistanceSet)*Point;

   double pBid=Bid-DistanceSet*Point;


   if(Orders_Total( Magic_Number, Symbol()) == 0 )

   {

      //Установка ордеров

      if(TYPE<=0)

      {

         // Здесь установим STOP-ордера

         if(iHigh(Symbol(),PERIOD_D1,1)+SPREAD - STOPLEVEL > Ask)

            OrderSend(Symbol(),OP_BUYSTOP,lot,iHigh(Symbol(),PERIOD_D1,1)+DistanceStopOrder*Point,3,iHigh(Symbol(),PERIOD_D1,1) - SL*Point,iHigh(Symbol(),PERIOD_D1,1) + TP*Point,NULL,Magic_Number,iTime(Symbol(),PERIOD_D1,0)+PERIOD_D1*60,Aqua);

         else Alert("Невозможно установить OP_BUYSTOP, цена слишком близка или выше High");

         if(iLow(Symbol(),PERIOD_D1,1) + STOPLEVEL < Bid)

            OrderSend(Symbol(),OP_SELLSTOP,lot,iLow(Symbol(),PERIOD_D1,1)-DistanceStopOrder*Point,3,iLow(Symbol(),PERIOD_D1,1) + SPREAD + SL*Point,iLow(Symbol(),PERIOD_D1,1) + SPREAD - TP*Point,NULL,Magic_Number,iTime(Symbol(),PERIOD_D1,0)+PERIOD_D1*60,Magenta);

         else Alert("Невозможно установить OP_SELLSTOP, цена слишком близка или ниже Low");

      }

      if(TYPE>=1)

      {

         // Здесь установим LIMIT-ордера

         if(iHigh(Symbol(),PERIOD_D1,1) - STOPLEVEL > Bid)

            OrderSend(Symbol(),OP_SELLLIMIT,lot,iHigh(Symbol(),PERIOD_D1,1)-DistanceLimitOrder*Point,3,iHigh(Symbol(),PERIOD_D1,1) + SPREAD + SL*Point,iHigh(Symbol(),PERIOD_D1,1) + SPREAD - TP*Point,NULL,Magic_Number,iTime(Symbol(),PERIOD_D1,0)+PERIOD_D1*60,Magenta);

         else Alert("Невозможно установить OP_SELLLIMIT, цена слишком близка или выше High");

         if(iLow(Symbol(),PERIOD_D1,1) + STOPLEVEL < Ask)

            OrderSend(Symbol(),OP_BUYLIMIT,lot,iLow(Symbol(),PERIOD_D1,1)+DistanceLimitOrder*Point,3,iLow(Symbol(),PERIOD_D1,1) - SL*Point,iLow(Symbol(),PERIOD_D1,1) + TP*Point,NULL,Magic_Number,iTime(Symbol(),PERIOD_D1,0)+PERIOD_D1*60,Aqua);

         else Alert("Невозможно установить OP_BUYLIMIT, цена слишком близка или ниже Low");

      }

   }

   return(0);

}



//---- Возвращает количество ордеров указанного эксперта(Маджик,Символ) ----//

int Orders_Total( int mn, string sym)

{

   int num_orders=0;

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

   {

      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

      if(OrderMagicNumber() == mn && sym==OrderSymbol())

         num_orders++;

   }

   return(num_orders);//---

   

  }

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



 
Lehfr:

extern string TimeTrade  = "19:00";    // Время открытия позиции

extern int    DistanceSet    = 100;

extern int    DistanceStopOrder    = 5;

extern int    DistanceLimitOrder   = 5;

extern int TYPE = 0;

extern int TP = 50;

extern int SL = 4500;

extern double lot = 0.1;

extern int Magic_Number = 639713;


int init(){   return(0);}

int deinit(){   return(0);}

int start()

{

   double SPREAD = MarketInfo(Symbol(),MODE_SPREAD)*Point;

   double STOPLEVEL = MarketInfo(Symbol(),MODE_STOPLEVEL)*Point;

   double pAsk=Ask+(DistanceSet)*Point;

   double pBid=Bid-DistanceSet*Point;


   if(Orders_Total( Magic_Number, Symbol()) == 0 )

   {

      //Установка ордеров

      if(TYPE<=0)

      {

         // Здесь установим STOP-ордера

         if(iHigh(Symbol(),PERIOD_D1,1)+SPREAD - STOPLEVEL > Ask)

            OrderSend(Symbol(),OP_BUYSTOP,lot,iHigh(Symbol(),PERIOD_D1,1)+DistanceStopOrder*Point,3,iHigh(Symbol(),PERIOD_D1,1) - SL*Point,iHigh(Symbol(),PERIOD_D1,1) + TP*Point,NULL,Magic_Number,iTime(Symbol(),PERIOD_D1,0)+PERIOD_D1*60,Aqua);

         else Alert("Невозможно установить OP_BUYSTOP, цена слишком близка или выше High");

         if(iLow(Symbol(),PERIOD_D1,1) + STOPLEVEL < Bid)

            OrderSend(Symbol(),OP_SELLSTOP,lot,iLow(Symbol(),PERIOD_D1,1)-DistanceStopOrder*Point,3,iLow(Symbol(),PERIOD_D1,1) + SPREAD + SL*Point,iLow(Symbol(),PERIOD_D1,1) + SPREAD - TP*Point,NULL,Magic_Number,iTime(Symbol(),PERIOD_D1,0)+PERIOD_D1*60,Magenta);

         else Alert("Невозможно установить OP_SELLSTOP, цена слишком близка или ниже Low");

      }

      if(TYPE>=1)

      {

         // Здесь установим LIMIT-ордера

         if(iHigh(Symbol(),PERIOD_D1,1) - STOPLEVEL > Bid)

            OrderSend(Symbol(),OP_SELLLIMIT,lot,iHigh(Symbol(),PERIOD_D1,1)-DistanceLimitOrder*Point,3,iHigh(Symbol(),PERIOD_D1,1) + SPREAD + SL*Point,iHigh(Symbol(),PERIOD_D1,1) + SPREAD - TP*Point,NULL,Magic_Number,iTime(Symbol(),PERIOD_D1,0)+PERIOD_D1*60,Magenta);

         else Alert("Невозможно установить OP_SELLLIMIT, цена слишком близка или выше High");

         if(iLow(Symbol(),PERIOD_D1,1) + STOPLEVEL < Ask)

            OrderSend(Symbol(),OP_BUYLIMIT,lot,iLow(Symbol(),PERIOD_D1,1)+DistanceLimitOrder*Point,3,iLow(Symbol(),PERIOD_D1,1) - SL*Point,iLow(Symbol(),PERIOD_D1,1) + TP*Point,NULL,Magic_Number,iTime(Symbol(),PERIOD_D1,0)+PERIOD_D1*60,Aqua);

         else Alert("Невозможно установить OP_BUYLIMIT, цена слишком близка или ниже Low");

      }

   }

   return(0);

}



//---- Возвращает количество ордеров указанного эксперта(Маджик,Символ) ----//

int Orders_Total( int mn, string sym)

{

   int num_orders=0;

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

   {

      OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

      if(OrderMagicNumber() == mn && sym==OrderSymbol())

         num_orders++;

   }

   return(num_orders);//---

   

  }

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



谢谢你这位好心人,一切都很顺利))))
 

下午好,请告诉一个年轻的专家,狗被埋在哪里))。

我对Momentum进行了一些改动,经过测试,它看起来是有效的,但当我试图在专家顾问中使用它时,我得到了一些奇怪的怪事,它似乎遵循正确的算法,但我不知道额外的0,0449来自哪里。

输入 int InpMomPeriod=1; // Momentum Period

空白的OnTick()

{

double High1 = iCustom(Symbol(),PERIOD_CURRENT, "INdekators 1.0",InpMomPeriod,0,0);

}

附加的文件:
GBPUSDH11.png  16 kb
GBPUSDH1.png  16 kb
 

你好,亲爱的程序员。
为你点赞!

有一个EA,在关闭订单和发送消息后。

我需要在终端上禁用自动交易(按下按钮)。

如果用户与UPN服务器断开连接,它不会这样做。
当用户连接到cps服务器并打开终端时,窗口是打开的。
专家顾问正在运行,按下按钮可以正常工作。
但当你运行专家顾问时,断开与PPS服务器的连接
并在得到专家顾问工作的消息后
当你回到UPU时,该按钮没有被按下。

专家顾问在UPP 服务器Windows Server 16上运行。

这一部分代码负责这个功能

如果(AutotradeOFF)PressOrReleaseAutotrade()。

结论 - 当用户与VPS服务器断开连接时,这个功能不起作用。
也许有一些替代方案可以解决这个问题?

会有什么问题呢?

请帮助我解决这个问题。

代码见附件。

非常感谢您对解决这个问题的任何帮助!

附加的文件: