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

 
Alexey Viktorov:

string AUDUSD = "AUDUSD";

Zumindest auf diese Weise.

Das war's!!! So war es bei mir))), ausgelöscht und vergessen))

Vielen Dank!!! Frieden in Ihrem Haus!

 
Valeriy Yastremskiy:

Expert Advisor, Skript und Indikator werden nicht aufgerufen, sondern arbeiten im aktuellen Fenster. Und die globalen Variablen verschiedener Fenster/Diagramme überschneiden sich nicht. Daher sollte es funktionieren)

string AUDUSD; // Dies ist eine Textvariable, die zunächst leer ist, d. h. gleich "".

(Symbol() == AUDUSD) // dieser String hat nichts mit der Variablen AUDUSD zu tun.

Die Kriterien für die Auftragseröffnung sollten jedoch nicht für verschiedene Instrumente/Fenster gleich sein. Wenn sie identisch sind, wird sie tatsächlich in allen Fenstern geöffnet.

Ich danke Ihnen!

Ich habe die Logik so implementiert, dass der Expert Advisor das Signal zum Öffnen von Aufträgen nicht erhält, wenn diese in mehreren Fenstern geöffnet werden, und dass er versteht, dass das Kaufsignal für ein solches Symbol gegeben wurde, damit der EA nicht mit anderen in Konflikt gerät.

 
Denis Diakonov:

Da ist es!!! So war es bei mir))), ausgelöscht und vergessen))

Vielen Dank!!! Bringen Sie Frieden in Ihr Zuhause!

Oder so auf der Ebene einer globalen Variable

#define  AUDUSD "AUDUSD"
 
Alexey Viktorov:

Oder so auf Ebene der globalen Variablen

Eigentlich ist es cool)) Jetzt bekommt der Roboter ein Signal und öffnet Aufträge auf verschiedenen Paaren in mehreren Fenstern auf einmal))

Nochmals vielen Dank!

 
Yerkin Sagandykov:

Das Problem ist nicht in den Werten der Variablen meiner Meinung nach. Ich habe gerade in meinem Code uulsovii Neuberechnung beim Auftreten einer neuen Stunde. und es stellt sich heraus, dass das aktuelle Symbol neue Bar erscheint und berechnet den Wert von bar = 1, aber das Signal-Symbol ist ein neuer Balken noch nicht gebildet worden ist oder was ist der Wert für eine Bar = 2

Das Problem ist leicht zu lösen - ich habe einfach den Beginn eines neuen Balkens anhand des Signalsymbols erkannt

 if  ( iTime(nameSym, LPeriod, 0 ) == counted_bar || iTime(nameSymSignal, LPeriod, 0 ) == counted_Signalbar) return; 
 
Bitte geben Sie mir einen Hinweis.
Ist es möglich, mehrere Switch-Case-Parameter aus dem Funktionskörper zu übergeben? Ich habe Arten von Aufträgen, die in switch case geöffnet werden sollen, und ich habe es geschafft, nur 1 Parameter zu übergeben, um einen Auftrag von der Funktion zu öffnen, die den Markteintrittspunkt definiert, wie ich bereits verstanden habe, ist es unmöglich, so dass ich nicht weiß, wie man es sogar sequentiell implementiert
 
Denis Diakonov:
Bitte beraten Sie mich.
Ist es möglich, mehrere Switch-Case-Parameter aus dem Funktionskörper zu übergeben? Ich habe Arten von Aufträgen, die in switch case geöffnet werden sollen, und ich habe es geschafft, nur 1 Parameter zu übergeben, um einen Auftrag von der Funktion zu öffnen, die den Markteintrittspunkt definiert, wie ich bereits verstanden habe, ist es unmöglich, so dass ich nicht weiß, wie man es sogar sequentiell noch implementiert

Bitte zeigen Sie mir im Code, woran Sie genau interessiert sind

 
Denis Diakonov:
Bitte beraten Sie mich.
Ist es möglich, mehrere Switch-Case-Parameter aus dem Funktionskörper zu übergeben? Ich habe Arten von Aufträgen, die in switch case geöffnet werden sollen, und ich habe es geschafft, nur 1 Parameter zu übergeben, um einen Auftrag von der Funktion zu öffnen, die den Markteintrittspunkt definiert, wie ich bereits verstanden habe, ist es unmöglich, so dass ich nicht weiß, wie man es sogar sequentiell implementieren kann

Beziehen Sie sich auf einen Bereich von Werten?

 
Vitaly Muzichenko:

Zeigen Sie dem Code genau, woran Sie interessiert sind

int OpenOrder()                                             
{
   switch(AUDUSD_Analizing)
   {
      case 0 : Alert("Нет условий для открытия ордера. Выход"); break;    
      case 1 : // кейс для открытия Buy по AUD/USD
               if(TimeServer() == true)                                     
               {
                  if(Symbol() == AUDUSD)
                  {
                  RefreshRates();
                  Open_Order = OrderSend("AUDUSD",OP_BUY,lot,Ask,0,0,0); 
                  Alert("Тикет открытого ордера ", Open_Order, GetLastError());
      case 2 : // кейс для открытия Sell по AUD/USD
               if(TimeServer() == true)                                     
               {
                  if(Symbol() == AUDUSD)
                  {
                  RefreshRates();
                  Open_Order = OrderSend("AUDUSD",OP_SELL,lot,Bid,0,0,0); 
                  Alert("Тикет открытого ордера ", Open_Order, GetLastError());
//-------------------------------------------------------------------------------------------------------------
// другая функция
//-------------------------------------------------------------------------------------------------------------

int AUDUSD_Analizing()
{    
   if(AUDUSD_Prices_new > AUDUSD_Prices_old)
   {
      s1 = AUDUSD_Prices1;
      s2 = AUDUSD_Prices2;
      s3 = s1 - s2;    
      if(raznica > s5)
      {
         Alert("--- ВРЕМЯ ОТКРЫВАТЬ ОРДЕР НА ПОКУПКУ ---");

и вот тут я могу либо прописать конкретное открытие ордера или несколько их штук(чем и решил заняться так 
как не нашел решения), либо вернуть номер кейса в первую функцию(что сократило бы код). 
Но мне нужно по условиям открывать сразу несколько сделок. К примеру нужно 2 на бай разом открыть, 
а возвращается только одно значение и исполняется один кейс и дальше уже на новый круг все идет, 
а мне нужно сразу несколько кейсов, допустим 5 выполнить, поставить 5 отложек и вот как передать не пойму, 
или как вызвать срабатывание кейсов в последовательности. Если с кейсами можно как-то придумать, то по
факту код влезет в рамку 400-600 строк, а так полагаю все 1000+ выйдет в лучшем случае
(разбитые по 100-200 строк на .mqh, но и из файлов тоже помойка сложится)

 
Alexey Viktorov:

Meinen Sie eine Reihe von Werten?

Nein, zum Beispiel erst Fall 1, dann Fall 2 usw.

Fälle, in denen die Eröffnung von Aufträgen ausgeführt wird

Grund der Beschwerde: