Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 711

 
Artyom Trishkin:

Schneller zu durchschauen und zu verstehen

die Preise aufschreiben, wie man sie nachher nimmt, wann was?

void PriceTimePos(string sy="",int op=-1,int mn=-1)
  {
  double Цены[3];
   datetime t;
   bool daa;
   int d,k_=OrdersTotal(),typ_;
   double   r=0;
   int      i,k=OrdersHistoryTotal();

   if(sy=="0") sy=Symbol();
   for(i=0; i<k; i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
        {
         if(OrderSymbol()==Symbol())
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               if(op<0 || OrderType()==op)
                 {
                  if(mn<0 || OrderMagicNumber()==mn)
                    {
                     if(OrderCloseTime()>=TimeCurrent()-2440*60)
                       {
                        t=OrderCloseTime();
                        r=OrderOpenPrice();
                        sl=OrderStopLoss();
                        tp=OrderTakeProfit();
                        lot=OrderLots();
                        typ_=OrderType();
                        Print("OpenPrice",r);
                       Цены[0]=OrderOpenPrice();
                    
                       }
                    }
                 }
              }
           }
        }
     }
//
  }
anstelle von r in diese Schleife einzufügen
                        daa=false;
                        for(i=0; i<k; i++)
                          {
                           if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
                             {
                              if((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op))
                                {
                                 if(OrderType()>1 && OrderType()<6)
                                   {
                                    d=MarketInfo(OrderSymbol(), MODE_DIGITS);
                                    r=NormalizeDouble(r, d);
                                    if(r==NormalizeDouble(OrderOpenPrice(),d)) daa=true; 
                                   }
                                }
                             }
                          }
 

Hallo, ich habe eine Funktion erstellt, die den Stop Loss erhöhen soll, nachdem die letzte Order im Minus geschlossen wurde.

Erhöht sie um die eingestellte Stufe, bis sie den Höchstwert erreicht. Folglich wird immer der ursprüngliche Wert des Stop-Loss gesetzt.

Was ist los? Ich danke Ihnen!

//+------------------------------------------------------------------+

double SL()

{

doppelt sL;

if(OrdersHistoryTotal()==0)

{

sL=StopLoss;

}

if(OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY))

{

if(AuftragGewinn()>=0)

{

sL=StopLoss;

}

if(OrderProfit()<0 && OrderType()==OP_BUY)

{

sL=OrderOpenPrice()-OrderStopLoss()+SLStep;

}

if(OrderProfit()<0 && OrderType()==OP_SELL)

{

sL=OrderStopLoss()-OrderOpenPrice()+SLStep;

}

}

if(sL>maxStep)

{

sL=StopLoss;

}

zurück(sL);

}

//+------------------------------------------------------------------+

 
Artyom Trishkin:
  1. Es ist richtig, dass Werte aus nicht ungültigen Funktionen zurückgegeben werden können, aber es ist besser, auf neue Schienen umzusteigen - dort gibt es nichts Kompliziertes.
  2. Schreiben Sie, vergessen Sie nicht, #property strict Direktive ganz am Anfang des Codes einzufügen - wo alle Direktiven ausgeschrieben sind, lesen Sie Fehlercodes - ihre Beschreibungen sind in der Dokumentation und alles wird gut und nicht kompliziert sein.
Wo kann ich die Fehlercodes finden? Wo ist diese Dokumentation?
 
#property strict

int Count=0;

void OnInit()     
{
   Alert ("Сработала ф-ия init() при запуске");   // Сообщение
   return;                                                                     // Выход из init()
   }   
//--------------------------------------------------------------------
void OnStart()                                                                       // Спец. ф-ия start()
   {
   double Price = Bid;                                                      // Локальная перемен.
   Count++;                                                                      // Счётчик тиков
   Alert("Новый тик ",Count," Цена = ",Price);       // Сообщение
   return;                                                                        // Выход из start()
   }
void OnDeinit()                                                                              // Спец. ф-ия deinit()
   {
   Alert ("Сработала ф-ия deinit() при выгрузке");         // Сообщение
   return;                                                                                 // Выход из deinit()
   }

Was schreibe ich falsch?

Es sollte folgendermaßen ablaufen http://prntscr.com/lu1kb9


Versucht, die Daten unter der aktuellen Vorlage einzufügen

//+------------------------------------------------------------------+
//|                                                            п.mq4 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {

   Alert ("Сработала ф-ия init() при запуске");   // Сообщение
                                                                       // Выход из init()
     
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
Alert ("Сработала ф-ия deinit() при выгрузке");         // Сообщение
   return;
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
 
   double Price = PRICE_OPEN;                                                      // Локальная перемен.
   Count++;                                                                      // Счётчик тиков
   Alert("Новый тик ",Count," Цена = ",Price);       // Сообщение
   return;                                                                        // Выход из start()
   
   
  }
//+------------------------------------------------------------------+


Aber es ist immer noch nicht dasselbe. Helfen Sie mir
Скриншот
Скриншот
  • prnt.sc
Снято с помощью Lightshot
 
Bitte helfen Sie, hat jemand eine Funktion, die ein Array übergeben kann, um den maximalen Drawdown zu berechnen?
 

Guten Tag.

Ich meistere emq-el mit Hilfe des Tutorials von Sergei Kovalev.

Ich habe den Expert Advisor von dort heruntergeladen, kompiliert, und es scheint sogar zu funktionieren, aber beim Kompilieren gibt es einige Rückmeldungen, keine Fehler, sondern Warnungen.

Was sollte ich ändern, damit es ohne Fehler kompiliert wird? Ich danke Ihnen im Voraus.

Dateien:
expert.mq4  28 kb
 
Sergey Branin:
Wo kann ich die Fehlercodes finden? Wo ist diese Dokumentation?

Im Menü dieser Website - siehe unter

 
Artyom Trishkin:

Im Menü dieser Website - siehe unter

Artem, es gibt eine Dokumentation zu mql5, und die Fragen sind im Abschnitt mql4

Sergej Branin:
Wo kann ich die Fehlercodes finden? Wo ist diese Dokumentation?

Hier ist die mql4-Dokumentation. Im MetaEditor sollten Sie F1 drücken

Справочник MQL4
Справочник MQL4
  • docs.mql4.com
MetaQuotes Language 4 (MQL4) - встроенный язык программирования торговых стратегий, разработанный компанией MetaQuotes Software Corp. на основе своего многолетнего опыта в создании торгово-информационных платформ. Этот язык позволяет писать собственные программы-эксперты (Expert Advisors), автоматизирующие управление торговыми процессами и...
 
Alexey Viktorov:

Artyom, ist die mql5 Dokumentation dort? und die Fragen sind in der mql4 Abschnitt

Es gibt eine Dokumentation zu mql4. Und es ist besser, F1 zu drücken, während man sich im MetaEditor befindet

Ahh... Aber es ist auch nicht so kompliziert - es ist schneller, den Finger auf F1 zu legen und alles zu finden, was man braucht, als einen Tag auf eine Antwort im Forum zu warten. Ich verstehe das nicht ...

 
Hallo, ich bin neu in der Programmierung. Ich habe nirgendwo vorgefertigten Code gefunden. Die Idee ist die folgende - ich brauche, um einen benutzerdefinierten Indikator aus einem EA zu steuern, oder vielmehr ändern seine externen Parameter (ein), wenn einige Ereignis geschieht. Die Logik in Kürze - wenn das Lot (oder z.B. die Anzahl der Positionen) einen vordefinierten Wert überschreitet, ändert sich die externe Einstellung im Indikator (der sich in einem anderen Fenster befindet und nicht mit diesem EA verbunden ist) ohne Neuinitialisierung des Indikators. Vielleicht können Sie versuchen, es über
 string ServiceCustomIndicatorByIndexA(int nIndex);// я даже не знаю тут   ANSI или UNICODE нужно
и
int ServiceGetNamesIndicatorsMA(int hwndChart,int nWindow,string &asIndicators[],int nSize);   
Ich weiß nicht, wie das geht, kann ein Programmierer einen einfachen Code-Block für ein Beispiel schreiben. c/o Denis