Wünsche für MQL5 - Seite 39

 
ds2:
// Эти свойства задались уже при создании переменной.
// Менять их в программе, в принципе, особого смысла нет.
// Так что можно их (некоторые из них) сделать read-only
AvgType.DataType = int; 
AvgType.Value    = 0;
AvgType.Comment  = "Тип скользящей средней";

Wäre es sinnvoll, dies auf diese Weise zu tun?

class ExternParam
{
    <template typename T>
    property T Value ...;
    property String Comment ...;
}
 
SK. писал (а):
ds2:
SK. schrieb (a):

Ich würde auch gerne eine Pause von if() einlegen.

So etwas habe ich in den gängigen Programmiersprachen noch nicht gesehen...

О. Das ist es, genau das Richtige.

Die positive Aussage in dieser Aussage ist, dass es schlecht ist, wenn es nicht in anderen Sprachen ist, es bedeutet, dass es etwas Fremdes und Unnötiges ist.

Meiner Meinung nach stimmt das überhaupt nicht.

Ich stimme zu. Aber man muss die Situation auch von einer höheren Ebene der Zweckmäßigkeit aus betrachten. Die Priorität von MQ, und auch unsere(!), ist es, MQL als Sprache des automatisierten Handels zu verbessern und seine Handels- und Analysemöglichkeiten zu entwickeln. Und MQ hat in dieser Richtung noch viele ungelöste Probleme.


Und die Implementierung von nicht standardisierten Programmierstrukturen, die nichts mit dem Handel zu tun haben - dafür wurde MQL nicht geschaffen. Wenn die Entwickler sich irgendwie von anderen Sprachen abheben wollten, hätten sie zum Beispiel Prolog und nicht C++ verwendet. :) (Obwohl es für mich persönlich, als Prolog-Fan, interessant gewesen wäre, das zu sehen. :) )


Ich denke, egal wie sehr die Programmierer hier nach einem Breakif fragen, es ist unwahrscheinlich, dass MQ Zeit darauf verschwendet. Und meiner Meinung nach werden sie das Richtige tun. Und ich schlage allen vor, MQ nicht mit Anfragen zu belästigen, die sie von dringenderen Aufgaben ablenken, nämlich MQL als automatisierte Handelssprache zu verbessern.

SK. schrieb (a):

Komplexe Konstrukte werden nicht nur auf der Grundlage von Schleifen und Listen gebildet. Sie werden ebenfalls auf der Grundlage von Wenns gebildet. Daher wäre ein kontrollierter Übergang zu einem externen Schließbügel sinnvoll.

Ich bin ganz für Goto. :)


Die Logik eines solchen Programms wäre transparenter. Schließlich ist breakif ein frühzeitiger Ausstieg aus einer if-Konstruktion. Wie jeder vorzeitige Ausstieg sollte er unter einer Bedingung erfolgen, d.h. innerhalb eines weiteren if. Wir sprechen also von breakif als Ausstiegsoperator nicht für ein, sondern für zwei(!) if's, was das Verständnis der Logik eines Programms erschwert und auch vom allgemeinen Konzept der Breaks(breakfor, breakwhile, etc.) als Operatoren, die nur für ein Konstrukt aussteigen, abweicht. Vielleicht ist das der Grund, warum die Entwickler anderer Sprachen einen solch fragwürdigen Operator noch nicht eingeführt haben...

 
ds2 писал (а):
Und ich schlage allen vor, MQ nicht mit Anfragen zu belästigen, die von den dringenderen Aufgaben der Verbesserung von MQL als automatisierte Handelssprache ablenken.


Ich bin sehr dafür. :) Die Logik eines solchen Programms wird transparenter sein.

Liebe Entwickler! Bitte lassen Sie sich nicht "von den dringenderen Aufgaben der Verbesserung von MQL als automatisierte Handelssprache" ablenken.

Wir werden Sie nicht mehr belästigen.

Das Einzige, was Sie noch tun müssen, ist, die Meinung von ds2 zu berücksichtigen.

 

Inspiriert durch den Artikel von Skeptic Filozov - ah, tragen Sie den durchschnittlichen Gewinn und Verlust in Pips und die maximalen und minimalen Trades ebenfalls in den Testbericht ein.

 

Anfragen nur lesen


Funktionen eingeben oder aktuelle Funktionen auf alle Unterordner des Terminals zugreifen lassen

wo es Material zu verarbeiten gibt: z.B. Baumstämme

Nur-Lese-Modus".


Planen Sie einen weiteren Ordner \experts\services

Dort würden alle möglichen Informationen aus dem DM zentral geschrieben werden.

Zum Beispiel eine automatisch aktualisierte, formatierte Kalenderdatei, Nachrichten "in Zahlen" usw...


Wenn Sie klären müssen, worum es in der Anfrage geht, ist das kein Problem. ;)

 

In der Grafik wäre es schön,
1. hairline zu haben, da Linien der Dicke 1 grob aussehen.

2. es wäre schön, wenn die Zeilen mit Ziffern+2 gerundet angezeigt würden.

Zurzeit sind die Linien an den Ziffern des Werkzeugs abgerundet, was zu einem Sprungbrett führt.

-Im Umfeld moderner grafischer Produkte fällt dies auf und ist in der Praxis nicht mehr sinnvoll.

 
Da der Berater den Zeitplan des Kunden bedienen kann, sind "technologische Ticks" sehr wichtig
z.B. in Form von
int servis() 
{
return(0);
}

Dieser empfängt/startet auch wie Start, aber nicht von einem Server, sondern von einem lokalen Timer des Terminals.
Der erforderliche Zeitraum der technologischen Zecken wird niemandem schaden: von 1 bis 3 Sekunden.
Diese Änderung kann direkt in MQL-4 eingeführt werden, ohne auf die Version 5 zu warten. Sozusagen um des Testens willen und um des Geschäfts willen.
 
Korey:

FEHLER in METALANG

extern double  Lot=0.2;
int start()
{ double   Lot; }

Die Initiierung von Doppelvariablen durchläuft die Kompilierung ohne Fehler oder Warnung.


extern double  Lot=0.2;
double   Lot;   //а так ошибку - дает
int start()
{ }

Eine lokale Variable maskiert eine globale Variable. Es liegt kein Fehler vor.

 

Korey, Null, weil die externe Variable maskiert ist:

double Lot;

- Es handelt sich um eine nicht initialisierte Deklaration einer lokalen Variable innerhalb der Funktion start(). Standardmäßig ist er auf Null initialisiert. Alle Funktionen, die in start() aufgerufen werden und den Eingabeparameter Lot haben, erhalten den Wert einer lokalen Variable, nicht einer externen. Die einzige Ausnahme bilden die Funktionen innerhalb von init(), die vor start() ausgeführt werden. Dort muss der Lot-Parameter (wenn er nicht ähnlich maskiert ist) den Wert einer externen Variablen erhalten, d.h. 0,2.


Sie haben den falschen oder unvollständigen Code zitiert. Von wo aus rufen Sie my_funck() auf?

 
Korey:

Wenn es sich um eine Maskierung handelt, warum erhalten dann die anderen Funktionen 0 und nicht 0,2, wie in der Extern vorgeschrieben?


Sie müssen die Angaben selbst überprüfen. Hier ist ein einfaches Skript:

//+------------------------------------------------------------------+
//|                                                CheckVariable.mq4 |
//|                      Copyright © 2008, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"
 
extern double Var = 0.0;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init()
   {
   Print("Функция init():Внешняя переменная на глобальном уровне Var=",Var);
   }
 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void MyFunc()
   {
   Var = -100;
   Print("Функция MyFunc(): Переменная Var=",Var);
   }
 
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int deinit()
   {
   Print("Функция deinit():Внешняя переменная на глобальном уровне Var=",Var);
   }
 
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
int start()
  {
//----
   double Var = 15;
   Print("Локальная переменная на локальном уровне функции start() Var=",Var);
   MyFunc();
   Print("Локальная переменная на локальном уровне после выполнения функции MyFunc() Var=",Var);
 
   Print("Функция start() завершена");
 
//----
   return(0);
  }
//+------------------------------------------------------------------+


und die Ergebnisse des Skripts.