Wenn die Nachricht bereits ausgeführt wurde, wurde sie bereits aus der Warteschlange gelöscht.
Ok, ich habe folgende Frage.
#property indicator_chart_windowbool First = true;
int start(){
if(First){
int indexFirstLeftOnChart = WindowFirstVisibleBar();//иницилизируем под флагом, потому что в init() могут быть артефактыAlert("indexFirstLeftOnChart ", indexFirstLeftOnChart);
First = false;
}
if(WindowFirstVisibleBar() != indexFirstLeftOnChart){//проверяем на каждом тике, изменилось ли значениеAlert("first indexFirstLeftOnChart ", indexFirstLeftOnChart);
indexFirstLeftOnChart = WindowFirstVisibleBar();//если изменилось, записываем егоAlert("second indexFirstLeftOnChart ", indexFirstLeftOnChart);
}
return(0);
}
- Es piept bei jedem Tick, denn es stellt sich heraus, dass der erste indexFirstLeftOnChart gleich Null ist. Wie kann ich das bekämpfen? Build 509.
Zhunko: In der Regel wird er vor der Ausführung abgefangen. Andernfalls verstehe ich nicht, wozu Sie etwas abfangen müssen.
Vor der Ausführung gibt es keine Frage. Es macht also keinen Sinn, die Gültigkeitsprüfung von AccountNumber() in die DLL zu verschieben. Das bedeutet, dass die Kontonummer bereits in dll gespeichert ist.
Ich habe etwas über einen einfachen Punkt, ein Kopfweh. Es gibt eine Funktion zur Suche nach Aufträgen.
t - Zähler für alle Aufträge.
p - Zähler der ausstehenden Aufträge.
//+-------------------------------------------------------------------------------------+//| Поиск своих ордеров |//+-------------------------------------------------------------------------------------+void FindOrders(int& t, int& p)
{
int total = OrdersTotal() - 1;
t = 0;
p = 0;
for (int i=total; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
if (OrderSymbol() != Symbol()) continue;
if (OrderMagicNumber() != i_magic) continue;
if (OrderType() > 1)
{
p++;
}
t++;
pr ("FindOrders(): " + "t = " + t + " " + TimeToStr(TimeCurrent()));
pr ("FindOrders(): " + "p = " + p + " " + TimeToStr(TimeCurrent()));
}
}
Ich habe es von Anfang an gesagt:
int start()
{
if (g_lastBarTime == Time[0]) // На текущем баре все необходимые действия..return (0); // ..уже были выполненыint oTotal = 0, oPending = 0;
FindOrders(oTotal, oPending);
int signal = GetGeneralSignal(oTotal);
if (signal != SIGNAL_NO)
{
if (!Trade(signal))
return(0);
}
else
In der Tat, wenn wir es öffnen, auch wenn es keine Aufträge gibt, sehen wir dies (auch wenn es keine Aufträge gibt, druckt es, als ob es welche gibt...):
Guten Abend zusammen. Ich habe vor kurzem beschlossen, MQL4 zu beherrschen (ich habe das Tutorial von Sergey Kovalev studiert). Ich habe heute beschlossen, ein einfaches Skript zur Auftragseröffnung zu erstellen, um zu üben. Der Code lautet: int start() { OrderSend("EURUSD",OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point); Alert(GetLastError());
Rückkehr;
}
Das Skript funktionierte nicht und es wurde die Fehlermeldung 4109 (Handel nicht erlaubt) angezeigt. Beim Versuch, die Situation zu ändern, trat auch der Fehler 4016 (Uninitialised array) auf. Ich würde gerne wissen, was diese Fehler verursacht und wie man ein einfaches Handelseröffnungsskript erstellt. Ich habe gerade das Beispiel aus dem Tutorial https://book.mql4.com/ru/trading/ordersend kopiert (ich habe gerade die Funktion GetLastError hinzugefügt) und bekam trotzdem den Fehler 4109.
intstart()// Спец. функция start(){// Открытие BUYOrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point);
Alert(GetLastError());
return; // Выход из start()}
Кто может объяснить в чем проблема, буду очень признателен. Заранее спасибо.
wie man solche Zäune in Metazitaten behandelt)?
Wir müssen Nachrichten abfangen.
Wenn die Nachricht bereits ausgeführt wurde, wurde sie bereits aus der Warteschlange gelöscht.
Ok, ich habe folgende Frage.
- Es piept bei jedem Tick, denn es stellt sich heraus, dass der erste indexFirstLeftOnChart gleich Null ist. Wie kann ich das bekämpfen? Build 509.
Wenn eine Nachricht bereits ausgeführt wurde, wurde sie bereits aus der Warteschlange gelöscht.
In der Regel wird er vor der Ausführung abgefangen. Andernfalls verstehe ich nicht, wozu Sie etwas abfangen müssen.
Vor der Ausführung gibt es keine Frage. Es macht also keinen Sinn, die Gültigkeitsprüfung von AccountNumber() in die DLL zu verschieben. Das bedeutet, dass die Kontonummer bereits in dll gespeichert ist.
Ich habe etwas über einen einfachen Punkt, ein Kopfweh. Es gibt eine Funktion zur Suche nach Aufträgen.
t - Zähler für alle Aufträge.
p - Zähler der ausstehenden Aufträge.
Ich habe es von Anfang an gesagt:
In der Tat, wenn wir es öffnen, auch wenn es keine Aufträge gibt, sehen wir dies (auch wenn es keine Aufträge gibt, druckt es, als ob es welche gibt...):
Wie ist das möglich?
int start()
{
OrderSend("EURUSD",OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point);
Alert(GetLastError());
Rückkehr;
}
Das Skript funktionierte nicht und es wurde die Fehlermeldung 4109 (Handel nicht erlaubt) angezeigt. Beim Versuch, die Situation zu ändern, trat auch der Fehler 4016 (Uninitialised array) auf. Ich würde gerne wissen, was diese Fehler verursacht und wie man ein einfaches Handelseröffnungsskript erstellt. Ich habe gerade das Beispiel aus dem Tutorial https://book.mql4.com/ru/trading/ordersend kopiert (ich habe gerade die Funktion GetLastError hinzugefügt) und bekam trotzdem den Fehler 4109.