Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1576

 
Eugen8519:

J'ai réalisé cette fonctionnalité, merci pour votre soutien et pour votre aide.


De rien)
 
Mihail Matkovskij:

Cela dépend de la façon dont vous allez calculer les arrêts et les prises en fonction des statistiques... Il n'est pas très clair ce qu'est la "statistique par chandelier", comment vous la calculez.

La réponse est comme le sifflement d'un cancer et la chose étrange est qu'elle répond toujours à ma question.

 
darirunu1:

La réponse est comme le sifflement d'une écrevisse et c'est étrange qu'elle réponde toujours à ma question.

Comment répondre à une question dont on ne sait pas de quoi il s'agit... ? :)

Pour comprendre comment calculer le stop et le take, dans votre cas, vous devez savoir comment on calcule les statistiques par chandelier ? Parce que les "statistiques des chandeliers" sont un terme très large...

En outre, quel type de rapport d'arrêt et de prise vous voulez... ? Il y a tout un système de trading à inventer pour vous ici, puisque vous ne connaissez même pas la tâche à accomplir...
 
Mihail Matkovskij:

Comment répondre à une question dont on ne sait pas très bien de quoi il s'agit... ? :)

Afin de comprendre comment calculer le stop et le take, dans votre cas, vous devez savoir comment calculer les statistiques des chandeliers ? Puisque "statistiques sur les chandeliers" est un terme très flexible...

En outre, quel rapport d'arrêt et de prise vous voulez... ? Il y a tout un système de trading à inventer pour vous ici, puisque vous ne connaissez même pas la tâche à accomplir...

int cnt,ticket,total=0 ;

st = "heures générales Lundi-Vendredi Mercredi-Mer-Mer Jeudi-Vendredi \n" ;

double cHeight, gHeight, max ;

int sat, sun, mon, thu, wen, ths, fri ; //, NN ;

int H = TimeHour(TimeCurrent()) ; // détermine l'heure actuelle

double NN = H + N*24 ; // définir le décalage

si (NN>Bars) NN=Bars ;

pour (int t=0 ; t<24 ; t++)

{

int HeightZ = 0 ; int z=0 ;

for (int i=0 ; i<=NNN ; i++)

{

HeightZ = MathAbs(High[i]-Low[i])/Point ;

z++ ;

}

Quelles options suggérez-vous ?
 
darirunu1:

Quelles options suggérez-vous ?
int cnt,ticket,total=0;

st = "часы общ. пон. вт. ср. чт. пт. \n";

double cHeight, gHeight, Max;

int sat, sun, mon, thu, wen, ths, fri; //, NN;

int H = TimeHour(TimeCurrent()); // определим текущий час

double NN = H + N*24; // определим смещение

if (NN>Bars) NN=Bars;

for (int t=0; t<24; t++)

{

  int HeightZ = 0; int z=0;

  for (int i=0; i<=NN; i++)

  {

    HeightZ = (High[i]-Low[i])/Point;

    z++;
  }

}

D'après ce que j'ai compris, votre mouvement est calculé comme la hauteur de la barre(les MathAbs n'étaient pas nécessaires).

и

double NN = H + N*24;

ici vous essayez de calculer le nombre de barres... Mais il est préférable de le définir simplement comme un nombre positif, pour commencer.

Vous pouvez calculer le mouvement moyen de la barre comme suit :

double avBarMove(int _period) {
  double cmMove = 0;
  for (int i = 0; i < _period; i++)
    cmMove += High[i]-Low[i];
  return cmMove / _period;
} 

Maintenant, vous pouvez essayer de calculer le stop et le take sur la base du résultat de la fonction.

 



Aidez-moi à positionner correctement la fonction

SendNotification ("текст");




Inséré ici pour le message d'entrée de position

void OPENORDER(string ord)

  {
  
  double priceL=m_symbol.Ask();
   if(ord=="Sell")      
    SendNotification ("текст");

        //--- check for free money
            if(m_account.FreeMarginCheck(Symbol(),ORDER_TYPE_BUY,my_lot,priceL)<0.0)
               printf("We have no money. Free Margin = %f",m_account.FreeMargin());
            else
      if(!m_trade.Sell(my_lot,Symbol(),m_symbol.Bid(),my_SL,my_TP,""))
         Print("BUY_STOP -> false. Result Retcode: ",m_trade.ResultRetcode(),
               ", description of Retcode: ",m_trade.ResultRetcodeDescription(),
               ", ticket of order: ",m_trade.ResultOrder());                     // Если sell, то не открываемся
     double priceS=m_symbol.Bid();
   if(ord=="Buy")
    SendNotification ("текст");
 //--- check for free money
            if(m_account.FreeMarginCheck(Symbol(),ORDER_TYPE_SELL,my_lot,priceS)<0.0)
               printf("We have no money. Free Margin = %f",m_account.FreeMargin());
            else
      if(!m_trade.Buy(my_lot,Symbol(),m_symbol.Ask(),my_SL,my_TP,""))
 
         Print("Buy -> false. Result Retcode: ",m_trade.ResultRetcode(),
               ", description of result: ",m_trade.ResultRetcodeDescription(),
               ", ticket of deal: ",m_trade.ResultDeal());
   return;
 }

Et je réussis déjà à recevoir des notifications sur mon smartphone.




Mais comment et où insérer

SendNotification

Pour recevoir un message lorsque j'atteins le stop loss ou letake profit?

 
Eugen8519:


Aide pour positionner correctement la fonction


Inséré ici pour le message d'entrée de position

Et je réussis déjà à recevoir des notifications sur mon smartphone.


Mais comment et où insérer

Pour recevoir un message lorsque j'atteins le Stop Loss ou leTake Profit?

Voir OnTradeTransaction

 

Eugen8519:

Mais comment et où insérer

Pour envoyer un message lorsque le Stop Loss ou leTake Profit est atteint ?

Tout d'abord, vous devez créer une fonction pour contrôler la clôture des ordres.

 
MakarFX:

Tout d'abord, nous devons créer une fonction pour contrôler la clôture des ordres.

OnTradeTransaction sera déclenché lorsqu'un ordre stop sur le serveur est déclenché.

 
MakarFX:

Tout d'abord, nous devons créer une fonction pour contrôler la clôture des ordres.

Et à travers ?

DEAL_REASON_SL
DEAL_REASON_TP