Domande dai principianti MQL4 MT4 MetaTrader 4 - pagina 170

 
ponochka:
Ciao, faccio uno screenshot dello schermo usando la funzione:
WindowScreenShot ("Screenshotname.png",1280,720); ma salva tutto nella cartella Files, e ho bisogno di specificare il percorso in un'altra cartella che lo salverebbe!
Utilizzare i collegamenti simbolici
 

Ciao!

Originariamente, la possibilità di bloccaggio di emergenza con margine libero è stata implementata nell'Expert Advisor. ecco una parte del codice

se(AccountFreeMargin() <= inpMarginLock)

{

gv.isEmergencyLock = true;

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

Col tempo, è diventato chiaro che questo non era del tutto conveniente.

Vorrei implementare un blocco di emergenza via drawdown.

Cioè quando si raggiungono diciamo -100 dollari sul deposito il blocco dovrebbe essere attivato.

Vorrei chiedere il mio aiuto, se posso aggiungere questo codice al posto diAccountFreeMargin(), per attivare

Aiutatemi a scrivere nel codice invece diFreeMargin() per avere luogo il blocco non sul margine libero, ma quando un drawdown sul deposito.

Grazie in anticipo!!!!!!!

 
Salve, ho un problema, quando premo F9 ottengo il solito menu per aprire un ordine ma devo scegliere una coppia di simboli, non come prima, il menu esce per il simbolo che ho aperto, consigliatemi come risolvere il problema.
 
Andrey Sablin:
Salve, ho un problema, quando premo F9 ottengo il solito menu per aprire un ordine ma devo scegliere una coppia di simboli, non come prima, il menu esce per il simbolo che ho aperto, consigliatemi come risolvere il problema.

Servizio --> Impostazioni --> Trading


 

Buon pomeriggio)

Aiuto per favore, sono un newbie..... cercando di fare un EA sull'intersezione di super-segnali-canale e ZigZag indicatori trovato un modello. Ci ho buttato dentro gli indicatori, ma gli ordini non si aprono ancora. Ecco una parte del codice.... cosa sto facendo di sbagliato...?

void Signal(double& ar[][],bool& op[],bool& cl[])

{

int trd=-1;

doppio up=0.0,dn=0.0;

//---

ArrayInitialize(cl,false);

ArrayInitialize(op,false);

//collegare l'indicatore del filtro ZigZag

up=iCustom(_Symbol,tf, "ZigZag",InpDepth,InpDeviation,InpBackstep,0,0);//nome, impostazioni, buffer, candela iniziale per BUY

dn=iCustom(_Symbol,tf, "ZigZag",InpDepth,InpDeviation,InpBackstep,0,0);//nome, impostazioni, buffer, inizio candela per SELL

se(dn==EV) trd=0;

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

//collegare l'indicatore di inversione e di uscita

up=iCustom(_Symbol,tf, "SuperSignalsChannel_1",SignalGap_1,ShowBars_1,dist_1,0,0);//start candle for BUY

dn=iCustom(_Symbol,tf, "SuperSignalsChannel_1",SignalGap_1,ShowBars_1,dist_1,1,0,0);//inizio candela per SELL

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

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

up=0.0;

dn=0,0;

// indicatore di base, con cui entriamo nel mercato

interruttore(Indicatore)

{

caso SuperSignalsChannel:

up=iCustom(_Symbol,tf, "SuperSignalsChannel",SignalGap,ShowBars,dist_0,1,0);//start candle for BUY

dn=iCustom(_Symbol,tf, "SuperSignalsChannel",SignalGap,ShowBars,dist_0,0,0);//inizio candela per SELL

pausa;


P.S. Se c'è un thread simile sul forum da qualche parte, lasciate il link, per favore

 


Buon pomeriggio. Ho questo EA, sto cercando di modificarlo per soddisfare le mie esigenze, ma finora non è molto buono. Gli ordini si aprono al prezzo alto e basso, ma ho bisogno che sia alto + 5 pip. So che questo è responsabile di questo, ma non posso applicarlo nel codice. Spero di essere aiutato. Grazie))))

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


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:


Buon pomeriggio. Ho questo EA, sto cercando di modificarlo per soddisfare le mie esigenze, ma finora non è molto buono. Gli ordini si aprono al prezzo alto e basso, ma ho bisogno che sia alto + 5 pip. So che questo è responsabile di questo, ma non posso applicarlo nel codice. Spero di essere aiutato. Grazie))))




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

   

  }

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



Grazie uomo gentile, tutto funziona))))
 

Buon pomeriggio, per favore dite a un giovane adepto dove è sepolto il cane))

Ho modificato un po' Momentum, testato sembra che funzioni, ma quando provo ad usarlo in un Expert Advisor ottengo delle stranezze, sembra seguire l'algoritmo giusto, ma non so da dove viene lo 0,0449 extra.

input int InpMomPeriod=1; // Momentum Period

void OnTick()

{

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

}

File:
GBPUSDH11.png  16 kb
GBPUSDH1.png  16 kb
 

Salve, cari programmatori.
Complimenti a voi!

C'è un EA che dopo aver chiuso gli ordini e inviato un messaggio,

Ho bisogno di disabilitare l'auto-trading sul terminale (premere il pulsante)

Non lo fa se l'utente è disconnesso dal server UPN.
Quando l'utente è connesso al server cps e il terminale è aperto, le finestre sono aperte,
l'Expert Advisor è in esecuzione, premendo il pulsante funziona bene
ma quando si esegue l'Expert Advisor, disconnettersi dal server PPS
e dopo aver ricevuto un messaggio che Expert Advisor ha funzionato
quando si torna all'UPU, il pulsante non viene premuto.

L'Expert Advisor è in esecuzione sul server UPP Windows Server 16.

Questa parte di codice è responsabile di questa funzione

se(AutotradeOFF)PressOrReleaseAutotrade();

Conclusione - questa funzione non funziona quando l'utente è disconnesso dal server VPS.
Forse ci sono delle alternative per risolvere il problema?

Quale può essere il problema?

Per favore aiutatemi a risolvere questo problema.

Il codice è allegato.

Grazie mille in anticipo per qualsiasi aiuto per risolvere questo problema!

File:
Motivazione: