Brauche Hilfe

 

Das Problem ist
Ich praktisch nicht wissen, die Sprache, ich brauche, um die Eröffnung von Aufträgen für ein paar vp zu automatisieren, habe ich diesen einfachen Code (Datei angehängt), aber es stellte sich heraus, ungeschickt zu sein,
Nach dem Plan sollte 6 vp zu öffnen, sondern öffnet nur 3 vp, aber manchmal öffnet alle 6, aber dann wieder nicht mehr funktioniert, wie es sollte (ich denke, dies kann aufgrund der Anzahl der Ziffern nach dem Komma sein, wie in dem Block, wo es keine JPY, alles funktioniert gut.
Bitte helfen Sie, dieses Problem zu lösen.
Wenn ich mich nicht schwer tue, brauche ich Hilfe, um es zu schreiben, damit ich den Handel nur auf Kaufen oder Verkaufen umstellen kann.

Datei: DANGER FILE DELETED

Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Информация об инструменте - Состояние окружения - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Sergey Korsunov:

Das Problem ist
Ich praktisch nicht wissen, die Sprache, ich brauche, um die Eröffnung von Aufträgen für ein paar vp zu automatisieren, habe ich diesen einfachen Code (Datei angehängt), aber es stellte sich heraus, ungeschickt zu sein,
Nach dem Plan sollte 6 vp zu öffnen, sondern öffnet nur 3 vp, aber manchmal öffnet alle 6, aber dann wieder nicht mehr funktioniert, wie es sollte (ich denke, dies kann aufgrund der Anzahl der Ziffern nach dem Komma sein, wie in dem Block, wo es keine JPY, alles funktioniert gut.
Bitte helfen Sie, dieses Problem zu lösen.
Wenn ich mich nicht schwer tue, brauche ich Hilfe, um es zu schreiben, damit ich den Handel nur auf Kaufen oder Verkaufen umstellen kann.

Datei: DANGER FILE REMOVED

Die Datei sollte über die Schaltfläche Datei anhängen angehängt werden.

 
ok
Dateien:
Test_3.mq4  7 kb
 
Sergey Korsunov:

Das Problem ist
Ich praktisch nicht wissen, die Sprache, ich brauche, um die Eröffnung von Aufträgen für ein paar vp zu automatisieren, habe ich aus diesem einfachen Code (Datei angehängt), aber es stellte sich heraus, ungeschickt zu sein,
Nach dem Plan sollte 6 vp zu öffnen, sondern öffnet nur 3 vp, aber manchmal öffnet alle 6, aber dann wieder aufhört zu arbeiten, wie es sollte (ich denke, dies kann aufgrund der Anzahl der Dezimalstellen, wie in einem Block ohne JPY, alles funktioniert gut.
Bitte helfen Sie, dieses Problem zu lösen.
Und auch, wenn es nicht schwierig ist, wie prompt zu verschreiben, dass es möglich war, die Eröffnung von Geschäften nur kaufen oder verkaufen zu wechseln.

Es gibt eine Reihe von Gründen, die Sie daran hindern, einen Auftrag zu eröffnen. Angenommen, beim ersten Tick werden 3 Aufträge eröffnet

Beim nächsten Tick, ganz am Anfang des Programms, if(OrdersTotal() >= OrderCount) return; dies wird zurückgegeben, da die Anzahl der Aufträge größer ist als OrderCount, was = 1 ist.

Der Rest des Programms wird ignoriert.

Nach diesen Zeilen zu urteilen:

//|                        Copyright 2021, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"

Das Programm wurde von MetaQuotes Software Corp. entwickelt. Fragen Sie sie um Rat!

Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций
 
a007 #:

Es gibt eine Reihe von Gründen, die verhindern, dass eine Bestellung geöffnet wird. Angenommen, beim ersten Tick werden 3 Aufträge eröffnet

Beim nächsten Tick, ganz am Anfang des Programms, if(OrdersTotal() >= OrderCount) return; dies wird zurückgegeben, da die Anzahl der Aufträge größer ist als OrderCount, was = 1 ist.

Der Rest des Programms wird ignoriert.

Nach diesen Zeilen zu urteilen:

Das Programm wurde von MetaQuotes Software Corp. entwickelt. Bitte konsultieren Sie sie!

Meinen Sie damit, dass zusätzliche Aufträge eröffnet werden?

 
Fast235 #:

Meinen Sie damit, dass zusätzliche Aufträge eröffnet werden?

Nein, im Gegenteil, Sie brauchen 6 verschiedene Währungspaare und nur 3 sind geöffnet

Übrigens, wo es kein Yen-Bullion gibt, sind alle 6 Paare offen, sowohl Haupt- als auch Gegenpaare, wo es ein Yen-Bullion gibt, sind nur 3 offen

 
Sergey Korsunov #:

Nein, im Gegenteil, Sie brauchen 6 verschiedene Währungspaare und nur 3 sind geöffnet

Am einfachsten ist es, nach dem Öffnen jeder Bestellung Sleep() zu setzen, damit das Terminal keine Zeit hat, die Menge zu aktualisieren (offenbar aus Leistungsgründen)

 
Fast235 #:

Am einfachsten ist es, nach jedem Öffnen einer Bestellung Sleep() einzugeben, dann hat das Terminal keine Zeit, die Menge zu aktualisieren.

Ich verstehe die Sprache praktisch nicht (
Ich habe meinen Code nur anhand der Beispiele im Web geschrieben
Hilf mir, Sleep() in meinen Code einzubauen

 
Sergey Korsunov #:

Ich habe fast keine Kenntnisse der Sprache (
schrieb den Code rein aus Beispielen im Web
Hilfe einfügen Sleep() in meinem Code

Nach OrderSend und Sleep(50);

wenn es nicht hilft, 50 auf 100-200 erhöhen

 
Fast235 #:

nach OrderSend und setzen Sleep(50);

Wenn es mit 50 nicht klappt, erhöhen Sie auf 100-200

hat nicht geholfen ((

 
Sergey Korsunov #:

hat nicht geholfen ((

Versuchen Sie es auf diese Weise - kürzer und präziser. Wenn du es selbst herausfindest, wirst du ein Coryphäe des Programmierens sein. Setzen Sie den Cursor auf das Wort und drücken Sie F1

//+------------------------------------------------------------------+
//|                                                       Test 3.mq4 |
//+------------------------------------------------------------------+
#property strict

extern double Lot   = 0.01;
extern int    Slip  = 3;
extern int    Magic = 777;

string name[10]={"AUDJPY","CHFJPY","CADJPY","AUDCAD","AUDCHF","CADCHF"};
int    cnt[6];

void OnTick()
{
   ArrayInitialize(cnt, 0); // Обнуление счетчиков

   // Подсчет ордеров по каждому торговому инструменту
   for(int n=OrdersTotal()-1; n>=0; n--)
   {
     if(!OrderSelect(n,SELECT_BY_POS))continue;
     for(int k=0; k<6; k++) if(OrderSymbol()==name[k]) cnt[k]++;
   }

   // Открытие ордеров по каждому торговому инструменту
   for(int k=0; k<6; k++) if(!cnt[k]) int ticket = OrderSend(name[k],OP_BUY, Lot, MarketInfo(name[k],MODE_ASK), Slip, 0, 0, "", Magic);
}