Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 1127

 
Verstehen Sie immer noch nicht, was die Frage ist?
 
MrBrooklin:

Hallo Wladimir!

Bitte helfen Sie mir, den Anfang des folgenden Skripts zu ändern:

Ich benötige das Skript, um Pending Orders nicht auf Basis von Ask und Bid zu setzen, sondern auf Basis von Hight und Low des vorherigen Bars (Candlestick).

Mit freundlichen Grüßen, Vladimir.

Zum Beispiel so:

//--- start work
   double start_price_ask=0.0;
   double start_price_bid=0.0;
//---
   MqlRates rates[];
   ArraySetAsSeries(rates,true);
   int start_pos=0,count=3;
   if(CopyRates(m_symbol.Name(),Period(),start_pos,count,rates)!=count)
     {
      Print(__FILE__," ",__FUNCTION__,", ERROR: CopyRates ");
      return;
     }
//---
   if(InpPending==stop)
     {
      start_price_ask=rates[1].high+ExtUpGap;
      start_price_bid=rates[1].low-ExtDownGap;
     }
   else
      if(InpPending==limit)
        {
         start_price_ask=rates[1].low-ExtDownGap;
         start_price_bid=rates[1].high+ExtUpGap;
        }
 

Forum für Handel, automatisierte Handelssysteme und Strategietests

FAQ von Anfängern MQL5 MT5 MetaTrader 5

Vladimir Karputov, 2019.09.18 12:49

Ungefähr so:

//--- start work
   double start_price_ask=0.0;
   double start_price_bid=0.0;
//---
   MqlRates rates[];
   ArraySetAsSeries(rates,true);
   int start_pos=0,count=3;
   if(CopyRates(m_symbol.Name(),Period(),start_pos,count,rates)!=count)
     {
      Print(__FILE__," ",__FUNCTION__,", ERROR: CopyRates ");
      return;
     }
//---
   if(InpPending==stop)
     {
      start_price_ask=rates[1].high+ExtUpGap;
      start_price_bid=rates[1].low-ExtDownGap;
     }
   else
      if(InpPending==limit)
        {
         start_price_ask=rates[1].low-ExtDownGap;
         start_price_bid=rates[1].high+ExtUpGap;
        }

Toll!!! Ich danke Ihnen!

Mit freundlichen Grüßen, Vladimir.

 
Warum kann ich kein benutzerdefiniertes Kriterium in einer vollständigen Parameteraufzählung verwenden, was ist die heilige Bedeutung davon?
 

Forum für Handel, automatisierte Handelssysteme und Strategietests

FAQ von Anfängern MQL5 MT5 MetaTrader 5

Vladimir Karputov, 2019.08.31 14:38

Ich bitte Sie.

Bitte beachten Sie die auf globaler Programmebene deklarierte Variable m_first_start

bool        m_first_start  = false;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()

Am Ende von OnTick wird dieser Variablen der Wert "true" zugewiesen.

//---
   m_first_start=true;
  }
//+------------------------------------------------------------------+
//| Refreshes the symbol quotes data                                 |
//+------------------------------------------------------------------+
bool RefreshRates()
  {

und der EA wird bis zu seinem nächsten Neustart keine ausstehenden Aufträge mehr platzieren

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(m_first_start)
      return;

Hallo Wladimir!

Bitte raten Sie mir, wie ich den Code so ändern kann, dass der EA bei jedem Balken Pending Orders platziert, um meine Selbsterfahrung zu verbessern. Ich habe versucht, einfach alle gelben Markierungen zu löschen, aber er hat sofort angefangen, Tausende von Aufträgen und Positionen zu öffnen und zu platzieren.

Mit freundlichen Grüßen, Vladimir.

 
MrBrooklin:

Hallo Wladimir!

Um meine Selbsterfahrung zu verbessern, geben Sie mir bitte Tipps, wie ich den Code so ändern kann, dass der EA bei jedem Balken Pending Orders platziert. Ich habe versucht, einfach alle gelb markierten Positionen zu löschen, aber er beginnt sofort, Tausende von Aufträgen und Positionen zu öffnen und zu platzieren.

Mit freundlichen Grüßen, Vladimir.

Sie sollten den Moment erkennen, in dem ein neuer Balken entsteht, und erst dann Pending Orders platzieren:

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.000"
/*
   barabashkakvn Trading engine 3.043
*/
#include <Trade\SymbolInfo.mqh>
//---
CSymbolInfo    m_symbol;                     // object of CSymbolInfo class
//--- input parameters

//---
datetime m_prev_bars             = 0;        // "0" -> D'1970.01.01 00:00';

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- we work only at the time of the birth of new bar
   datetime time_0=iTime(m_symbol.Name(),Period(),0);
   if(time_0==m_prev_bars)
      return;
   ЗДЕСЬ РАЗМЕЩАТЬ КОД ПО ВЫСТАВЛЕНИЮ ОТЛОЖЕННЫХ ОРДЕРОВ
//---
  }
//+------------------------------------------------------------------+
Dateien:
Test.mq5  4 kb
 

Danke, Vladimir, für den Hinweis.

Hochachtungsvoll, Vladimir.

 
Vladimir Karputov:

Es ist notwendig, festzustellen, wann ein neuer Balken entsteht, und erst dann schwebende Aufträge zu erteilen:

Das ist ganz offensichtlich! Woher kommen diese Fragen? Aus Faulheit oder aus etwas anderem?

 
Сергей Таболин:

Das ist ganz offensichtlich! Woher kommen diese Fragen? Aus Faulheit oder aus etwas anderem?

MrBrooklin macht gerade seine ersten Schritte, deshalb braucht er einen Hinweis. Jeder hat mal angefangen und war irgendwann grün.

 
Vladimir Karputov:

MrBrooklin macht gerade seine ersten Schritte, deshalb braucht er ein paar Tipps. Jeder hat einmal angefangen und war grün.

Ich bin nicht prinzipiell dagegen. Aber es muss doch eine Logik dahinter stecken?

Ich möchte, dass etwas für die neue Bar getan wird. Zunächst einmal müssen Sie diesen neuen Balken definieren.

Diese Fragen stammen nicht von einem Anfänger, sondern von einem faulen Mann, der alles wiederkäuen und in den Mund nehmen will. Kannst du dein Gehirn nicht benutzen?

Grund der Beschwerde: