Nützliche Funktionen von KimIV - Seite 58

 

Hallo Igor,

Könnten Sie mir bitte sagen, welcher Operator diesen in mql4 - OrderValue(cnt,VAL_TYPE)=OP_BUY (mql3) ersetzen soll.

Ich danke Ihnen im Voraus.

 
Können Sie uns bitte mitteilen, wie man einen Auftrag zum Schlusskurs des aktuellen Balkens schließt? D.h. der Balken wird zusammen mit dem Auftrag geschlossen.
 

Hallo Igor.

Ich habe alle Funktionen und Operatoren durchgesehen - ich kann keine finden, und wenn es eine gibt, kann ich die Funktion nicht sehen, die alle offenen Positionen ändern würde,

Wenn ja, kann ich keine Funktion erkennen, die alle offenen Positionen auf einmal ändert, anstatt eine bei jedem Tick auszuwählen.

Wenn es Ihnen nichts ausmacht, teilen Sie mir das bitte mit.

 
KimIV >> :

In diesem Thread werde ich die Codes meiner Funktionen in MQL4 veröffentlichen, Beispiele für ihre Verwendung geben und Fragen zu ihrer Verwendung beantworten. Jede Funktion wird in zwei Beiträgen veröffentlicht. Der erste Beitrag wird den Funktionscode enthalten, der zweite - Anwendungsbeispiele und kurze Erläuterungen. Manchmal hänge ich den Code eines Skripts an den zweiten Beitrag an, um die Funktion tatsächlich zu testen und die Ergebnisse anzuzeigen.

Ich werde am Ende mit Funktionen zur Handhabung von Aufträgen gemäß Lukyanovs Anfrage im Thema "Wie man zwei EAs gleichzeitig laufen lässt" beginnen.

Die erste Funktion ist die Funktion zum Setzen von Aufträgen (Version für MT4-Tester):

Hallo Igor, sind Sie mit AlterTrader vertraut? Wenn ja, könnten Sie mir die Antworten auf 3 oder 4 meiner Fragen geben?

 
ipm писал(а) >>
Igor. Guten Tag.
Können Sie ein einfaches Problem für Sie zeichnen:
setzen, bei welchem Preis Wert die Signallinie MACD kreuzen wird, oder in anderen Worten MACD Histogramm wird gleich Null werden.

Hallo Oleg!

Ich habe solche Probleme in der Praxis nicht gelöst. Und theoretisch habe ich eine vage Vorstellung davon, wie man das macht. Wahrscheinlich werden die makdac-Werte als x und der Preis als x genommen, und dann wird die Funktion y=f(x) die Abhängigkeit der makdac-Werte vom Preis darstellen. Wenn es so einfach wäre, könnte man die Funktion y=f(x) invertieren, indem man x durch ypc x=F(y) ausdrückt. Die Schwierigkeit besteht jedoch darin, dass die Funktion y=f(x) von mehr als einem x abhängt. Ich habe diese Vorlesungen an der Universität übersprungen :-)

 
Duke3D писал(а) >>

Hallo Igor,

Könnten Sie mir bitte sagen, welcher Operator diesen in mql4 - OrderValue(cnt,VAL_TYPE)=OP_BUY (mql3) ersetzen soll.

Ich danke Ihnen im Voraus.

Offenbar wird es OrderType() sein.

 
mozg писал(а) >>
Können Sie mir bitte sagen, wie man einen Auftrag zum Schlusskurs des aktuellen Balkens schließt? D.h. der Balken wird zusammen mit dem Auftrag geschlossen.
static datetime prevTimeOpen=0
if ( prevTimeOpen>0 && prevTimeOpen<Time[0]) {
  for ( цикл перебора позиций) {
    if ( выбрана позиция, которую надо закрыть) {
      OrderClose(...);
    }
  }
}
prevTimeOpen=Time[0];
 
amur писал(а) >>

Hallo Igor.

Ich habe alle Funktionen und Operatoren durchgesehen - ich kann keine finden, und wenn es eine gibt, kann ich die Funktion nicht sehen, die alle offenen Positionen ändern würde,

die alle offenen Positionen auf einmal ändern würde, anstatt eine ausgewählte Position bei jedem Tick.

Wenn Sie nichts dagegen haben, teilen Sie uns dies bitte mit.

Ich glaube nicht, dass solche Maßnahmen angemessen wären. Schließlich hat jede Stelle in der Regel individuelle Parameter. Sie wählen also eine bestimmte aus...

Und was genau wollen Sie ändern?

 

NameDayOfWeek() Funktion

Gibt den Namen des Wochentags auf der Grundlage der als Parameter übergebenen Zahl zurück:

  • ndw - Nummer des Wochentags. Erforderlicher Parameter.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 01.09.2005                                                     |
//|  Описание : Возвращает наименование дня недели                             |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    ndw - номер дня недели                                                  |
//+----------------------------------------------------------------------------+
string NameDayOfWeek(int ndw) {
  if ( ndw==0) return("Воскресенье");
  if ( ndw==1) return("Понедельник");
  if ( ndw==2) return("Вторник");
  if ( ndw==3) return("Среда");
  if ( ndw==4) return("Четверг");
  if ( ndw==5) return("Пятница");
  if ( ndw==6) return("Суббота");
}
 

Funktion NormalizeLot().

Diese Funktion gibt den normalisierten Wert des gehandelten Loses zurück. Neben der Normalisierung passt die Funktion die Losgröße innerhalb der vom Handelszentrum vorgegebenen Grenzen an (die minimalen und maximalen Loswerte und der Losänderungsschritt werden überprüft). Die Funktion NormalizeLot() nimmt die folgenden Parameter an:

  • lo - NormalizeLot-Wert. Erforderlicher Parameter.
  • ro - Rundungsmethode. Falsch - für die kleinere Seite, Wahr - für die größere Seite. Standardwert - False - auf der unteren Seite.
  • sy - Bezeichnung des Handelsinstruments. NULL oder "" - aktuelles Symbol. Standardwert - "".
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 16.05.2008                                                     |
//|  Описание : Возвращает нормализованное значение торгуемого лота.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    lo - нормализуемое значение лота.                                       |
//|    ro - способ округления          (   False    - в меньшую,               |
//|                                        True     - в большую сторону)       |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//+----------------------------------------------------------------------------+
double NormalizeLot(double lo, bool ro= False, string sy="") {
  double l, k;
  if ( sy=="" || sy=="0") sy=Symbol();
  double ls=MarketInfo( sy, MODE_LOTSTEP);
  double ml=MarketInfo( sy, MODE_MINLOT);
  double mx=MarketInfo( sy, MODE_MAXLOT);

  if ( ml==0) ml=0.1;
  if ( mx==0) mx=100;

  if ( ls>0) k=1/ ls; else k=1/ ml;
  if ( ro) l=MathCeil( lo* k)/ k; else l=MathFloor( lo* k)/ k;

  if ( l< ml) l= ml;
  if ( l> mx) l= mx;

  return( l);
}

SZZ: Im Anhang finden Sie ein Skript zum Testen der Funktion NormalizeLot().

Dateien: