Je rédigerai un conseiller gratuitement - page 112

 
Bonne santé à tous ! A en juger par les réactions sur le forum à ma question de savoir s'il est possible de faire une chouette basée sur des lignes colorées à partir des indicateurs habituels présents dans le graphique, il est apparu clairement à partir des réactions - c'est possible. C'est-à-dire que, par exemple, le vert croise le bleu, le bleu croise le rouge, etc. Et lorsque ces conditions coïncident, un ordre est placé dans la direction appropriée. Pourquoi exactement par les lignes ? Parce qu'un tel conseiller expert serait une aide précieusepour un trader débutant qui expérimente beaucoup et vérifie de nombreuses théories, et un conseiller expert qui ferait gagner du temps et épargnerait des nerfs. Pourquoi mon message se trouve-t-il ici, dans la section des EA gratuites ? Parce qu'il sera sûrement utile, sinon à tous, du moins à beaucoup de gens. Je joins une capture d'écran pour mieux comprendre ce dont je parle.
Dossiers :
o9b4dq-1.jpg  73 kb
 
Bonjour. Existe-t-il un moyen d'automatiser la stratégie SniperX de la Forex Academy ?
 
Bonjour à tous, Pourriez-vous suggérer quelque chose de similaire à ceci --e-CloseByProfit- EA fermera toutes les positions lorsqu'elles atteignent un niveau de profit ou de perte total prédéfini --- seulement sur MT5. Merci.
 

Bonjour. Pouvez-vous m'aider si vous avez le temps La question est la suivante, j'ai besoin que l'EA ouvre un ordre sur chaque signal de deux indicateurs, (ils donnent un signal quand ils sont dans une certaine combinaison) en un mot, il devrait y avoir plusieurs ordres pour acheter ou vendre sur le marché, en conséquence, selon les signaux des indicateurs. Mais je n'ai qu'un seul ordre sur le marché et tant qu'il n'est pas clôturé, le suivant ne s'ouvre pas...... S'agit-il d'une question de comptage des ordres ? S'il vous plaît, donnez-moi un indice. Je peux vous envoyer le code si vous en avez besoin.

Merci d'avance !

 
danil77783:

Bonjour. Pourriez-vous m'aider, si vous avez le temps La question est la suivante, j'ai besoin que l'EA ouvre un ordre sur chaque signal de deux indicateurs, (ils donnent un signal quand ils sont dans une certaine combinaison) en un mot, il devrait y avoir plusieurs ordres d'achat ou de vente sur le marché, respectivement, selon les signaux des indicateurs. Mais je n'ai qu'un seul ordre sur le marché et tant qu'il ne se ferme pas, le suivant ne s'ouvre pas...... S'agit-il d'une question de comptage des ordres ? S'il vous plaît, donnez-moi un indice. Si vous en avez besoin, je peux vous envoyer le code.

Merci d'avance !

Eh bien, vous ne pouvez pas réparer votre EA sans le code, à moins que vous ne commenciez à comprendre la programmation. Il est très probable que votre EA soit écrit sur le modèle avec un seul ordre sur le marché et il est en fait très difficile de le corriger, car traiter plusieurs ordres et selon différents critères est très différent.

 
Pawel Egoshin:
Ce dont vous avez besoin, c'est d'une EA, une martin ordinaire avec une augmentation du ton.

Il n'y a pas une seule option pour Ilan ? En général, il y a un grand nombre de ces plumitifs dans l'open source, mais il faut probablement qu'on vous les présente sur un plateau...

 
Sergey Martynov:

Bien sûr, beaucoup de temps s'est écoulé, mais un coup d'oeil rapide sur le code me dit que je dois réécrire le bot, basé sur la stratégie - parce que cela n'a pas de sens de faire autant d'appels à l'indicateur, parce que déjà dans l'appel le résultat de la comparaison suivante est donné, à moins qu'il soit calculé pour un outil avec 4 chiffres AVANT la virgule...

 
yuriy kovalchuk:
Bonjour, Pouvez-vous suggérer quelque chose de similaire à ceci --e-CloseByProfit- EA fermera toutes les positions lorsqu'il atteindra un profit ou une perte totale prédéfinie --- seulement sur MT5. Merci.

Quelque chose comme ça. Il vous suffit de saisir votre solde + ce que vous voulez gagner.

//+------------------------------------------------------------------+
//|                                                  CloseEquity.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"

//+------------------------------------------------------------------+
//|                                          Close all if a loss.mq5 |
//|                              Copyright © 2020, Vladimir Karputov |
//|                     https://www.mql5.com/ru/market/product/43516 |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2020, Vladimir Karputov"
#property link      "https://www.mql5.com/ru/market/product/43516"
#property version   "1.000"
/*
   barabashkakvn Trading engine 3.112
*/
#include <Trade\Trade.mqh>
#include <Trade\AccountInfo.mqh>
//---
CPositionInfo  m_position;                   // object of CPositionInfo class
CTrade         m_trade;                      // object of CTrade class
CAccountInfo   m_account;                    // object of CAccountInfo class
//--- input parameters
input double   InpProfit            = 150000;      // Profit Equity, in money
input bool     InpPrintLog          = false;       // Print log
input ulong    InpMagic             = 42967428;    // Magic number
//---
bool     m_stop                     = false;
int      ticks_to_close             = 1;           // количество тиков до снятия эксперта
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   m_trade.SetExpertMagicNumber(InpMagic);
   m_trade.SetMarginMode();
   m_trade.SetTypeFillingBySymbol(Symbol());
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(AccountInfoDouble(ACCOUNT_EQUITY)>InpProfit)
     {
      if(IsPositionExists())
        {
         CloseAllPositions();
         return;
        }
      else
        {
         Alert("It is necessary to restart the adviser");
         ExpertRemoves();
         m_stop=true;
        }
     }
   if(m_stop)
      return;
//---
  }
//+------------------------------------------------------------------+
//| Is position exists                                               |
//+------------------------------------------------------------------+
bool IsPositionExists(void)
  {
   for(int i=PositionsTotal()-1; i>=0; i--)
      if(m_position.SelectByIndex(i)) // selects the position by index for further access to its properties
         return(true);
//---
   return(false);
  }
//+------------------------------------------------------------------+
//| Close all positions                                              |
//+------------------------------------------------------------------+
void CloseAllPositions(void)
  {
   for(int i=PositionsTotal()-1; i>=0; i--) // returns the number of current positions
      if(m_position.SelectByIndex(i)) // selects the position by index for further access to its properties
         if(!m_trade.PositionClose(m_position.Ticket())) // close a position by the specified m_symbol
            if(InpPrintLog)
               Print(__FILE__," ",__FUNCTION__,", ERROR: ","CTrade.PositionClose ",m_position.Ticket());
  }
//+------------------------------------------------------------------+
//| start function                                                   |
//+------------------------------------------------------------------+
void ExpertRemoves(void)
  {
   static int tick_counter=0;
//---
   tick_counter++;
   Comment("\nДо выгрузки эксперта ",__FILE__," осталось ",
           (ticks_to_close-tick_counter)," тиков ");
//--- до
   if(tick_counter>=ticks_to_close)
     {
      ExpertRemove();
      Print(TimeCurrent(),": ",__FUNCTION__," эксперт будет выгружен");
     }
   Print("tick_counter = ",tick_counter);
//---
  }
//+------------------------------------------------------------------+
Dossiers :
CloseEquity.mq5  10 kb
 
Alexsandr San:

Quelque chose comme ça. Il vous suffit de mettre votre bilan + ce que vous voulez faire.


Nah, c'est plus fiable.

//+------------------------------------------------------------------+
//|                                                  CloseEquity.mq5 |
//|                        Copyright 2020, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"

//+------------------------------------------------------------------+
//|                                          Close all if a loss.mq5 |
//|                              Copyright © 2020, Vladimir Karputov |
//|                     https://www.mql5.com/ru/market/product/43516 |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2020, Vladimir Karputov"
#property link      "https://www.mql5.com/ru/market/product/43516"
#property version   "1.000"
/*
   barabashkakvn Trading engine 3.112
*/
#include <Trade\Trade.mqh>
#include <Trade\AccountInfo.mqh>
//---
CPositionInfo  m_position;                   // object of CPositionInfo class
CTrade         m_trade;                      // object of CTrade class
CAccountInfo   m_account;                    // object of CAccountInfo class
//--- input parameters
input string   Template             = "ADX";       // Имя шаблона(without '.tpl')
input double   InpProfit            = 150000;      // Profit Equity, in money
input bool     InpPrintLog          = false;       // Print log
input ulong    InpMagic             = 42967428;    // Magic number
//---
bool     m_stop                     = false;
int      ticks_to_close             = 1;           // количество тиков до снятия эксперта
uint     SLEEPTIME                  = 1;           // Время паузы между повторами в секундах
ENUM_TIMEFRAMES TimeFrame;                         // Change TimeFrame - Current = dont changed
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   m_trade.SetExpertMagicNumber(InpMagic);
   m_trade.SetMarginMode();
   m_trade.SetTypeFillingBySymbol(Symbol());
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(AccountInfoDouble(ACCOUNT_EQUITY)>InpProfit)
     {
      if(IsPositionExists())
        {
         CloseAllPositions();
         Sleep(SLEEPTIME*1000);
         CloseAllPositions();
         return;
        }
      else
        {
         Alert("It is necessary to restart the adviser");
         ExpertRemoves();
         DeleteChart();
         m_stop=true;
        }
     }
   if(m_stop)
      return;
//---
  }
//+------------------------------------------------------------------+
//| Is position exists                                               |
//+------------------------------------------------------------------+
bool IsPositionExists(void)
  {
   for(int i=PositionsTotal()-1; i>=0; i--)
      if(m_position.SelectByIndex(i)) // selects the position by index for further access to its properties
         return(true);
//---
   return(false);
  }
//+------------------------------------------------------------------+
//| Close all positions                                              |
//+------------------------------------------------------------------+
void CloseAllPositions(void)
  {
   for(int i=PositionsTotal()-1; i>=0; i--) // returns the number of current positions
      if(m_position.SelectByIndex(i)) // selects the position by index for further access to its properties
         if(!m_trade.PositionClose(m_position.Ticket())) // close a position by the specified m_symbol
            if(InpPrintLog)
               Print(__FILE__," ",__FUNCTION__,", ERROR: ","CTrade.PositionClose ",m_position.Ticket());
  }
//+------------------------------------------------------------------+
//| start function                                                   |
//+------------------------------------------------------------------+
void ExpertRemoves(void)
  {
   static int tick_counter=0;
//---
   tick_counter++;
   Comment("\nДо выгрузки эксперта ",__FILE__," осталось ",
           (ticks_to_close-tick_counter)," тиков ");
//--- до
   if(tick_counter>=ticks_to_close)
     {
      ExpertRemove();
      Print(TimeCurrent(),": ",__FUNCTION__," эксперт будет выгружен");
     }
   Print("tick_counter = ",tick_counter);
//---
  }
//+------------------------------------------------------------------+
//| start function                                                   |
//+------------------------------------------------------------------+
void DeleteChart(void)
  {
   long currChart,prevChart=ChartFirst();
   int i=0,limit=100;
   bool errTemplate;
   while(i<limit)
     {
      currChart=ChartNext(prevChart);
      if(TimeFrame!=PERIOD_CURRENT)
        {
         ChartSetSymbolPeriod(prevChart,ChartSymbol(prevChart),TimeFrame);
        }
      errTemplate=ChartApplyTemplate(prevChart,Template+".tpl");
      if(!errTemplate)
        {
         Print("Error ",ChartSymbol(prevChart),"-> ",GetLastError());
        }
      if(currChart<0)
         break;
      Print(i,ChartSymbol(currChart)," ID =",currChart);
      prevChart=currChart;
      i++;
     }
  }
//+------------------------------------------------------------------+
Dossiers :
 

Nah, c'est plus fiable.


MERCI

Raison: