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

 
Mihail Matkovskij #:

Ich habe das alles oben geschrieben. Lesen Sie die Beiträge noch einmal genau durch. Ihre Aufgabe ist nicht schwer. Wenn du dich auf die Aufgabe konzentrierst und nicht im Forum zankst, wird es dir gut gehen. Viel Glück!

"Gezänk" ist der Lehrer, der den Chatraum betritt. Es tut mir leid, aber Sie sind eher ein arroganter arroganter arroganter arroganter als ein wortgewandter wortgewandter wortgewandter. Das geht vorbei, ich war auch so, als ich 13 war.
 
Выше я всё написал

Was hat er geschrieben? Über die Anordnung? Habe ich das zuerst getan, oder meinen Sie die Definition eines Indikators? Oder vielleicht über die Möglichkeit, zwei Aufträge zu eröffnen und die TF des ersten in den zweiten zu übernehmen? Solch eine saubere Lösung führt zu einem Haufen von Nebenproblemen.

 
Nerd Trader #:
"Zank" - der Lehrer hat den Chatraum betreten. Tut mir leid, aber du streckst dein Ego mehr heraus, als dass du über die Sache schreibst. Das geht vorbei, ich war auch so, als ich 13 war.

Es geht nicht um meine Bedeutung oder etwas anderes, sondern um die Bedeutung von Programmierkenntnissen, die Sie nicht haben. Wenn du an der Uni wärst und dich im Unterricht so benehmen würdest, würde dich der Lehrer zumindest zurechtweisen oder dich rauswerfen. Und dann erzählst du ihm von deinem Ego...? :)

Du hast kein Wissen, nicht weil du ein Anfänger bist, sondern weil du unwissend bist... Wenn Ihnen wieder einmal jemand sagt, dass ein EA etwas anderes ist als ein Indikator, werden Sie immer wieder sagen: "Wo ist der Unterschied". :)

Ich habe geschrieben: "Indikator eröffnet Handel" und "Bot braucht einen Handelszeitrahmen". Niemand würde auf eine solche Frage antworten, denn sie entbehrt jeder Logik. Aber ich habe versucht, sie zu beantworten. Ich habe eine Menge Anschuldigungen und Beleidigungen erhalten. Ist das anstelle von "Danke"...?
 
Nerd Trader auf einem entfernten Server. Wir könnten eine Steckdose gebrauchen, aber es ist immer noch schwierig für mich.

Verschlüsseln Sie in Magie. Ich habe das gesamte Ver- und Entschlüsselungsverfahren in den Artikeln beschrieben.

 
Artyom Trishkin #:

Verschlüsseln Sie in Magie. Ich habe den gesamten Ver- und Entschlüsselungsvorgang in Artikeln beschrieben.

Geben Sie mir den Link, ich brauche jedes Mal etwa 30 Minuten, um ihn zu finden.

 
Valeriy Yastremskiy #:

Geben Sie mir den Link, ich brauche jedes Mal etwa 30 Minuten, um ihn zu finden.

Ich kann mich selbst nicht daran erinnern :)

Ich werde auch nach 30 Minuten suchen ...

 
Nerd Trader #:

Das wird nicht funktionieren, weil der Bot auf einem entfernten Server läuft, also schreibe ich die TF in den Kommentar, das wäre in Ordnung, aber es wird durch das Ticket überschrieben, wenn man einen Teil des Volumens schließt.

Erstellen Sie eine individuelle magische Zahl für Aufträge mit unterschiedlichen Zeitrahmen. Diese Zahl ändert sich beim teilweisen Schließen nicht.

//+-----------------------------------------------------------------------------+
//|  Описание : Автоматическая генерация магического номера                     |
//|             Generate Magic Number                                           |
//|             Магический номер генерируется в зависимости от инструмента      |
//|             и таймфрейма                                                    |
//+-----------------------------------------------------------------------------+
int GenerateMagicNumber(int mn)
  {
   int      GenerateMN = 0;
   int      SymNumber = 0;
   int      PMinuts = _Period;
// 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946
   if(StringFind(_Symbol,"BTC",0)>=0)  //1
      SymNumber = 5;
   if(StringFind(_Symbol,"ETH",0)>=0)  //2
      SymNumber = 8;
   if(StringFind(_Symbol,"BCH",0)>=0)  //3
      SymNumber = 13;
   if(StringFind(_Symbol,"LTC",0)>=0)  //4
      SymNumber = 21;
   if(StringFind(_Symbol,"XRP",0)>=0)  //5
      SymNumber = 34;
   if(StringFind(_Symbol,"SOL",0)>=0)  //6
      SymNumber = 55;
   if(StringFind(_Symbol,"LINK",0)>=0) //7
      SymNumber = 89;
   if(StringFind(_Symbol,"XLM",0)>=0)  //8
      SymNumber = 144;
   if(StringFind(_Symbol,"TRX",0)>=0)  //9
      SymNumber = 233;
   if(StringFind(_Symbol,"ATOM",0)>=0) //10
      SymNumber = 377;
   if(StringFind(_Symbol,"XMR",0)>=0)  //11
      SymNumber = 610;
   if(StringFind(_Symbol,"ADA",0)>=0)  //12
      SymNumber = 987;
   if(StringFind(_Symbol,"DOT",0)>=0)  //13
      SymNumber = 1597;
   if(StringFind(_Symbol,"DOGE",0)>=0) //14
      SymNumber = 2584;

   GenerateMN = (int)(SymNumber+PMinuts+mn);

   return (int)(GenerateMN);
  }
//--- End ---
 
Volodymyr Zubov #:

Erstellen Sie eine individuelle magische Zahl für Aufträge mit unterschiedlichen Zeitrahmen. Diese Zahl ändert sich nicht, wenn sie teilweise geschlossen ist.

Und warum das Symbol in der magischen Zahl verschlüsseln, wenn es bereits aus der Reihenfolge/Position lesbar ist? Und warum solche Werte für die SymNumber?

 
Volodymyr Zubov #:

Erstellen Sie eine individuelle magische Zahl für Aufträge mit unterschiedlichen Zeitrahmen. Diese Zahl ändert sich bei einem Teilabschluss nicht.

Vielen Dank für StringFind. Aber für mich wäre es viel einfacher.

int GenerateMagicNumber(int mn)
  {
   int      GenerateMN = 0;
   int      PMinuts = _Period;

   GenerateMN = (int)(PMinuts+mn);

   return (int)(GenerateMN);
  }

Und ich würde das Auftragssymbol später mit OrderSymbol() abrufen.

 

Guten Tag!

Wenn ich ein Signal erhalte (z.B. Kauf), muss ich einen entgegengesetzten Auftrag (Verkauf) eröffnen, nachdem die Losbedingungen erfüllt sind.

Ich habe den Code erstellt:

// Получим значение индикатора
   dMA = iMA(Symbol(), 0,PeriodMA, MovingShift, MODE_SMA, PRICE_CLOSE, 0); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0.

// Если нет открытых ордеров, то входим в условие
      if(CountOrders()==0)
     {
// Если появился сигнал на покупку, то откроем ордер на покупку
      if(bSignalBuy() == true)
         vOrderOpenBuy();
         
         if((bSignalBuy() == true)&&(GetLotSize()>LotControl))
         vOrderOpenSell();
// Если появился сигнал на продажу, то откроем ордер на продажу
      if(bSignalSell() == true)
         vOrderOpenSell();
  
         if((bSignalSell() == true)&&(GetLotSize()>LotControl))
         vOrderOpenBuy();
     }

aber wenn eine Bedingung eintritt

(GetLotSize()>LotControl)

Aber in diesem Fall werden zwei entgegengesetzte Aufträge gleichzeitig geöffnet. Wie kann ich das "reparieren"?