Ich schreibe kostenlos einen Ratgeber - Seite 112

 
Gute Gesundheit für alle! Aus den Rückmeldungen im Forum zu meiner Frage, ob es möglich ist, eine Eule auf der Grundlage von farbigen Linien aus den üblichen Indikatoren im Diagramm zu erstellen, wurde deutlich, dass dies möglich ist. D.h. zum Beispiel, die grüne kreuzt die blaue, die blaue kreuzt die rote usw. Und wenn diese Bedingungen übereinstimmen, wird ein Auftrag in der entsprechenden Richtung erteilt. Warum genau bei den Zeilen? Denn ein solcher Expert Advisor wärefür einen angehenden Trader, der viel experimentiert und zahlreiche Theorien überprüft, eine große Hilfe und ein wirklich wertvoller zeit- und nervensparender Expert Advisor. Warum ist meine Nachricht hier, im Bereich der kostenlosen EAs? Denn es wird sicherlich nützlich sein, wenn auch nicht für alle, so doch für viele Menschen. Zum besseren Verständnis, wovon ich spreche, füge ich ein Bildschirmfoto bei.
Dateien:
o9b4dq-1.jpg  73 kb
 
Hallo. Gibt es eine Möglichkeit, die Forex Academy SniperX Strategie zu automatisieren?
 
Hallo zusammen, könnten Sie etwas ähnliches vorschlagen --e-CloseByProfit- EA wird alle Positionen schließen, wenn sie einen vordefinierten Gesamtgewinn oder Verlust Ebene erreichen --- nur auf MT5. Ich danke Ihnen.
 

Hallo. Könnten Sie mir helfen, wenn Sie Zeit haben Frage ist dies, ich brauche die EA, um einen Auftrag auf jedes Signal von zwei Indikatoren zu öffnen, (sie geben ein Signal, wenn sie in bestimmten Kombination sind) in einem Wort, sollte es mehrere Kauf oder Verkauf Aufträge auf dem Markt, bzw. nach den Signalen der Indikatoren sein. Aber ich habe nur einen Auftrag auf dem Markt, und bis dieser geschlossen wird, öffnet sich der nächste nicht...... Ist das eine Frage der Auftragszählung? Bitte geben Sie mir einen Hinweis. Ich kann Ihnen den Code schicken, wenn Sie ihn brauchen.

Vielen Dank im Voraus!

 
danil77783:

Hallo. Können Sie mir helfen, wenn Sie Zeit haben Frage ist dies, ich brauche die EA, um einen Auftrag auf jedes Signal von zwei Indikatoren zu öffnen, (sie geben ein Signal, wenn sie in bestimmten Kombination sind) in einem Wort, sollte es mehrere Aufträge auf dem Markt zu kaufen oder zu verkaufen, entsprechend, nach den Signalen der Indikatoren. Aber ich habe nur einen Auftrag auf dem Markt und bis dieser geschlossen wird, öffnet sich der nächste nicht...... Liegt es an der Zählung der Aufträge? Bitte geben Sie mir einen Hinweis. Wenn Sie ihn brauchen, kann ich Ihnen den Code schicken.

Vielen Dank im Voraus!

Nun, Sie können Ihren EA nicht ohne den Code reparieren, es sei denn, Sie beginnen, die Programmierung zu verstehen. Höchstwahrscheinlich ist Ihr EA auf der Vorlage mit 1 Auftrag auf dem Markt geschrieben und es ist tatsächlich sehr schwierig zu korrigieren, weil die Arbeit mit mehreren Aufträgen und auf verschiedenen Kriterien ist sehr unterschiedlich.

 
Pawel Egoshin:
Was Sie brauchen, ist ein EA, ein normaler Schwalbe mit einer Erhöhung der Tonhöhe.

Gibt es für Ilan nicht eine einzige Möglichkeit? In der Tat gibt es eine ganze Menge solcher Pflaumenbäume direkt in der Open Source, aber Sie müssen wahrscheinlich auf einem Tablett präsentiert werden...

 
Sergey Martynov:

Natürlich ist viel Zeit vergangen, aber ein kurzer Blick in den Code sagt mir, dass ich den Bot neu schreiben muss, basierend auf der Strategie - denn es macht keinen Sinn, so viele Aufrufe des Indikators zu machen, denn schon im Aufruf wird das Ergebnis des anschließenden Vergleichs angegeben, es sei denn, es wird für ein Tool mit 4 Stellen VOR dem Komma berechnet...

 
yuriy kovalchuk:
Hallo, Können Sie etwas ähnliches vorschlagen --e-CloseByProfit- EA wird alle Positionen schließen, wenn es einen vordefinierten Gesamtgewinn oder Verlust erreicht --- nur auf MT5. Ich danke Ihnen.

So etwas in der Art. Sie müssen nur Ihren Kontostand + den gewünschten Gewinn eingeben

//+------------------------------------------------------------------+
//|                                                  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);
//---
  }
//+------------------------------------------------------------------+
Dateien:
CloseEquity.mq5  10 kb
 
Alexsandr San:

So etwas in der Art. Sie müssen nur Ihre Bilanz + das, was Sie verdienen wollen, eingeben.


Nein, das ist zuverlässiger.

//+------------------------------------------------------------------+
//|                                                  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++;
     }
  }
//+------------------------------------------------------------------+
Dateien:
 

Nein, das ist zuverlässiger.


DANKESCHÖN