Fragen von Anfängern MQL4 MT4 MetaTrader 4 - Seite 222

 

Sie können den Handelsroboter überprüfen

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

//| Experten1.mq4 |

//| Copyright 2017, MetaQuotes Software Corp.

//| https://www.mql5.com |

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

#property copyright "Copyright 2017, MetaQuotes Software Corp."

#property link "https://www.mql5.com"

#Eigenschaft Version "1.00"

#Eigenschaft streng

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

//| https://www.mql5.com |

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

#property copyright "Copyright 2020, MetaQuotes Software Corp.

#property link "https://www.mql5.com"


Eingabe double Lots=0.01;

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

//| |

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

int OnInit()

( OrderSend(Symbol(),OP_BUY,Lots,3,0,Ask+0.0084,Ask-0.0084)


Doppellose=Lose;

wenn Gewinn dann Lots=Lot+0.01 sonst Lots=Lot-0.01

wenn Lose=0 dann Lose=0,01

wenn Lose>0,03 dann Lose=0,01

//---

//---

return();

}


Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
One Click Close The script allows users to easily close positions if their profit/loss reaches or exceeds a value specified in pips. Please set slippage value first. Sometimes some positions do not close due to high volatility of the market. Please set larger slippage or restart the script. The free demo version is: ...
 
Hallo, liebe Profis, raten Sie mir, wie man die Bedingung schreibt, wenndie schwebende Ordereinmal bei einer bestimmten Preisbewegung verschoben wird, z.B. Sellstop-Order wurde bei 1,28 platziert, der Preis bewegte sich auf 1,50 und die schwebende Order bewegte sich zum Preis in einer bestimmten Entfernung vom Preis, aber bewegte sich nicht ständig hinter dem Preis, sondern nur einmal, d.h. bewegte sich z.B. um zehn Pips und stoppte, auch wenn der Preis weiter ging. Mit freundlichen Grüßen, Alexander!
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Приказы на проведение торговых операций оформляются ордерами. Каждый ордер имеет множество свойств для чтения, информацию по ним можно получать с помощью функций Идентификатор позиции, который ставится на ордере при его исполнении. Каждый исполненный ордер порождает сделку, которая открывает новую или изменяет уже существующую позицию...
 

Guten Tag, liebe Experten!

Bitte helfen Sie, Tipps, wie man es zu tun, wo zu lesen, schriftlich Teil des Codes.

Ich habe einen Teil des Codes beigefügt. Ich muss in der Lage sein, meinen Kommentar einzugeben, wenn ich eine Order oder eine Limit-Order eröffne. D.h. nicht direkt im Code, sondern beim Öffnen des EA-Panels.

extern double Lots     = 0.1;
extern int StopLoss    = 250;
extern int TakeProfit  = 150;
extern int Magic       = 1;

double SL, TP;

int ticket;


//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double price = Ask;

   if(BUY() == 0)
     {
      SL = NormalizeDouble(Ask - StopLoss*Point, 5);
      TP = NormalizeDouble(Ask + TakeProfit*Point, 5);
      ticket = OrderSend(Symbol(), OP_BUY, Lots, price, 3, SL, TP, "", Magic, 0, Red);
      if(ticket<0)
         Print("Не удалось открыть ордер");
     }
  }
//+------------------------------------------------------------------+
int BUY()
  {
   int count = 0;
   for(int i=OrdersTotal()-1; i>=X; i--)
     {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true &&
         OrderMagicNumber() == Magic &&
         OrderType() == OP_BUY)
        {
         count++;
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
 
d4vv:

Ich muss in der Lage sein, meinen Kommentar einzugeben, wenn ich einen Auftrag oder einen Limitauftrag eröffne.

input string Mycomment="Preved Medved";


ticket = OrderSend(Symbol(), OP_BUY, Lots, price, 3, SL, TP, Mycomment, Magic, 0, Red);

Der Kommentar wird beim Anlegen des Auftrags geschrieben und kann nicht mehr geändert werden.

 
Aleksei Stepanenko:

Der Kommentar wird bei der Erstellung des Auftrags geschrieben und kann nicht mehr geändert werden.

Ich danke Ihnen vielmals. Das ist genau das, was ich brauche.

 
Knelson:
Wie kann ich eine Bedingung schreiben, wenneine schwebende Orderbei einer bestimmten Preisbewegung einmal verschoben wird?

1. Erstellen Sie ein Array, in dem die Tickets der offenen Aufträge und ein Kennzeichen, dass der Auftrag bereits verschoben wurde, gespeichert werden können.

struct Orders
   {
   int ticket;
   bool moved;
   } orders[];

2. Verfolgen Sie neu erscheinende Aufträge und halten Sie in diesem Array Informationen über den offenen Auftrag mit dem Kennzeichen "hat sich nicht bewegt" fest.

bool finded;
int index==ArraySize(orders)-1;
for(int i=OrdersTotal()-1; i>=0; i--)
   {
   if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
   if(OrderSymbol()!=symbol) continue;
   if(OrderMagicNumber()!=magic) continue;
   if(OrderType()!=OP_BUYSTOP && OrderType()!=OP_SELLSTOP) continue;
   finded=false;
   for(int j=index; j>=0; j--)
      {
      if(orders[j].ticket==OrderTicket())
         {
         finded=true;
         break;
         }
      }
   if(!finded)
      {
      ArrayResize(orders,++index+1);
      orders[index].ticket=OrderTicket();
      orders[index].moved=false;
      }
   }

3. Löscht Informationen aus dem Array, wenn der Auftrag geschlossen, gelöscht oder umgewandelt wird.

4. Prüfen Sie die Bedingung für das Verschieben, wenn die Bedingung erfüllt ist und das Kennzeichen "nicht verschoben", dann verschieben Sie und ändern Sie das Kennzeichen in "verschoben".

 
Aleksei Stepanenko:

1. Erstellen Sie ein Array, in dem die Tickets der offenen Aufträge und ein Kennzeichen, dass der Auftrag bereits verschoben wurde, gespeichert werden können.

2. Verfolgen Sie neu erscheinende Aufträge und halten Sie in diesem Array Informationen über den offenen Auftrag mit dem Kennzeichen "hat sich nicht bewegt" fest.

3. Löscht Informationen aus dem Array, wenn der Auftrag geschlossen, gelöscht oder umgewandelt wird.

4. Prüfen Sie die Bedingung für die Bewegung, wenn die Bedingung eingetreten ist und das Kennzeichen "nicht bewegt" lautet, dann bewegen Sie sich und ändern das Kennzeichen in "bewegt".

Ich glaube nicht, dass sie zuverlässig ist.

Ich würde ein solches Problem auf eine einfachere Art und Weise lösen: Legen Sie einen schwebenden Auftrag mit der magischen Zahl 2 an und löschen Sie einen schwebenden Auftrag mit der magischen Zahl 1, unter der Bedingung, dass der Auftrag verschoben werden soll

Der Code wäre einfach - nach dem Tick-Empfang würde die Schleife durch den Auftrag mit der magischen Nummer 1 laufen, wenn er gefunden wird und verschoben werden muss, dann würden wir diesen Auftrag löschen und einen neuen mit der magischen Nummer 2 platzieren

 

Ja, das ist eine gute Option.

 
Aleksei Stepanenko:

Ja, das ist eine gute Option.

UPD: der Code wird einfach sein - wenn der Tick kommt die Schleife auf die Reihenfolge mit der magischen Zahl 1, wenn gefunden und verschieben müssen, dann löschen Sie diese Reihenfolge und setzen Sie eine neue Reihenfolge mit der magischen Zahl 2

.... dann werden wir versuchen, einen neuen Auftrag mit der magischen Zahl 2 zu erstellen, und wenn es OK ist, werden wir den Auftrag mit der magischen Zahl 1 löschen

so dass weniger Überprüfungen erforderlich sind - z. B. hat sich das Niveau der Stoppstufe ausgeweitet, so dass der Auftrag nicht mehr verschoben werden kann, sobald wir den gefundenen Auftrag gelöscht haben

auf diese Weise ;)

 
Bei der Beobachtung des menschlichen Gehirns (hauptsächlich meines eigenen, aber nicht nur) stelle ich eine Eigenschaft fest - das Tunneln. Der Denkprozess findet innerhalb von Denkstereotypen statt, wie in einem Tunnel. Und es ist nicht leicht, mit eigenen Kräften aus dieser Situation herauszukommen. Das "Ich" ist untrennbar mit mir verbunden, und es scheint, dass der Gedankengang richtig, absolut richtig ist. Aber dann kommt das Wissen von außen, und man beginnt zu erkennen, dass man ein Gefangener seiner Ideen war. Wunder...
Grund der Beschwerde: