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

 
r772ra:
Alternativ können Sie auch eine beliebige Zeit nach dem Eintreffen des Signals einstellen
Meine Variante impliziert ein Limit (nach dem Eintreffen des Signals) von 1 Minute für die Durchführung einiger Aktionen (in diesem Fall die Eröffnung eines Auftrags). Und dann: Wenn Sie zu spät kommen, sind Sie zu spät. Angenommen, die Verbindung mit dem Server wurde gleich nach dem Empfang des Signals unterbrochen und nach einer Stunde wiederhergestellt. Warum sollten Sie eine Bestellung eine Stunde später öffnen? ;)
 
TarasBY:

Schreiben Sie in eine globale Variable den Zeitwert zum Zeitpunkt des Signals:

und zählen Sie dann Ihre Minute herunter (das können Sie tun):

Dies ist eine der Lösungen, um die Zeit nach dem Eintreten eines Ereignisses zu verfolgen.


Leider funktioniert es nicht, nach einer Minute sollten die Unterstützungs- und Widerstandslinie als Aktion eingezeichnet werden, aber aus irgendeinem Grund sind sie nicht auf dem Chart zu sehen. Schauen Sie sich bitte den Code an, wo liegt der Fehler?


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

double support;
double resist;

 int timeFrame = 5;
 int numBars = 15;
 datetime gdt_TimeSignal;
//+------------------------------------------------------------------+
//| 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 (Signal) gdt_TimeSignal = TimeCurrent();
if (Fact_2) gdt_TimeSignal = TimeCurrent();


  if (gdt_TimeSignal != 0) if (iBarShift (NULL, 1, gdt_TimeSignal) == 1)
    {
        //---- Открываете ордер
       // OrderSend ();
  //---------------------------------------------------------------------------------    
{
// Определяем линии поддержки\сопротивления
  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);
    }
//-------------------------------------------------------------
 
        gdt_TimeSignal = 0;
    }



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




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

 
TarasBY:

Hier wird Unfug geschrieben:

Lesen Sie über iCustom().


Danke. Ich habe es gelesen. Vielleicht sollte ich ein Beispiel suchen. Ich verstehe nichts.
 
Andrey-F:

Bitte helfen Sie mir, sagen Sie mir, wie man EA-Code in zwei oder drei Zeilen zu implementieren:

Wenn ein Signal eintrifft (z.B. Kreuzung zweier MAs)

1. der Expert Advisor bestimmt den Zeitpunkt des Signals (in Stunden, Minuten) und speichert ihn;

2. Zählt eine Minute herunter.

Dann ist der Expert Advisor bereit, eine Aktion auszuführen (z.B. eine Order zu eröffnen).

Alles, DANKE, alles funktioniert wie es soll, ich habe nur das Signal nicht richtig eingesetzt.
 

Ich kann die Veröffentlichung des Indikators in der Codabase nicht nachvollziehen. Wie ein Status ist bereit für die Veröffentlichung dh logischerweise warten müssen, bis der Moderator in den allgemeinen Zugang zu diesem Truthahn zu platzieren, aber es ist ein paar Tage und kein Ergebnis gewesen. Woran kann das liegen?

ps. dies ist meine erste Veröffentlichung des Codes hier

 
madzx:

Ja, das glaube ich auch! Ich habe den Dreh wirklich raus, ich kann leicht auf das Schreiben auf die Festplatte verzichten!
Ich binde nur die Zügel eines Standardterminals an ein anderes
Ich bin gerade dabei, die Zügel eines Standard-Terminals für ein anderes zu schnüren).

Verzeihen Sie mir, aber wir müssen es trotzdem tun.
denn wie Sir Freddie Mercury sagte.
Die Show muss weitergehen!

Lassen Sie uns also die Spezifikationen klarstellen.
So wie ich es verstehe:

1. Auf einem Konto habe ich eine Unmenge von Fenstern geöffnet (10 Stück) mit einer Reihe von Charts von Währungspaaren

2. Auf jedem Chart sitzt ein Arbeitspferd - ein Expert Advisor, der etwas tut.

(3) Das Konto muss die folgenden Bedingungen erfüllen:

3.1 Die Gesamtzahl der offenen Marktaufträge auf dem Konto darf 5 nicht überschreiten.
Aufträge des Typs Pferd (in der Schwebe) sollten nicht als solche gezählt werden (ich denke schon, aber Sie haben es nicht angegeben)
3.2 Auf der Grundlage einer Reihe von Charts auf dem Konto wird eine bestimmte Liste von Symbolen erstellt,

Die Art der gehandelten Finanzinstrumente und jedes der Instrumente kann nicht mehr als einen offenen Auftrag zu einem Zeitpunkt haben.

darf zu einem bestimmten Zeitpunkt nicht mehr als einen offenen Auftrag haben.

---------------------------------------------------------

Etwa so! Prüfen Sie, ob alles richtig ist!
Dann sagen Sie uns bitte, in welcher Sprache dies geschehen soll (z.B. mq4 oder mq5)
und die Liste der Instanzen, für die Sie handeln - ist sie fest oder jedes Mal anders

Ich denke, es sollte eine kurze Einfügung in den Text eines jeden EA sein

(die Sie dann als Verfahren einreichen können, wenn Sie dies wünschen) ermöglicht es

über die aktuell bestehenden Berechtigungen für beliebige Aktionen entscheiden ...

Ich möchte mich jetzt verabschieden, da es 5 Uhr morgens ist :))

madzx




Wir danken Ihnen für Ihre Teilnahme. Aber ich glaube nicht, dass das nötig ist.

Das Problem wurde, wie von r772ra vorgeschlagen, wie folgt gelöst:

Oder vielleicht so:

if(NumberOfPositions("EURUSD")==0 && NumberOfPositions()<5)
Und hier ist eine Funktion
 
Roman.:

Gehen Sie nicht mitten ins Nirgendwo. Sie können Exp-Transaktionen für einzigartige magische Symbole durchführen (weisen Sie Ihren magischen Auftrag IHREN Exp auf den ausgewählten Symbolen zu). Dann verbinden Sie den Filter mit Hilfe des bedingten if - else Operators mit Symbolen und magischen Symbolen, indem Sie diese Funktion von Kim I.V. mit verschiedenen Eingangswerten verwenden:

NumberOfOrders() Funktion.

. Das war's.




Danke, ich habe eine einfachere Lösung gefunden.
 
Kobalerro:

Vielen Dank, es wurde eine einfachere Lösung gefunden.

OK! Danke, dass Sie die Lösung veröffentlicht haben.
 
Kobalerro:

Wir danken Ihnen für Ihre Teilnahme. Aber ich glaube nicht, dass da noch mehr dahinter steckt.

Das Problem wurde, wie von r772ra vorgeschlagen, wie folgt gelöst:

Oder vielleicht so:

Und hier ist die Funktion

OK! Gehen Sie mit dem Trend und haben Sie eine gute Jagd !!!

madzx
 
Kobalerro:

Wir danken Ihnen für Ihre Teilnahme. Aber ich glaube nicht, dass da noch mehr dahinter steckt.

Das Problem wurde, wie von r772ra vorgeschlagen, wie folgt gelöst:

Oder vielleicht so:

Und hier die Funktion

Wenn Ihnen diese Lösung gefällt, können Sie den Code noch weiter vereinfachen:

if(NumberOfPositions("EURUSD")==0 && OrdersTotal()<5)

Aber es ist wahrscheinlich korrekter, es so zu schreiben:

if(NumberOfPositions(Symbol())==0 && OrdersTotal()<5)

Wenn es nicht "kindisch" ist, dann sollte Magik verwendet werden (früher oder später werden Sie auch eine manuelle Order eröffnen oder einen anderen EA in der Nähe platzieren wollen):

if(NumberOfPositions(Symbol(), Magic)==0 && NumberOfPositions("", Magic)<5)

In diesem Fall sollten alle EAs das gleiche Magik haben und vergessen Sie nicht, bei anderen Operationen mit der Auftragsliste Filter für das Magik und das Chart-Symbol zu verwenden:

    for (int li_pos = OrderTotal() - 1; li_pos >= 0; li_pos--)
    {
        if (!OrderSelect (li_pos, SELECT_BY_POS, MODE_TRADES)) continue;
        if (OrderMagicNumber() != Magic) continue;
        if (Symbol() != OrderSymbol()) continue;
        //---- дальнейшие опреации (модификация, удаление и т.д.)
    }

Ich hoffe, Sie haben die Magie in externen Variablen oder als Konstante deklariert:

#define Magic  555
Grund der Beschwerde: