Es gibt komplexe Logiken, die vierundzwanzig Stunden lang funktionieren, aber an einem bestimmten Punkt frieren sie ein. Dies geschieht manchmal in EX5, dessen Quellcode nicht bearbeitet werden kann. Ist es möglich, von außen zu erkennen, dass ein Indikator oder ein Expert Advisor hängt? Statistiken über den berechneten Teil eines bestimmten Indikators sammeln?
Bei Indikatoren scheint es möglich zu sein, dass sie in einem hängenden Zustand die Aktualisierung der Diagramme für ihr Symbol verhindern. Der Expert Advisor kann dies nachvollziehen, allerdings ohne anzugeben, welcher Indikator den Schwebezustand verursacht hat.
Rekorde für Verbote. Während der Sperren erhalte ich Antworten im Forum, kann sie aber nur lesen. Und nachdem ein weiteres Verbot aufgehoben wurde, ist es sehr schwer, sich daran zu erinnern, wer und wo geantwortet hat, um fortzufahren. Ist es möglich, dieses Problem zu lösen (ohne den Rat, nicht mehr gesperrt zu werden)? Und im Allgemeinen liest man manchmal, hat aber keine Zeit, sofort zu antworten. Ist es möglich, ein Erinnerungskennzeichen auf "später antworten" zu setzen?
comp: Rekorde für Verbote. Während der Sperren erhalte ich Antworten im Forum, kann sie aber nur lesen. Und nachdem ein weiteres Verbot aufgehoben wurde, ist es sehr schwer, sich daran zu erinnern, wer und wo geantwortet hat, um fortzufahren. Ist es möglich, dieses Problem zu lösen (ohne den Rat, nicht mehr gesperrt zu werden)? Und im Allgemeinen liest man manchmal, hat aber keine Zeit, sofort zu antworten. Ist es möglich, ein Erinnerungskennzeichen auf "später antworten" zu setzen?
Zuerst muss man denken und dann handeln. Nicht andersherum. Dann wird es keine Probleme mit dem Speicher geben.
Vollständig unterstützt!!! Ist es möglich, die Frage-Vorschlag zu beantworten
comp: Manchmal liest man sie und hat keine Zeit, sofort zu antworten. Ist es möglich, eine Art Erinnerungsfahne mit dem Hinweis "Später antworten" zu setzen?
comp: Ist es möglich, sich selbst eine Erinnerungsfahne zu setzen, um "später zu antworten"?
Ich verstehe Sie teilweise. Jeder will eine Lösung für seine unmittelbaren Probleme. In Ihrem Fall ist es zu viel. Sie sitzen sogar in einem Badehaus und versuchen, Entwickler aufzubauen.
Können Sie uns bitte erklären, warum dies der Fall ist? Wenn es so sein soll, fügen Sie bitte in der Dokumentation hinzu, dass nur die erste Ziffer nach dem Punkt berücksichtigt wird.
Kolleginnen und Kollegen, bitte helfen Sie. Ich habe selbst nicht genug Verstand.
Der Roboter, der Limit-Orders platziert hat, muss die verbleibende Order löschen, wenn er eine offene Position schließt (egal ob mit Stop oder Profit), aber nicht jede Order, sondern diejenige, deren magische Zahl gleich dem Ticket der geschlossenen Position ist. Der Auslöser für die Löschung muss also das Ereignis der Positionsschließung sein. Für mich spielt es in diesem Fall keine Rolle, wie diese Position geschlossen wurde (nur unter der Bedingung, dass sich herausstellt, dass, wenn sie durch SL geschlossen wurde, es keine Limits gibt, die entfernt werden müssen). Aber wenn wir es genau nehmen und richtig machen, ist der Auslöser ein TP.
Der Roboter löscht also den Auftrag, aber nicht nachdem die Position geschlossen wurde, sondern sobald sie eröffnet wurde. Und es fängt an, sich selbst zu bekämpfen, indem es ständigdie ausstehenden Aufträge platziert undlöscht. Bitte sehen Sie nach, was los ist.
inputdouble lot = 0.2;
inputdouble TakeProfitPips = 50;
inputdouble StopLossPips = 200;
int bar=0;
int shift=1;
int tiket;
int otkt;
double price;
int cnt;
double TPp,SLp;
int tkt;
int n;
int type;
int _OrdersTotal = 0;
// кол-во позиций, соответствующих критериям (текущий инструмент и заданный MagicNumber),// состоянием на текущий тикint now_OrdersTotal = 0;
// кол-во позиций, соответствующих критериям (текущий инструмент и заданный MagicNumber),// состоянием на предыдущий тикstaticint pre_OrdersTotal = 0;
// массив открытых позиций состоянием на текущий тикint now_OrdersArray[][2]; // [№ в списке][№ тикета, тип позиции]// текущий номер позиции в массиве now_OrdersArray (для перебора)int now_CurOrder = 0;
// текущий номер позиции в массиве pre_OrdersArray (для перебора)int pre_CurOrder = 0;
// массив для хранения количества закрытых позиций каждого типаint now_ClosedOrdersArray[6][3]; // [тип ордера][тип закрытия] // временные флагиbool OrderClosed = true, PendingOrderOpened = false;
// временные переменныеint pre_OrdersArray[][2]; // [количество позиций][№ тикета, тип позиции]//+------------------------------------------------------------------+//| Expert initialization function |//+------------------------------------------------------------------+intOnInit()
{
//---//---return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Expert deinitialization function |//+------------------------------------------------------------------+voidOnDeinit(constint reason)
{
//---
}
voidOnTick()
{
if(OrdersTotal()== 0 && iTime(Symbol(),PERIOD_M1,1)==D'14.01.16 16:30')
{
price=Open[shift];
tiket=OrderSend(Symbol(),OP_SELLLIMIT,lot,price,3,price+StopLossPips*Point,price-TakeProfitPips*Point);
if(tiket<0)
{
Print("Ошибка OrderSend № - ",GetLastError());
}
}
if(OrdersTotal()!=0)
{
for(cnt=0; cnt<OrdersTotal(); cnt++)
OrderSelect(cnt,SELECT_BY_POS); // Если есть следующий
{ // Анализ ордеров:
price=OrderOpenPrice();
otkt = OrderTicket();
n=otkt;
//--------------------------------------------------------------if(OrderType()==OP_SELL && OrderMagicNumber()==0)
{
tiket=OrderSend(Symbol(),OP_SELLLIMIT,lot*3,price+100*Point,1,price+StopLossPips*Point,price-TakeProfitPips*Point,"My order",n);
tiket=OrderSend(Symbol(),OP_SELLLIMIT,lot*9,price+200*Point,1,price+StopLossPips*Point,price-TakeProfitPips*Point,"My order",n);
}
}
}
_OrdersTotal = OrdersTotal(); // запоминаем общее количество позицийArrayResize( now_OrdersArray, _OrdersTotal ); // изменяем размер массива открытых позиций под текущее кол-воArrayInitialize( now_OrdersArray, 0.0 ); // обнуляем массив
now_OrdersTotal = 0; // обнуляем количество позиций, соответствующих критериямArrayInitialize( now_ClosedOrdersArray, 0.0 ); // обнуляем массивы закрытых позиций и сработавших ордеров//+------------------------------------------------------------------+//| Перебираем все позиции и записываем в массив //+------------------------------------------------------------------+for ( int z = _OrdersTotal - 1; z >= 0; z -- )
{
if ( OrderSelect( z, SELECT_BY_POS ) )
{
now_OrdersArray[now_OrdersTotal][0] = OrderTicket();
now_OrdersArray[now_OrdersTotal][1] = OrderType();
now_OrdersTotal ++;
}
}
ArrayResize( now_OrdersArray, now_OrdersTotal ); // изменяем размер массива открытых позиций под кол-во позиций, соответствующих критериям//+------------------------------------------------------------------+//| Перебираем список позиций предыдущего тика, и считаем сколько закрылось позиций и//| сработало отложенных ордеров//+------------------------------------------------------------------+for ( pre_CurOrder = 0; pre_CurOrder < pre_OrdersTotal; pre_CurOrder ++ )
{
tkt = pre_OrdersArray[pre_CurOrder][0]; // запоминаем тикет и тип ордера
type = pre_OrdersArray[pre_CurOrder][1];
OrderClosed = true; // предпологаем, что если это позиция, то она закрыласьfor ( now_CurOrder = 0; now_CurOrder < now_OrdersTotal; now_CurOrder ++ ) // перебираем все позиции из текущего списка открытых позиций
{
if ( tkt == now_OrdersArray[now_CurOrder][0] ) // если позиция с таким тикетом есть в списке,
{ OrderClosed = false; // значит позиция не была закрыта (ордер не был удалён)break;
}
}
if ( OrderClosed ) // если была закрыта позиция (удалён ордер),
{
if (OrderSelect( tkt, SELECT_BY_TICKET )) // выбиаем ее
n = tkt; // присваеваем n номер тикета
}
}
//+------------------------------------------------------------------+//| Удаляем ордер с магическим номером = тикету закрытой ранее позиции //+------------------------------------------------------------------+for ( int z = _OrdersTotal - 1; z >= 0; z -- )
{
if ( OrderSelect( z, SELECT_BY_POS ) )
otkt = OrderTicket();
if (n == OrderMagicNumber ())
{OrderDelete( otkt );}
}
return;
}
Können Sie mir sagen, ob es einen eingebauten Mechanismus gibt, um festzustellen, in welchem Markt der Handelsroboter läuft, müssen Sie die FOREX und FORTS Märkte identifizieren.
Hilfe, Jungs, kann nicht die russische Sprache auf MT4 auf Macbook setzen, scheint es vorhanden zu sein, aber es ist in Hieroglyphen angezeigt, aber in der Meta-Editor ist in Ordnung. Ich habe alles mit Play on mac erstellt,
Es gibt komplexe Logiken, die vierundzwanzig Stunden lang funktionieren, aber an einem bestimmten Punkt frieren sie ein. Dies geschieht manchmal in EX5, dessen Quellcode nicht bearbeitet werden kann. Ist es möglich, von außen zu erkennen, dass ein Indikator oder ein Expert Advisor hängt? Statistiken über den berechneten Teil eines bestimmten Indikators sammeln?
Bei Indikatoren scheint es möglich zu sein, dass sie in einem hängenden Zustand die Aktualisierung der Diagramme für ihr Symbol verhindern. Der Expert Advisor kann dies nachvollziehen, allerdings ohne anzugeben, welcher Indikator den Schwebezustand verursacht hat.
Rekorde für Verbote. Während der Sperren erhalte ich Antworten im Forum, kann sie aber nur lesen. Und nachdem ein weiteres Verbot aufgehoben wurde, ist es sehr schwer, sich daran zu erinnern, wer und wo geantwortet hat, um fortzufahren. Ist es möglich, dieses Problem zu lösen (ohne den Rat, nicht mehr gesperrt zu werden)? Und im Allgemeinen liest man manchmal, hat aber keine Zeit, sofort zu antworten. Ist es möglich, ein Erinnerungskennzeichen auf "später antworten" zu setzen?
Man sollte erst denken und dann handeln. Nicht andersherum. Dann wird es keine Probleme mit dem Speicher geben.
Goldene Worte!!!
Manchmal liest man sie und hat keine Zeit, sofort zu antworten. Ist es möglich, eine Art Erinnerungsfahne mit dem Hinweis "Später antworten" zu setzen?
Ist es möglich, sich selbst eine Erinnerungsfahne zu setzen, um "später zu antworten"?
Frage zu MathRound() in MQL4, die "einen Wert zurückgibt, der auf die nächste Ganzzahl eines angegebenen numerischen Wertes gerundet ist".
Code:
Ergebnis:
Können Sie uns bitte erklären, warum dies der Fall ist? Wenn es so sein soll, fügen Sie bitte in der Dokumentation hinzu, dass nur die erste Ziffer nach dem Punkt berücksichtigt wird.
Kolleginnen und Kollegen, bitte helfen Sie. Ich habe selbst nicht genug Verstand.
Der Roboter, der Limit-Orders platziert hat, muss die verbleibende Order löschen, wenn er eine offene Position schließt (egal ob mit Stop oder Profit), aber nicht jede Order, sondern diejenige, deren magische Zahl gleich dem Ticket der geschlossenen Position ist. Der Auslöser für die Löschung muss also das Ereignis der Positionsschließung sein. Für mich spielt es in diesem Fall keine Rolle, wie diese Position geschlossen wurde (nur unter der Bedingung, dass sich herausstellt, dass, wenn sie durch SL geschlossen wurde, es keine Limits gibt, die entfernt werden müssen). Aber wenn wir es genau nehmen und richtig machen, ist der Auslöser ein TP.
Der Roboter löscht also den Auftrag, aber nicht nachdem die Position geschlossen wurde, sondern sobald sie eröffnet wurde. Und es fängt an, sich selbst zu bekämpfen, indem es ständigdie ausstehenden Aufträge platziert undlöscht. Bitte sehen Sie nach, was los ist.
Hilfe, Jungs, kann nicht die russische Sprache auf MT4 auf Macbook setzen, scheint es vorhanden zu sein, aber es ist in Hieroglyphen angezeigt, aber in der Meta-Editor ist in Ordnung. Ich habe alles mit Play on mac erstellt,
Wine 1.9.4 wäre sehr zu begrüßen.