Questions des débutants MQL4 MT4 MetaTrader 4 - page 170

 
ponochka:
Salut ! Je fais une capture d'écran de l'écran en utilisant la fonction :
WindowScreenShot ("Screenshotname.png",1280,720) ; mais il enregistre tout dans le dossier Files, et je dois spécifier le chemin dans un autre dossier qui l'enregistrerait !
Utiliser des liens symboliques
 

Bonjour !

A l'origine, la possibilité d'un verrouillage d'urgence par marge libre a été implémentée dans l'Expert Advisor. Voici une partie du code

si(AccountFreeMargin() <= inpMarginLock)

{

gv.isEmergencyLock = true ;

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

Au fil du temps, il est apparu que ce n'était pas tout à fait pratique.

Je voudrais mettre en place un blocage d'urgence par prélèvement.

Par exemple, lorsque le dépôt atteint, disons, -100 dollars, le verrou doit être activé.

Je voudrais demander mon aide, si je peux ajouter ce code à la place deAccountFreeMargin(), pour déclencher

Aidez-moi à écrire dans le code au lieu de ofFreeMargin() pour effectuer le blocage non pas sur la marge libre mais sur l'atteinte d'un drawdown sur le dépôt.

Merci d'avance !!!!!!!

 
Bonjour, j'ai un problème, quand j'appuie sur F9 j'ai le menu habituel pour ouvrir un ordre mais je dois choisir une paire de symboles, pas comme avant, le menu sort pour le symbole que j'ai ouvert, conseillez-moi comment le réparer.
 
Andrey Sablin:
Bonjour, j'ai un problème, quand j'appuie sur F9 j'ai le menu habituel pour ouvrir un ordre mais je dois choisir une paire de symboles, pas comme avant, le menu sort pour le symbole que j'ai ouvert, conseillez-moi comment le réparer.

Service --> Paramètres --> Trading


 

Bonjour)

Aidez moi s'il vous plait, je suis un débutant..... essayant de faire un EA sur l'intersection des indicateurs super-signals-channel et ZigZag a trouvé un modèle. J'ai mis les indicateurs là-dedans, mais les ordres ne s'ouvrent toujours pas. Voici une partie du code.... ce que je fais mal... ?

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

{

int trd=-1 ;

double up=0.0,dn=0.0 ;

//---

ArrayInitialize(cl,false) ;

ArrayInitialize(op,false) ;

//connecter l'indicateur de filtre ZigZag

up=iCustom(_Symbol,tf, "ZigZag",InpDepth,InpDeviation,InpBackstep,0,0);//nom, paramètres, tampon, bougie de départ pour BUY

dn=iCustom(_Symbol,tf, "ZigZag",InpDepth,InpDeviation,InpBackstep,0,0);//nom, paramètres, tampon, début de bougie pour SELL

si(dn==EV) trd=0 ;

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

//connecter l'indicateur de marche arrière et de sortie

up=iCustom(_Symbol,tf, "SuperSignalsChannel_1",SignalGap_1,ShowBars_1,dist_1,0,0);//début de bougie pour BUY

dn=iCustom(_Symbol,tf, "SuperSignalsChannel_1",SignalGap_1,ShowBars_1,dist_1,1,0,0);//début de la bougie de VENTE

si(up>0.0 && up<EV) cl[1]=vrai ;

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

up=0.0 ;

dn=0.0 ;

// indicateur de base, par lequel nous entrons sur le marché

interrupteur (Indicateur)

{

cas SuperSignalsChannel :

up=iCustom(_Symbol,tf, "SuperSignalsChannel",SignalGap,ShowBars,dist_0,1,0);//début de la bougie pour BUY

dn=iCustom(_Symbol,tf, "SuperSignalsChannel",SignalGap,ShowBars,dist_0,0,0);//début de la bougie de VENTE

pause ;


P.S. S'il y a un fil similaire sur le forum quelque part, laissez le lien, s'il vous plaît.

 


Bon après-midi. J'ai cet EA, j'essaie de le modifier pour l'adapter à mes besoins, mais jusqu'à présent, il n'est pas très bon. Les ordres s'ouvrent au prix haut et bas, mais j'ai besoin qu'il soit haut + 5 pips. Je sais que cela est responsable de cela, mais je ne peux pas l'appliquer dans le code. J'espère de l'aide. Merci))))

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


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:


Bon après-midi. J'ai cet EA, j'essaie de le modifier pour l'adapter à mes besoins, mais jusqu'à présent, il n'est pas très bon. Les ordres s'ouvrent au prix haut et bas, mais j'ai besoin qu'il soit haut + 5 pips. Je sais que cela est responsable de cela, mais je ne peux pas l'appliquer dans le code. J'espère de l'aide. Merci))))




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

   

  }

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



Merci gentilhomme, tout fonctionne))))
 

Bonjour, veuillez dire à un jeune adepte où le chien est enterré)).

J'ai modifié un peu le Momentum, je l'ai testé et il semble qu'il fonctionne, mais lorsque j'essaie de l'utiliser dans un Expert Advisor, j'obtiens des résultats étranges, il semble suivre le bon algorithme, mais je ne sais pas d'où vient le 0,0449 supplémentaire.

input int InpMomPeriod=1 ; // Période de Momentum

void OnTick()

{

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

}

Dossiers :
GBPUSDH11.png  16 kb
GBPUSDH1.png  16 kb
 

Bonjour, chers programmeurs.
Bravo à vous !

Il existe un EA qui, après la clôture des ordres et l'envoi d'un message,

Je dois désactiver l'auto-trading sur le terminal (appuyer sur le bouton).

Il ne le fait pas si l'utilisateur est déconnecté du serveur UPN.
Lorsque l'utilisateur est connecté au serveur cps et que le terminal est ouvert, des fenêtres sont ouvertes,
le conseiller-expert est en cours d'exécution, l'appui sur le bouton fonctionne bien.
mais lorsque vous exécutez le Conseiller Expert, déconnectez vous du serveur PPS
et après avoir reçu un message indiquant que l'Expert Advisor a fonctionné
lorsque vous revenez à l'UPU, le bouton n'est pas pressé.

L'Expert Advisor fonctionne sur le serveur UPP Windows Server 16.

Cette partie du code est responsable de cette fonction

if(AutotradeOFF)PressOrReleaseAutotrade() ;

Conclusion - cette fonction ne fonctionne pas lorsque l'utilisateur est déconnecté du serveur VPS.
Peut-être existe-t-il des alternatives pour résoudre le problème ?

Quel peut être le problème ?

Veuillez m'aider à résoudre ce problème.

Le code est joint.

Merci beaucoup d'avance pour toute aide à la résolution de ce problème !

Dossiers :