[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 159

 
1Rakso >> :

1) Und wie kann man sie durch externe Variablen deaktivieren?

2) Kann ich es so einstellen, dass der erste geöffnete Auftrag beim Öffnen geschlossen wird und die nachfolgenden Aufträge 2, 3 usw. nicht geschlossen werden? Angenommen, ich eröffne einen Kaufauftrag - das ist der erste Auftrag, dann eröffne ich einen weiteren Kaufauftrag - den zweiten usw., und von dieser Reihe von Aufträgen würde nur der erste Auftrag durch СorderClose geschlossen werden?

Überprüfen Sie die Adressseiten unter https://www.mql5.com/ru/forum/105913

1) Ungefähr so -

extern bool      AutoClose = True;
.......................................


//********* Закрытие позиций ****************************************
if ( AutoClose) {  
//----переменные для закрытия позиций ----
double Stochast_0 =iStochastic(NULL,0, Stochastic_period,3,3,MODE_SMA,0,MODE_MAIN,0);
double Stochast_1 =iStochastic(NULL,0, Stochastic_period,3,3,MODE_SMA,0,MODE_MAIN,1);
//----------------------------------------------------------------------
  for (int v=0; v<OrdersTotal(); v++)                             {       
      if (OrderSelect( v, SELECT_BY_POS, MODE_TRADES))               {           
        if (OrderSymbol()==Symbol()&& OrderMagicNumber()== MagicNum)   { 
//-----------------------------------------------------                  
if (OrderType() == OP_BUY) { 
      if( Stochast_1>75 && Stochast_0<75)     {
           OrderClose(OrderTicket(),OrderLots(),Bid,3,Green); // закрываем позицию
                // return(0); // выходим
                }       
     }  
 //--------------------------------------------------------
if (OrderType() == OP_SELL) { 
      if( Stochast_1<25 && Stochast_0>25)    {
                 OrderClose(OrderTicket(),OrderLots(),Ask,3,Green); // закрываем позицию
                // return(0); // выходим
                }       
     }  
 //-------------------------------------------------------                       
    }  // Symbol()  
  } // select
 } //total
} //Close_

2)

Entfernen Sie die Sperre ( // ) vor

// return(0); // exit

und dann würde nur die erste (oder letzte) Position geschlossen werden.

 
PyMbIH >> :

Hallo, alle ))))

Hilfe.

Ich habe gerade mit der Programmierung von mql4 begonnen.

Schreiben eines Expertenberaters.

Wie man das macht.

Ich möchte, dass mein Expert Advisor nur montags funktioniert.

//Открытие и закрытие  позиций только в понедельник  
      if (TimeDayOfWeek(TimeCurrent()) == 1)
         return (0);  
 
rid писал(а) >>

>> Dankeschön!

 
Vinin >> :

Vielen Dank, Vinin =)

 
rid >> :

Schauen Sie sich die 'Abschlusspositionen' an. Auf Blinkersignal".

1) Ungefähr so -

2)

Entfernen Sie die Sperrung ( // ) vor

// return(0); // exit

und dann werden nur die ersten Positionen geschlossen.

Danke, rid!

Sie haben mir sehr geholfen, es gibt immer noch nette Menschen)

Ich hoffe, ich habe nicht zu viel von Ihrer Zeit in Anspruch genommen.)

 

Bitte um Hilfe.

Wenn ich während des visuellen Tests des EA 1.mq4 (beigefügt) den Indikator 3-cci-h3 (beigefügt) auf einen Chart lege, dann stimmen, wie es scheint, bei genau den gleichen Parametern die berechneten cci-Signale des Indikators und die tatsächlichen cci (Objekttext in der oberen rechten Ecke) nicht überein.

WARUM?

Warum funktionieren die Warnmeldungen bei diesem Indikator nicht?

Expert Advisor Code:

double lasthigh, lastlow, lasthigh2=200000, lastlow2=0, lastpos=0, t[2];

int start()
{Comment("");
lasthigh=High[1]; lastlow=Low[1];
if( lasthigh< lasthigh2) lasthigh2= lasthigh;
if( lastlow> lastlow2) lastlow2= lastlow;
t[0]= lasthigh2;
t[1]= lastlow2;  
string s1="lasthigh2 *** "+DoubleToStr( t[0],5);
string s2="lastlow2 *** "+DoubleToStr( t[1],5);
string str[2];
str[0]= s1;
str[1]= s2;
color col=Lime;
     for(int y=0; y<2; y++)
     {ObjectCreate("textSignal"+ y,OBJ_LABEL,0,0,0,0,0);    
      ObjectSet("textSignal"+ y, OBJPROP_CORNER,1);
      ObjectSet("textSignal"+ y, OBJPROP_XDISTANCE,35-25);
      ObjectSet("textSignal"+ y, OBJPROP_YDISTANCE, y*(20)+20+8);
      ObjectSetText("textSignal"+ y, str[ y],15,"Tahoma", col);
     }
  
  if( lastpos==0){if( lastlow2> lasthigh){
  Comment("PRODAGA!!!   PRODAGA!!!   PRODAGA!!!   PRODAGA!!!   PRODAGA!!!   PRODAGA!!!   PRODAGA!!!   PRODAGA!!!   PRODAGA!!!",
  "PRODAGA!!!   PRODAGA!!!   PRODAGA!!!   PRODAGA!!!   PRODAGA!!!   PRODAGA!!!   "); lasthigh2=2000000; lastlow2=0; lastpos=1;}}
  else {if( lasthigh2< lastlow){Comment("POKUPKA!!!   POKUPKA!!!   POKUPKA!!!   POKUPKA!!!   POKUPKA!!!   POKUPKA!!!   POKUPKA!!!",
  "   POKUPKA!!!   POKUPKA!!!   POKEPKA!!!   POKEPKA!!!   POKEPKA!!!"); lasthigh2=2000000; lastlow2=0; lastpos=0;}}

}


Indikator-Code:

//+------------------------------------------------------------------+
//|                                                     i-3CCI-h.mq4 |
//|                                               johnfantom & KimIV |
//|                                              http://www.kimiv.ru |
//|                                                                  |
//|  02.01.2006  CCI с 3-х ТФ в одном флаконе.                       |
//+------------------------------------------------------------------+
#property copyright "johnfantom & KimIV"
#property link      "http://www.kimiv.ru"

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 DodgerBlue
#property indicator_maximum 1.4
#property indicator_level1  0
#property indicator_minimum -1.2

//------- Внешние параметры индикатора -------------------------------
extern int CCI_Period_0 = 14;     // Период CCI для текущего ТФ
extern int Level_0      = 100;    // Уровень CCI для текущего ТФ
extern int TF_1         = 60;     // Количество минут первого ТФ
extern int CCI_Period_1 = 14;     // Период CCI для первого ТФ
extern int Level_1      = 100;    // Уровень CCI для первого ТФ
extern int TF_2         = 240;    // Количество минут второго ТФ
extern int CCI_Period_2 = 14;     // Период CCI для второго ТФ
extern int Level_2      = 100;    // Уровень CCI для второго ТФ
extern int NumberOfBars = 1000;  // Количество баров обсчёта (0-все)
extern int ExtBars=3; 
int per;


//------- Буферы индикатора ------------------------------------------
double buf0[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void init() {
  IndicatorDigits(1);

  SetIndexBuffer(0, buf0);
  SetIndexLabel (0, "i-3CCI-h");
  SetIndexStyle (0, DRAW_HISTOGRAM, STYLE_SOLID, 2);
  SetIndexEmptyValue(0, 0);
}

//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
void deinit() {
  Comment("");
}

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
void start() {
  double cci0, cci1, cci2;
  int    nb1, nb2, count;
  int    LoopBegin, sh;


 	if ( NumberOfBars==0) LoopBegin=Bars-1;
  else LoopBegin= NumberOfBars-1;
  LoopBegin=MathMin(Bars-1, LoopBegin);
  count=IndicatorCounted();
  for ( sh= count; sh>=0; sh--) {
    nb1=iBarShift(NULL, TF_1, Time[ sh+1], False);
    nb2=iBarShift(NULL, TF_2, Time[ sh+1], False);

    cci0=iCCI(NULL, 0   , CCI_Period_0, PRICE_CLOSE, sh+1);
    cci1=iCCI(NULL, TF_1, CCI_Period_1, PRICE_CLOSE, nb1);
    cci2=iCCI(NULL, TF_2, CCI_Period_2, PRICE_CLOSE, nb2);
    
   /* double cci[3];
    cci[0]=cci0;
    cci[1]=cci1;
    cci[2]=cci2;
    string s1="cci-0 *** "+DoubleToStr(cci[0],3);
    string s2="cci-1 *** "+DoubleToStr(cci[1],3);
    string s3="cci-2 *** "+DoubleToStr(cci[2],3);
    string str[3];
    str[0]=s1;
    str[1]=s2;
    str[2]=s3;
    color col=Lime;
     for(int y=0;y<3;y++)
     {ObjectCreate("textSignal"+y,OBJ_LABEL,0,0,0,0,0);    
      ObjectSet("textSignal"+y,OBJPROP_CORNER,1);
      ObjectSet("textSignal"+y,OBJPROP_XDISTANCE,35-25);
      ObjectSet("textSignal"+y,OBJPROP_YDISTANCE,y*(20)+20+8);
      if(cci[y]>=0)col=Lime;else col=Red;
      if(cci[y]>Level_0) col=Aqua;
      if(cci[y]<-Level_0) col=DarkViolet;
      ObjectSetText("textSignal"+y,str[y],15,"Tahoma",col);
     }
*/
    if ( cci0> Level_0 && cci1> Level_1 && cci2> Level_2) { buf0[ sh]=1;
    if ( per != Time[0]) { per = Time[0];
    if( sh<= ExtBars && ExtBars!=-1)
    Alert(Symbol(),Period()," ",
                              TimeYear(Time[ sh]),".",
                              TimeDay(Time[ sh]),".",
                              TimeMonth(Time[ sh]),"; ",
                              TimeHour(Time[ sh]),":",
                              TimeMinute(Time[ sh])," ",
                              "Покупка");}}
    if ( cci0<- Level_0 && cci1<- Level_1 && cci2<- Level_2) { buf0[ sh]=-1;
    if ( per != Time[0]) { per = Time[0];
    if( sh<= ExtBars && ExtBars!=-1)
    Alert(Symbol(),Period()," ",
                              TimeYear(Time[ sh]),".",
                              TimeDay(Time[ sh]),".",
                              TimeMonth(Time[ sh]),"; ",
                              TimeHour(Time[ sh]),":",
                              TimeMinute(Time[ sh])," ",
                              "Продажа");}}
  }
}
//+------------------------------------------------------------------+
 
sergeev >> :

wie hier für bystop:




Und wie setzen Sie die ausstehende Position aus der offenen Position selbst?

 
ArtY0m >> :

Wie platzieren Sie den schwebenden Auftrag selbst?

Zunächst müssen Sie den Eröffnungskurs der letzten offenen Position programmatisch ermitteln.

Dazu können Sie eine vordefinierte Funktion verwenden, z. B.

Funktion PriceOpenLastPos().
Diese Funktion gibt den Eröffnungskurs der zuletzt eröffneten Position zurück. Die Auswahl der zu berücksichtigenden Positionen wird durch externe Parameter festgelegt:
sy - Bezeichnung des Marktinstruments. Wenn dieser Parameter gesetzt ist, berücksichtigt die Funktion nur Positionen des angegebenen Instruments. Der Standardwert - "" - bedeutet ein beliebiges Marktinstrument. NULL-Wert bedeutet das aktuelle Instrument.
op - Handelsoperation, Positionsart. Gültige Werte: OP_BUY, OP_SELL oder -1. Der Standardwert -1 bedeutet eine beliebige Position.
mn - Positionsbezeichner, MagicNumber. Der Standardwert -1 bedeutet einen beliebigen Bezeichner.
Nützliche Funktionen von KimIV

//-------

Fügen Sie die Funktion selbst ganz am Ende Ihres Codes ein.

Sie rufen es in der Funktion START auf und stellen den Eröffnungskurs der letzten Position ein, die Sie benötigen (z.B. Kauf oder Verkauf).

double OpenPrice=PriceOpenLastPos(NULL,OP_BUY, MAGIC) ;

 
rid >> :

Zunächst müssen Sie den Preis der letzten offenen Position programmatisch ermitteln.

Dazu können Sie eine vordefinierte Funktion verwenden, z. B.

Funktion PriceOpenLastPos().
Diese Funktion gibt den Eröffnungskurs der zuletzt eröffneten Position zurück. Die Auswahl der zu berücksichtigenden Positionen wird durch externe Parameter bestimmt:
sy - Bezeichnung des Marktinstruments. Wenn dieser Parameter gesetzt ist, berücksichtigt die Funktion nur Positionen des angegebenen Instruments. Der Standardwert - "" - bedeutet ein beliebiges Marktinstrument. NULL-Wert bedeutet das aktuelle Instrument.
op - Handelsoperation, Positionsart. Gültige Werte: OP_BUY, OP_SELL oder -1. Der Standardwert -1 bedeutet eine beliebige Position.
mn - Positionsbezeichner, MagicNumber. Der Standardwert -1 bedeutet einen beliebigen Bezeichner.

Nützliche Funktionen von KimIV

//-------

Fügen Sie die Funktion selbst ganz am Ende Ihres Codes ein.

In der Funktion START rufen Sie diese Funktion auf und setzen den Eröffnungskurs der letzten gewünschten Position (Kauf oder Verkauf), z.B.

double OpenPrice=PriceOpenLastPos(NULL,OP_BUY, MAGIC) ;

Herzlichen Dank!))

 

In Indicator möchte ich, wenn eine Bedingung erfüllt ist, eine Zeile mit einer Notiz in eine Textdatei eintragen (egal was, sagen wir Datum und Uhrzeit).

Die Datei wird erstellt und die Zeile wird hinzugefügt, allerdings nur in Echtzeit. Ich hingegen möchte mir eine Notiz machen, wenn ich an der Geschichte arbeite. Weiß jemand, wie man das macht?

Ich danke Ihnen!





Grund der Beschwerde: