[ARCHIV]Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Ohne dich kann ich nirgendwo hingehen - 5. - Seite 226
Wirklich, Sie haben ein Problem mit der Logik. Sie fangen an, so viele Aufträge in der Schwebe zu halten, wie Sie wollen, dann wollen Sie alle löschen, nachdem einer von ihnen eröffnet wurde, und dann wundern Sie sich, dass alle neuen Aufträge gelöscht werden. Denken Sie dann weiter darüber nach, was geschehen soll, nachdem der nächste schwebende Auftrag ausgelöst wurde. Der Algorithmus wird davon abhängen.
Roger: Sie haben in der Tat ein Problem mit der Logik. Erst lassen Sie schwebende Aufträge in beliebiger Höhe zu, dann wollen Sie alle löschen, nachdem Sie einen davon eröffnet haben, und dann sind Sie überrascht, dass alle neuen schwebenden Aufträge gelöscht werden. Denken Sie dann weiter darüber nach, was geschehen soll, nachdem der nächste schwebende Auftrag ausgelöst wurde. Der Algorithmus wird davon abhängen.
Danke, dass Sie mich korrigiert haben, ich habe mich daran aufgehalten.
Nach dem ersten schwebenden Auftrag (sagen wir Baillimit) können weitere schwebende Aufträge in dieselbe Richtung platziert werden, aber wie löschen wir alle Kaufpositionen und -aufträge, wenn das Signal in die entgegengesetzte Richtung erscheint (sagen wir Selimit)?
Hallo, könnten Sie mir bitte sagen, wie man eine globale Variablebool schreibt, z.B. bool=uroven_1=false; wie man dies in eine globale Variable schreibt, so dass sie nach einem Terminal-Neustart einen neuen Wert hat, danke.
laveosa: Hallo, könnten Sie mir bitte sagen, wie man eine globale Variable bool schreibt, z.B. bool=uroven_1=false; wie man dies in eine globale Variable schreibt, so dass sie nach einem Terminal-Neustart einen neuen Wert hat, danke.
Die Logik ist korrekt - es sollte so viele Positionsnummern in Aufträgen geben, wie es Aufträge gibt, und sobald ein Auftrag abgeschlossen ist, werden alle anderen neu berechnet. Versuchen Sie diese Konstruktion
Antwort.
Hallo. Leider führt die oben beschriebene Konstruktion nicht zu dem gewünschten Ergebnis. Ich möchte Ihnen den Code des Programms und die Tagebucheinträge des Testers zur Verfügung stellen. Hochachtungsvoll. Shurkin 18. März 2013.
Код программы.
//+------------------------------------------------------------------+//| Poligon1.mq4 |//| 21 февраля 2013 года. |//|Тестирование оператора цикла for. |//+------------------------------------------------------------------+#property copyright "21 февраля 2013 года."#property link ""//+------------------------------------------------------------------+//|Объявленные переменные |//+------------------------------------------------------------------+int Mn=357;//Magic numberint i;//Показатель счётчика итерацийdouble PriTP;//TP серииint Tick;//Счётчик тиков//+------------------------------------------------------------------+//| expert initialization function |//+------------------------------------------------------------------+int init()
{
//----Установка серии ордеровOrderSend(Symbol(),OP_BUY,0.5,Ask,0,NormalizeDouble(Bid-35*Point,Digits),
NormalizeDouble(Ask+35*Point,Digits),NULL,Mn,0,CLR_NONE);//OP_BUYOrderSend(Symbol(),OP_BUY,1,Ask,0,NormalizeDouble(Bid-25*Point,Digits),
NormalizeDouble(Ask+25*Point,Digits),NULL,Mn,0,CLR_NONE);//OP_BUYOrderSend(Symbol(),OP_BUY,1.5,Ask,0,NormalizeDouble(Bid-15*Point,Digits),
NormalizeDouble(Ask+15*Point,Digits),NULL,Mn,0,CLR_NONE);//OP_BUYOrderSend(Symbol(),OP_BUY,2.5,Ask,0,NormalizeDouble(Bid-15*Point,Digits),
NormalizeDouble(Ask+15*Point,Digits),NULL,Mn,0,CLR_NONE);//OP_BUYOrderSend(Symbol(),OP_BUY,3.5,Ask,0,NormalizeDouble(Bid-15*Point,Digits),
NormalizeDouble(Ask+15*Point,Digits),NULL,Mn,0,CLR_NONE);//OP_BUYOrderSend(Symbol(),OP_BUYLIMIT,1,NormalizeDouble(Ask-15*Point,Digits),0,
NormalizeDouble(Bid-40*Point,Digits),NormalizeDouble(Ask+25*Point,Digits),
NULL,Mn,0,CLR_NONE);//OP_BUYLIMITOrderSend(Symbol(),OP_SELLSTOP,3,NormalizeDouble(Ask-30*Point,Digits),0,
NormalizeDouble(Bid+15*Point,Digits),NormalizeDouble(Ask-75*Point,Digits),
NULL,Mn,0,CLR_NONE);//OP_SELLSTOP//----
PriTP=Bid;//PriTPPrint("Кс0:"," OrdersTotal=",OrdersTotal());//Сообщение//----return(0);
}
//+------------------------------------------------------------------+//| expert deinitialization function |//+------------------------------------------------------------------+int deinit()
{
//----//----return(0);
}
//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+int start()
{
//----
Tick++;//Tick// Print("Кс0:"," Tick=",Tick);//Сообщение//----// for(i=0;i<OrdersTotal();i++)//Инициализация цикла// for(i=OrdersTotal()-1; i>=0; i--)//for(i=0, int k=0; i<OrdersTotal();i++,k++)//
{
Print("Кс1:"," Tick=",Tick," i=",i," k=",k);//Сообщениеif(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)//Выбор ордера i
{
if(OrderSymbol()==Symbol())//Символ
{
if(OrderMagicNumber()==Mn)//Идентификационное число
{
if(OrderType()==OP_BUY && OrderTakeProfit()>PriTP)//Тип операции текущего выбранного ордера
{
OrderClose(OrderTicket(),OrderLots(),Bid,0,CLR_NONE);//Закрытие позиции
k--;//Зачем сначала прибавлять и тут же убавлять ???
}//Закрыто if(OrderType()==OP_BUY && OrderTakeProfit()>PriTP)
}//Закрыто if(OrderMagicNumber()==Mn)
}//Закрыто if(OrderSymbol()==Symbol()
}//Закрыто if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
}//Закрыто for(i=0;i<OrdersTotal();i++)//----return(0);
}
//+------------------------------------------------------------------+
Записи в журнале тестера.
2013.03.18 09:42:48 2013.02.11 12:16 Poligon1 EURUSD,M15: Кс1: Tick=5 i=1 k=1
2013.03.18 09:42:48 2013.02.11 12:16 Poligon1 EURUSD,M15: Кс1: Tick=5 i=0 k=0
2013.03.18 09:42:24 2013.02.11 12:15 Poligon1 EURUSD,M15: Кс1: Tick=4 i=1 k=1
2013.03.18 09:42:24 2013.02.11 12:15 Poligon1 EURUSD,M15: Кс1: Tick=4 i=0 k=0
2013.03.18 09:42:00 2013.02.11 12:15 Poligon1 EURUSD,M15: Кс1: Tick=3 i=1 k=0
2013.03.18 09:42:00 2013.02.11 12:15 Poligon1 EURUSD,M15: close #4 buy 2.50 EURUSD at 1.3397 sl: 1.3380 tp: 1.3412 at price 1.3393
2013.03.18 09:42:00 2013.02.11 12:15 Poligon1 EURUSD,M15: Кс1: Tick=3 i=0 k=0
2013.03.18 09:41:36 2013.02.11 12:15 Poligon1 EURUSD,M15: Кс1: Tick=2 i=2 k=1
2013.03.18 09:41:36 2013.02.11 12:15 Poligon1 EURUSD,M15: Кс1: Tick=2 i=1 k=0
2013.03.18 09:41:36 2013.02.11 12:15 Poligon1 EURUSD,M15: close #2 buy 1.00 EURUSD at 1.3397 sl: 1.3370 tp: 1.3422 at price 1.3394
2013.03.18 09:41:36 2013.02.11 12:15 Poligon1 EURUSD,M15: Кс1: Tick=2 i=0 k=0
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: Кс1: Tick=1 i=3 k=0
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: close #5 buy 3.50 EURUSD at 1.3397 sl: 1.3380 tp: 1.3412 at price 1.3395
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: Кс1: Tick=1 i=2 k=0
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: close #3 buy 1.50 EURUSD at 1.3397 sl: 1.3380 tp: 1.3412 at price 1.3395
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: Кс1: Tick=1 i=1 k=0
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: close #1 buy 0.50 EURUSD at 1.3397 sl: 1.3360 tp: 1.3432 at price 1.3395
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: Кс1: Tick=1 i=0 k=0
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: Кс0: OrdersTotal=7
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: open #7 sell stop 3.00 EURUSD at 1.3367 sl: 1.3410 tp: 1.3322 ok
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: open #6 buy limit 1.00 EURUSD at 1.3382 sl: 1.3355 tp: 1.3422 ok
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: open #5 buy 3.50 EURUSD at 1.3397 sl: 1.3380 tp: 1.3412 ok
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: open #4 buy 2.50 EURUSD at 1.3397 sl: 1.3380 tp: 1.3412 ok
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: open #3 buy 1.50 EURUSD at 1.3397 sl: 1.3380 tp: 1.3412 ok
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: open #2 buy 1.00 EURUSD at 1.3397 sl: 1.3370 tp: 1.3422 ok
2013.03.18 09:41:12 2013.02.11 12:15 Poligon1 EURUSD,M15: open #1 buy 0.50 EURUSD at 1.3397 sl: 1.3360 tp: 1.3432 ok
2013.03.18 09:41:12 Poligon1 test started
2013.03.18 09:40:59 Poligon1: loaded successfully
Beim Testen des WOC0.1.2 Expert Advisors im MT4-Tester (Anwendung auf MT4 von Forex Club) stehen die Ordermarkierungen im Chart über den Kursen, d.h. es wurden Geschäfte zu den Kursen ausgeführt, die nicht stattgefunden haben. Ist dies ein Fehler des Testers? Kann sie irgendwie korrigiert werden?
Ich bitte Sie.
Das Problem mit der Logik - mir fällt keins ein.
Sie haben in der Tat ein Problem mit der Logik. Erst lassen Sie schwebende Aufträge in beliebiger Höhe zu, dann wollen Sie alle löschen, nachdem Sie einen davon eröffnet haben, und dann sind Sie überrascht, dass alle neuen schwebenden Aufträge gelöscht werden. Denken Sie dann weiter darüber nach, was geschehen soll, nachdem der nächste schwebende Auftrag ausgelöst wurde. Der Algorithmus wird davon abhängen.
Danke, dass Sie mich korrigiert haben, ich habe mich daran aufgehalten.
Nach dem ersten schwebenden Auftrag (sagen wir Baillimit) können weitere schwebende Aufträge in dieselbe Richtung platziert werden, aber wie löschen wir alle Kaufpositionen und -aufträge, wenn das Signal in die entgegengesetzte Richtung erscheint (sagen wir Selimit)?
Guten Abend! Entschuldigen Sie mich, ich möchte auf ein ungelöstes Problem zurückkommen.
'Kaufen' - inkompatible Typen D:\TeleTRADE\experts/experts/clean.mq4 (102, 53)
'Sell' - inkompatible Typen D:\TeleTRADE\experts\clearlist.mq4 (102, 79)
Hallo, könnten Sie mir bitte sagen, wie man eine globale Variable bool schreibt, z.B. bool=uroven_1=false; wie man dies in eine globale Variable schreibt, so dass sie nach einem Terminal-Neustart einen neuen Wert hat, danke.
https://book.mql4.com/ru/variables/globals
Die Logik ist korrekt - es sollte so viele Positionsnummern in Aufträgen geben, wie es Aufträge gibt, und sobald ein Auftrag abgeschlossen ist, werden alle anderen neu berechnet. Versuchen Sie diese Konstruktion
Antwort.
Hallo.
Leider führt die oben beschriebene Konstruktion nicht zu dem gewünschten Ergebnis. Ich möchte Ihnen den Code des Programms und die Tagebucheinträge des Testers zur Verfügung stellen.
Hochachtungsvoll. Shurkin
18. März 2013.
Beim Testen des WOC0.1.2 Expert Advisors im MT4-Tester (Anwendung auf MT4 von Forex Club) stehen die Ordermarkierungen im Chart über den Kursen, d.h. es wurden Geschäfte zu den Kursen ausgeführt, die nicht stattgefunden haben. Ist dies ein Fehler des Testers? Kann sie irgendwie korrigiert werden?
http://s017.radikal.ru/i405/1303/61/959038aaf1a9.jpg
Und noch etwas: Im Visualisierungsmodus des Testers werden einige Geschäfte ausgeführt, ohne ihn aber nicht.
Ich habe es selbst herausgefunden. Das liegt an der erhöhten Streuung (81) des Testers an den Wochenenden.