[ARCHIV]Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Ohne dich kann ich nirgendwo hingehen - 5. - Seite 123

 
Danke für Ihre Hilfe, ich habeOrdersTotal() durchOrdersHistoryTotal() ersetzt. Es hat funktioniert.
 

Diejenigen, die mql4 besser verstehen als ich, mögen mir bitte helfen. Es gibt 3 Fragen.

1. zunächst zur doppelten Konstante. Wir alle kennen iMa, Masken, Moving Average/ Die Frage ist: Falsche Zuordnung von Werten.

Beispiel:

extern string  MA1="";
extern string  MA2="";
extern string  MA3="";
string com;


double MA1 = iMA(NULL,PERIOD_M15,9,0,0,0);
double MA2 = iMA(NULL,PERIOD_M15,15,0,0,0);
double MA3 = iMA(NULL,PERIOD_M15,21,0,0,0);

if (MA1>MA2 && MA1!=MA2 && MA1>MA3 && MA1!=MA3 ) com="значение1";
if (MA1<MA2 && MA1==MA2 && MA1<MA3 && MA3!=MA3 ) com="значение2";

Der Wert wird also immer = Wert1 sein. Der Code weigert sich hartnäckig, != (nicht gleich) zu verstehen

2. Frage /Öffnen Suche Schließen/.

Was ich von dem Programm will, aber es funktioniert nicht.

1. die Bedingung prüfen (wahr ; falsch)

2. Wenn es eine solche Anordnung gibt, öffnen wir sie nicht; wenn es keine Anordnung gibt, öffnen wir sie. Wir öffnen sie aufgrund der BedingungOrderComment().

3. Prüfen Wenn das Ereignis X oder Y eintritt , schließen. X-(zum Beispiel ein anderes Signal iMA1>iMA2, Y-ein anderes Signal iMA2>iMA3)

So mache ich es auch, aber es kommt nichts dabei heraus.

if (MA1>MA2 && MA1!=MA2 && MA1<MA3 && MA2>MA3 && MA2!=MA3)
{
   for (int i=1;i<=OrdersTotal(); i++)       
       {
        if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)==true)
           {
            if (OrderComment()=="значение1")return(0);
            else
            {
            OrderSend(Symbol(),OP_SELL, LOT,NormalizeDouble(Bid,Digits),2,0,0,com,Magic,0,Red);
            }
           }
       } 
}

Und wie man schließt, verstehe ich nicht, wo ich einfügen soll.

3. Frage zum Offset (int shift)

In der zweiten Gruppe von iMA, verschiebe ich die relative aktuelle Bar zurück um 3) Was für, so dass, wenn ein Signal oben beschrieben, nicht öffnen wiederholt Aufträge auf jeder Bar. Aber aus irgendeinem Grund findet die Verschiebung nicht statt.

double MA1 = iMA(NULL,PERIOD_M15,9,0,0,0);
double MA2 = iMA(NULL,PERIOD_M15,15,0,0,0);
double MA3 = iMA(NULL,PERIOD_M15,21,0,0,0);

double MA4 = iMA(NULL,PERIOD_M15,9,0,0,3);
double MA5 = iMA(NULL,PERIOD_M15,15,0,0,3);
double MA6 = iMA(NULL,PERIOD_M15,21,0,0,3);

Bitte helfen Sie mir mit Ihrem Wissen. Ich weiß nicht, wie man es benutzt. Ich weiß nicht, wo es im Internet eine ähnliche Implementierung gibt.

 
dertop:

Diejenigen, die mql4 besser verstehen als ich, mögen mir bitte helfen. Es gibt 3 Fragen.

1. zunächst durch konstante Verdoppelung.

2. wie man schließt Ich verstehe nicht, wo man das überhaupt einfügt.

3. Frage zum Offset (int shift)

1. https://www.mql5.com/ru/articles/1561

2. wenn (Abschlussbedingungen) OrderClose(...)

3. Sehen Sie, was genau diese Veränderung ist und wen sie verändert
 
ilunga:

1. https://www.mql5.com/ru/articles/1561

2. wenn (Abschlussbedingungen) OrderClose(...)

3. Sehen Sie sich an, was genau diese Veränderung ist und wen sie betrifft


Vielen Dank für die schnelle Antwort.

Etwa 1. Ja, ich habe es verstanden, wir werden dort graben.

Am 2.if (Schließungsbedingungen) OrderClose(...) (es ist klar, ohne es) Aber ich habe in if, was für wo wo und warum verwirrt....

Korrigieren, falls falsch....

if (MA1>MA2 && MA1!=MA2 && MA1<MA3 && MA2>MA3 && MA2!=MA3)                                         // если true то заходим в тело цикла...
{
   for (int i=1;i<=OrdersTotal(); i++)                                                             //шаг2 проверяем все ордера на наличие ордера со значением1
       {
        if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)==true)
           {
            if (OrderComment()=="значение1")return(0);                                            // если орден найден то ничего не делаем
            else
            {
            OrderSend(Symbol(),OP_SELL, LOT,NormalizeDouble(Bid,Digits),2,0,0,com,Magic,0,Red);   // а вот тут проблемы кто за чем идёт и куда вставить условие закрытие отдельно за телом всего условия (ma1;ma2 и тд), или там где OrderSelect()
            }
           }
       } 
}

Der Index des aus dem Indikatorpuffer erhaltenen Wertes (Verschiebung relativ zum aktuellen Balken um die angegebene Anzahl von Perioden zurück). aus mql4 help

 
dertop:


Vielen Dank für die schnelle Antwort.

Mit 2.if (Abschlussbedingungen) OrderClose(...) (das ist auch ohne verständlich) Aber ich bin verwirrt in if, what für where where und why....

Korrigieren, wenn falsch....


if (MA1>MA2 && MA1!=MA2 && MA1<MA3 && MA2>MA3 && MA2!=MA3)                                         // если true то заходим в тело цикла...
{
   for (int i=1;i<=OrdersTotal(); i++)                                                             //шаг2 проверяем все ордера на наличие ордера со значением1
       {
        if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)==true)
           {
            if (OrderComment()=="значение1")return(0);                                            // если орден найден то ничего не делаем
            else
            {
            OrderSend(Symbol(),OP_SELL, LOT,NormalizeDouble(Bid,Digits),2,0,0,com,Magic,0,Red);   // а вот тут пока написано следующее: для каждого из ордеров у которого мы сюда зашли мы поставим еще один ордер
            }
           }
       } 
}
 
ilunga:

Entschuldigung, aber warum sollte man Ungleichungen überprüfen, wenn die Bedingung bereits gegeben ist! Dies verlangsamt das Lesen der Bedingungen und deren Erfüllung!

if (MA1>MA2 && MA1!=MA2 && MA1<MA3 && MA2>MA3 && MA2!=MA3)//MA1!=MA2 && и && MA2!=MA3 не нужны, т.к. в предыдущих сравнениях
                                                          //равенство ухе исключено! Так что нужно так:
if (MA1>MA2 && MA1<MA3 && MA2>MA3)
 
borilunad:

Entschuldigung, aber warum sollte man Ungleichungen überprüfen, wenn die Bedingung bereits gegeben ist! Dies verlangsamt das Lesen der Bedingungen und deren Erfüllung!


Hier ist etwas seltsam.

if (MA1>MA2 && MA1<MA3 && MA2>MA3)

MA1>MA2 und MA2>MA3 und dann MA1<MA3

Zumal es ausreichend ist, wenn

if (MA1>MA2 && MA2>MA3)
 
borilunad:

Entschuldigung, aber warum sollte man Ungleichungen überprüfen, wenn die Bedingung bereits gegeben ist! Dies verlangsamt das Lesen der Bedingungen und deren Erfüllung!


Es tut mir leid, ich habe es ein wenig übersehen, ich habe zuerst nicht darauf geachtet. Diese Berechnungen sind für 4 MAs gemacht, und es gibt Fälle, wenn MA1>MA2 und zum Zeitpunkt MA3=MA4 (so überprüfen ist erforderlich, weil dies ist, wie die Strategie aufgebaut ist)

if (MA1>MA2 && MA1!=MA2 && MA1<MA3 && MA2<MA3 && MA2!=MA3 && MA3<MA4 && MA3!=MA4)                                         // если true то заходим в тело цикла...
{
   for (int i=1;i<=OrdersTotal(); i++)                                                             //шаг2 проверяем все ордера на наличие ордера со значением1
       {
        if(OrderSelect(i-1,SELECT_BY_POS,MODE_TRADES)==true)
           {
            if (OrderComment()=="значение1")return(0);                                            // если орден найден то ничего не делаем
                else
                {
                if (OrderComment()!="значение1")                                                         // если такого ордера нету
                   {
                   OrderSend(Symbol(),OP_SELL, LOT,NormalizeDouble(Bid,Digits),2,0,0,com,Magic,0,Red);   // тогда открываем
                   }
                }
         if (MA1<MA2 && MA1!=MA2 && MA1>MA3 && MA1!=MA3 && MA3>MA4 && MA3!=MA4)                          // если true новый сигнал
             {
            OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),3,CLR_NONE);               // тогда закрываем
             }

           }
       } 
}

So?????

 
Vinin:


Hier ist etwas seltsam.

MA1>MA2 und MA2>MA3 und dann MA1<MA3


Ja, tut mir leid, ich war verwirrt, weil ich zum ersten Mal im Forum schreibe. Erst kopiert, dann beschlossen, handschriftlich zu schreiben, und dabei durcheinander gekommen... aber das obige Beispiel ist richtig...

MA1>MA2 und MA1<MA3 und MA3<MA4

 

Guten Tag.

Bitte helfen Sie mir , den Indikator zu ändern.

Ich habe ein Standard-Pivot, ich möchte einen Indikator, der Ebenen mit Standard-Formeln berechnet, aber mit H, L, C Daten, die ich selbst eingeben.

Ich möchte dies als Input für meine eigenen Indikatoren verwenden.