[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 35

 
keep87:

double get_extrem(int n) {

   for(int i=1;;i++) {

      double ind=iCustom(Symbol(),0,"indicator_name",0,i);

      if(n>1)  

         if(ind!=0) n--;

         else

         if(ind!=0) return(ind);

      }

   }


Wenn Sie die Taktnummer der Spitze benötigen, ändern Sie den Funktionstyp in int und schreiben Sie statt return(ind); return(i);

Das ist es, worüber ich im Moment nachdenke. Alle Funktionen der Typen double und int geben immer konkrete Festwerte zurück. Zum Beispiel 1, 0, -1 und in diesem Fall muss die Bedingung mit dieser Funktion anders gehandhabt werden als zuvor, z.B:

if(FindOrders() > 1)

{

   Ordersend(...........); 

} 

In diesem Fall müssen wir z.B. für 3 Stämme vergleichen:

if (get_extrem(3) == ind)
{
   // Делаем что-то при выполнении заданного условия
}

Ist das die logische Art, es zu schreiben? Vielleicht ist es sinnvoller, dieser Funktion den Typ bool zuzuweisen? Zum Beispiel: Wenn wir das dritte Knie gefunden haben, dann kaufen oder verkaufen wir zu dem Preis (unter oder über ind).

Und in diesem Fall vergleichen wir die Funktion mit ihrem n-Knie-Parameter mit dem Preis an diesem Knie, und was dann?

 
hoz:

Ich denke im Moment darüber nach. Alle meine Funktionen vom Typ double und int geben immer bestimmte feste Werte zurück. Zum Beispiel 1, 0, -1, aber in diesem Fall sollte die Bedingung mit dieser Funktion auf eine andere Art und Weise ausgeführt werden, als ich es zuvor getan habe, etwa so:

In diesem Fall müssen wir z.B. für 3 Stämme vergleichen:

Ist das die logische Art, es zu schreiben? Vielleicht ist es sinnvoller, dieser Funktion den Typ bool zuzuweisen? Zum Beispiel: Wenn wir das dritte Knie gefunden haben, kaufen oder verkaufen wir zu einem Preis (niedriger oder höher als ind).

In diesem Fall vergleichen wir die Funktion mit ihrem Parameter n Knie mit dem Preis an diesem Knie, und was dann?



double ind=iCustom(Symbol(),0,"indicator_name",0,i);

Double ind kann -2, -3 und so weiter und sogar Pi 3.14159...... zurückgeben.

Und in diesem Fall vergleichen wir die Funktion mit ihren n-Knie-Parametern mit dem Preis an diesem Knie, und was dann? Es ist nicht ganz klar....

 
hoz:

Ich denke im Moment darüber nach. Alle meine Funktionen vom Typ double und int geben immer bestimmte feste Werte zurück. Zum Beispiel 1, 0, -1, aber in diesem Fall sollte die Bedingung mit dieser Funktion auf eine andere Art und Weise ausgeführt werden, als ich es zuvor getan habe, etwa so:

In diesem Fall müssen wir z.B. für 3 Stämme vergleichen:

Ist das die logische Art, es zu schreiben? Vielleicht ist es sinnvoller, dieser Funktion den Typ bool zuzuweisen? Zum Beispiel: Wenn wir das dritte Knie gefunden haben, dann kaufen oder verkaufen wir zu dem Preis (unter oder über ind).

Und in diesem Fall vergleichen wir die Funktion mit ihrem n-Schwellenwert-Parameter mit dem Preis an diesem Knie, und was dann?



Nun, nein, versuchen Sie es mit Experimenten...... es ist alles Blödsinn......
 
Sepulca:


Double ind kann -2, -3 und so weiter und sogar Pi 3.14159...... zurückgeben.

Und in diesem Fall vergleichen wir die Funktion mit ihren n-Knie-Parametern mit dem Preis an diesem Knie, und was dann?


Warum sollten wir das auf einmal tun? Double ind gibt eine gebrochene Zahl zurück ... und -2, -3 ... sind ganze Zahlen. Und so wie ich es verstehe,istDouble ind der Preis auf dem Knie im Parameterget_extrem(int n)
 
Sepulca:



Diese Seite ist nicht für den Handel... Sie ist hauptsächlich der MQL-Programmierung gewidmet. In vielen Codes wird sogar gewarnt: "Not for real trading".

Und wo ist der Prof., der wie ein Prof. handelt? Und wenn die Administratoren das herausfinden würden, würden sie sich wohl nicht die Mühe machen, die Seite zu pflegen ...))

Wie Erbsen in einer Wand ).

Was wir brauchen, ist ein Beispiel für einen ordnungsgemäßen Kauf zu einem beliebigen, zufällig gewählten Zeitpunkt.

Ja, sie schreiben nicht für den echten Handel... Was also, und warum?

Warum zeigen Sie nicht ein Beispiel für einen echten Handel, ohne die Strategie anzukündigen?

Oder es gibt im Prinzip kein richtiges Beispiel.

 

Guten Tag. Können Sie mir sagen, wie ich den Heiken Ashi(HA) Hi-Lo (Amplitude) Parameter des entsprechenden Indikators erhalte? Ich habe versucht, mit den globalen Variablen umzugehen, aber das ist nicht so einfach. Im HA-Code habe ich getting auf folgende Weise eingebettet

int start()

{

double haOpen, haHigh, haLow, haClose

...

GlobalVariableGet(pip);

...(dies ist Standardcode mit HA-Berechnung)

Als nächstes erhalten wir die Parameter der Hi-Lo-Kerzenleuchter HA

result2=MathMin(ExtMapPuffer3[pos+1],ExtMapPuffer4[pos+1])

result22=MathMax(ExtMapBuffer3[pos+1],ExtMapBuffer4[pos+1]);

result3=MathMin(Low[pos+1],result2);

result33=MathMax(High[pos+1],result22);

result0=result33-result3; / Berechnung der HA-Amplitude

GlobalVariableSet(pip,result0);/Zuweisung des Amplitudenwerts an globalVariableSet (pip,result0)

pos--;

}

//----

zurück(0);

}

Dann füge ich einfachGlobalVariableGet(pip) in die Formel in EA ein,aber irgendetwas ist völlig falsch, d.h. der Wert von pip ist nicht das, was er sein sollte. Bitte sagen Sie mir, was los ist. Oder vielleicht ist es einfacher, die HA-Amplitude für den EA-Betrieb zu erhalten.

 
Ich grüße alle. Ich bin selbst neu im Programmieren, also lösen Sie bitte das Problem.

Es ist notwendig, dass mehrere EAs auf demselben Konto eine begrenzte Anzahl von Aufträgen eröffnen.

Beispiel: 10 EAs, die aber nur 5 Aufträge eröffnen können, aber nicht mehr als einen pro Währungspaar.

Dies wird wie folgt umgesetzt, aber es funktioniert nicht auf diese Weise.

extern int МаксКолОрдеров   = 5;

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

int ПодсчетОткрОрдеров() {
  int k=OrdersTotal();
   if (Символ=="0") Символ=Symbol();
    for (int i=МаксКолОрдеров; i<k; i++) {
     if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==Символ || Символ=="") {
       if (МагикНомер<0 || OrderMagicNumber()==МагикНомер) {
      if (OrderMagicNumber()<1) return(True);
     }
    }
   }
  }
 return;

}

//+------------------------------------------------------------------+
int start()
  {
   if(ПодсчетОткрОрдеров()==0)ПровТоргУсловий();
   }

 
evgenGX:

1. Ich wurde oben nach globalen Variablen gefragt, danke. Ich lese gerade die Dokumentation, wie wird das in Ihrer Version gemacht?

2. Ich möchte, dass der Expert Advisor nach Erreichen eines Gewinns erst wieder in den Markt einsteigt, wenn die manuelle Bestätigung der Handelsgenehmigung erfolgt ist.


1. Das Gewinnniveau auf jedem Balken wird überwacht. Übersteigt sie den festgelegten Prozentsatz der Einlage, werden alle Geschäfte abgeschlossen.

2. Sehen und bearbeiten Sie diesen Expert Advisor, fügen Sie Filter auf Magie und alles, was Sie brauchen...


 

Helfen Sie mir, den Code zu vervollständigen. Ich habe versucht, einen Code zu schreiben, der sagt:

-wenn MA50 MA200 von unten nach oben kreuzt und dann

-wenn der Preis auf МА50 sinkt

-Zwei Linien werden auf dem Chart eingezeichnet, Unterstützung und Widerstand (für die letzten 15 Balken);

Es ist wie alles funktioniert, aber ich kann nicht sicherstellen, dass diese Linien das erste Mal erschienen sind, dann blieb an Ort und Stelle, es braucht, um den Handelsalgorithmus(und sie weiterhin gezeichnet werden).

Kann ich sie an Zeit oder Takt binden?

Hier ist der Code. Was muss ich hinzufügen?

#property copyright "Copyright © 2012, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"


bool  Fact_1 = false;                    // Глобальная перемен для бай.   
bool  Fact_2 = false;                    // Глобальная перемен для бай
bool  Fact_3 = false;                    // Глобальная перемен для бай

double support;
double resist;

 int timeFrame = 5;
 int numBars = 15;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----

//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----

  ObjectsDeleteAll(); 
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----


   //---------------------------------------------------------------------------
if (Fact_3==true)                            //Если событие уже..
         
                                              //..было, то выходим
     return(0);
 
//----

  //---- БЛОК ОТКРЫТИЯ  BUY--------------------------------------------------------------
 
 if (iMA(NULL,PERIOD_M5,50,0,MODE_EMA,PRICE_CLOSE,2)<iMA(NULL,PERIOD_M5,200,0,MODE_EMA,PRICE_CLOSE,0)&&
iMA(NULL,PERIOD_M5,50,0,MODE_EMA,PRICE_CLOSE,1)>=iMA(NULL,PERIOD_M5,200,0,MODE_EMA,PRICE_CLOSE,0))//если МА50 пересекает МА200 снизу вверх по M5
Fact_1 = true;       // Произошло событие 1 
//-
if (Fact_1 == true &&  Low[0]<= iMA(NULL,PERIOD_M5,50,0,MODE_EMA,PRICE_CLOSE,0))//если цена опустилась до МА50
 Fact_2 = true; // Произошло событие 2 
 if (Fact_2 == true)

{
// Определяем линии поддержки\сопротивления
  support = 10000;
  resist = 0;
 
  for(int u = 1;u<=numBars;u++)
  {
   if(support>iLow(Symbol(),timeFrame,u))
     support = iLow(Symbol(),timeFrame,u);
   if(resist<iHigh(Symbol(),timeFrame,u))
     resist = iHigh(Symbol(),timeFrame,u);
  }  
   ObjectSet("lineSupport",OBJPROP_PRICE1,support);
  ObjectSet("lineResist",OBJPROP_PRICE1,resist);
 
 }


 //----
  {
    ObjectCreate("lineSupport",OBJ_HLINE,0,0,0);
    ObjectSet("lineSupport",OBJPROP_COLOR,Blue);
   
    ObjectCreate("lineResist",OBJ_HLINE,0,0,0);
    ObjectSet("lineResist",OBJPROP_COLOR,Red);
    }
//----

//что сюда добавить что бы линии появившись, оставались на месте?




//----
   return(0);
  }

 

Was passiert, was kann passieren, wenn

Kauf, Verkauf ohne Angabe einer Marge für Slippage, in der Regel werden +- 2 Punkte eingesetzt.

Die Antwort ist eine Rückfrage.

Und wenn kein Schlupfwert festgelegt wird, ist dann ein Kauf garantiert?

Grund der Beschwerde: