Perguntas de Iniciantes MQL4 MT4 MetaTrader 4 - página 170

 
ponochka:
Olá! Tiro uma foto da tela usando a função:
WindowScreenShot ("Screenshotname.png",1280,720); mas ele salva tudo o que está na pasta Arquivos, e eu preciso especificar o caminho em outra pasta que o salvaria!
Use links simbólicos
 

Olá!

Originalmente, a possibilidade de travamento de emergência por margem livre foi implementada no Expert Advisor. aqui está uma parte do código

if(AccountFreeMargin() <= inpMarginLock)

{

gv.isEmergencyLock = true;

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

Com o tempo, tornou-se claro que isto não era inteiramente conveniente.

Eu gostaria de implementar uma trava de emergência via drawdown.

Isto é, quando se chega a -100 dólares no depósito, a fechadura deve ser ativada.

Gostaria de pedir minha ajuda, se eu puder adicionar este código ao invés deAccountFreeMargin(), para acionar

Ajude-me a escrever no código em vez deFreeMargin() para que ocorra um bloqueio não na margem livre, mas quando um saque no depósito.

Obrigado antecipadamente!!!!!!!

 
Olá , tenho um problema , quando pressiono F9 recebo o menu habitual para abrir um pedido mas tenho que escolher um par de símbolos , não como antes , o menu sai para o símbolo que abri , me aconselha como consertá-lo.
 
Andrey Sablin:
Olá , tenho um problema , quando pressiono F9 recebo o menu habitual para abrir um pedido mas tenho que escolher um par de símbolos , não como antes , o menu sai para o símbolo que abri , me aconselha como consertá-lo.

Serviço --> Configurações --> Comércio


 

Boa tarde)

Ajuda por favor, sou um novato..... tentando fazer uma EA na interseção dos indicadores de super-sinais e o ZigZag encontrou um modelo. Joguei os indicadores lá dentro, mas as ordens ainda não se abrem. Aqui está uma parte do código.... o que estou fazendo de errado...?

Sinal vazio(double& ar[][],bool& op[],bool& cl[])

{

int trd=-1;

dobro para cima=0,0,dn=0,0;

//---

ArrayInitialize(cl,false);

ArrayInitialize(op,false);

//conecte o indicador de filtro ZigZag

up=iCustom(_Símbolo,tf, "ZigZag",InpDepth,InpDeviation,InpBackstep,0,0);//nome, configurações, buffer, iniciar vela para COMPRAR

dn=iCustom(_Símbolo,tf, "ZigZag",InpDepth,InpDeviation,InpBackstep,0,0);//nome, configurações, buffer, início da vela para SELL

if(dn==EV) trd=0;

if(up===EV) trd=0; //Comentário(trd);

//conectar indicador de reversão e saída

up=iCustom(_Símbolo,tf, "SuperSignalsChannel_1",SignalGap_1,ShowBars_1,dist_1,0,0);// vela de arranque para COMPRAR

dn=iCustom(_Símbolo,tf, "SuperSignalsChannel_1",SignalGap_1,ShowBars_1,dist_1,1,0,0);// vela de arranque para SELL

if(up>0.0 && up<EV) cl[1]=verdadeiro;

if(dn>0.0 && dn<EV) cl[0]=verdadeiro;

acima de=0,0;

dn=0,0;

// indicador básico, pelo qual entramos no mercado

interruptor(Indicador)

{

case SuperSignalsChannel:

up=iCustom(_Símbolo,tf, "SuperSignalsChannel",SignalGap,ShowBars,dist_0,1,0);// vela de arranque para COMPRAR

dn=iCustom(_Símbolo,tf, "SuperSignalsChannel",SignalGap,ShowBars,dist_0,0,0);// vela de arranque para SELL

pausa;


P.S. Se houver um tópico similar no fórum em algum lugar, deixe o link, por favor

 


Boa tarde. Tenho este EA, estou tentando modificá-lo para adequá-lo às minhas necessidades, mas até agora ele não é muito bom. Pedidos abertos a preço alto e baixo, mas preciso que seja alto + 5 pips. Sei que isto é responsável por isso, mas não posso aplicá-lo no código. Espero poder ajudar. Obrigado))))

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


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:


Boa tarde. Tenho este EA, estou tentando modificá-lo para adequá-lo às minhas necessidades, mas até agora ele não é muito bom. Pedidos abertos a preço alto e baixo, mas preciso que seja alto + 5 pips. Sei que isto é responsável por isso, mas não posso aplicá-lo no código. Espero poder ajudar. Obrigado))))




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);//---

   

  }

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



Obrigado, gentil homem, tudo funciona))))
 

Boa tarde, por favor, diga a um jovem adepto onde o cão está enterrado))

Mudei um pouco o momento; parece funcionar como deveria, mas quando tento usá-lo em um Expert Advisor vejo algumas coisas estranhas acontecendo, parece seguir o algoritmo certo, mas não sei de onde vem o 0,0449 extra.

input int InpMomPeriod=1; // Momentum Period

nulo OnTick()

{

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

}

Arquivos anexados:
GBPUSDH11.png  16 kb
GBPUSDH1.png  16 kb
 

Olá, caros programadores.
Kudos para você !

Há uma EA que, após fechar os pedidos e enviar uma mensagem,

Preciso desativar a auto-comercialização no terminal ( pressione o botão )

Ele não faz isso se o usuário for desconectado do servidor UPN.
Quando o usuário está conectado ao servidor cps e o terminal está aberto, as janelas estão abertas,
o Expert Advisor está funcionando, apertar o botão funciona bem
mas quando você executar o Expert Advisor, desconecte do servidor PPS
e depois de receber uma mensagem de que o Expert Advisor trabalhou
quando você volta para a UPU, o botão não é pressionado.

O Expert Advisor está rodando no servidor UPP Windows Server 16.

Esta parte do código é responsável por esta função

if(AutotradeOFF)PressOrReleaseAutotrade();

Conclusão - esta função não funciona quando o usuário é desconectado do servidor VPS.
Talvez existam algumas alternativas para resolver o problema?

Qual pode ser o problema?

Por favor, ajude-me a resolver este problema.

O código está anexado.

Muito obrigado antecipadamente por qualquer ajuda para resolver este problema!

Arquivos anexados: