[Archiv!] Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Könnte nirgendwo ohne dich hingehen - 2. - Seite 215

 

Und noch, wie man die Anzahl der offenen Aufträge in der EA zu begrenzen, weil es öffnet sie wie ein Schneeball?

 
stalkertula:

Und noch, wie man die Anzahl der offenen Aufträge in der EA zu begrenzen, weil es öffnet sie wie ein Schneeball?

1. Prüfen Sie, ob es notwendig ist, eine Bestellung aufzugeben, falls ja.

2. Prüfen Sie die Anzahl der vorhandenen Aufträge, wenn ja, dann...

3. Überprüft, ob die Zeit seit der letzten Bestellung verstrichen ist (oder ein anderes Verzögerungskriterium), wenn ja, dann...

4. Sie haben eine Bestellung aufgegeben.

Im Allgemeinen läuft es ungefähr so ab...

Obwohl... jeder dieser Punkte umfasst verschiedene andere Prüfungen, die zur Korrektur der Parameter für die Auftragseinstellung erforderlich sind (um einen Fehler zu vermeiden, der vom DC zurückkommt)

Tipp:
Wenn Sie sich entscheiden, einen Auftrag zu erteilen oder eine Position zu eröffnen, was sind Ihre eigenen Kriterien?
Stellen Sie sich nun die Frage: "Warum lasse ich meinen EA nicht alle Kriterien für meine Entscheidung bewerten, so wie ich es tue?
Wenn Sie alle Kriterien in Ihrem EA berücksichtigt haben, werden Sie logische Fehler erheblich reduzieren...

Machen Sie es sich zur Regel, die gesamte Logik dieses oder jenes Programmblocks zunächst auf einem Blatt Papier zu beschreiben (dagegen ist nichts einzuwenden, im Gegenteil - es hilft),
und dann in Code zu übersetzen.

 
artmedia70:

1. Geprüft, ob ein Haftbefehl installiert werden muss, falls ja

2. Überprüfen Sie die Anzahl der bereits bestehenden Aufträge, wenn ja, dann...

3. Überprüft die Zeit, die seit der letzten Bestellung verstrichen ist (oder ein anderes Verzögerungskriterium), wenn ja...

4. Bestellung aufgegeben.

Im Allgemeinen geht es ungefähr so...
Obwohl... jeder dieser Punkte beinhaltet auch verschiedene notwendige Überprüfungen, um die Parameter der Auftragseinstellung zu korrigieren (um einen Fehler zu vermeiden, der vom DC zurückkommt)

Vielen Dank für Ihre Antwort, aber der Algorithmus ist in russischer Sprache geschrieben, aber in mql, ich bin nicht stark, zumindest ein Tipp auf die Funktionen, die die Anzahl (die Anzahl der Verschreibung in den Einstellungen) offene Aufträge verkaufen/kaufen, und dann das Signal zu verbieten, indem ein sellstop/buystop.

//----------------------------------------------------------------------- проверка установленных стоп ордеров

double StopOrderUp,StopOrderDn,price,MinBuyOrder=1000000000,MaxSellOrder,OldBuyOrder,OldSellOrder,OldBuyLot,OldSellLot;

int TicketUp,TicketDn;

TimeOllOpenBuy=0;TimeOllOpenSell=0;

double OOL_BUYSTOP,OOL_SELSTOP;

for (i=0; i<OrdersTotal(); i++)

{

if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)

{ price = OrderOpenPrice();

if (Magic==OrderMagicNumber() && OrderSymbol()==Symbol())

{

if (OrderType()==OP_BUYSTOP ) {StopOrderUp = price; TicketUp=OrderTicket(); OOL_BUYSTOP=OrderLots();}

if (OrderType()==OP_SELLSTOP) {StopOrderDn = price; TicketDn=OrderTicket(); OOL_SELSTOP=OrderLots();}

if (OrderType()==OP_BUY )

{ TimeOllOpenBuy = TimeOllOpenBuy + TimeCurrent()-OrderOpenTime();

if (MinBuyOrder > price) MinBuyOrder = price;

OldBuyOrder=price;

OldBuyLot=OrderLots();

if (DrawInfo&&!IsTesting()){

NameLine="ордер Bay "+OrderTicket();ObjectDelete(NameLine);ObjectDelete(NameLine+" з");

ObjectCreate(NameLine, OBJ_TREND, 0, OrderOpenTime(),price,Time[0],Bid);

ObjectSet(NameLine, OBJPROP_COLOR,LightSkyBlue);

ObjectCreate(NameLine+" з",OBJ_ARROW,0,Time[0],Bid,0,0,0,0);

ObjectSet(NameLine, OBJPROP_STYLE, STYLE_DOT);// Стиль

ObjectSet(NameLine, OBJPROP_RAY, false); // Луч

ObjectSet(NameLine+" з",OBJPROP_ARROWCODE,3);ObjectSet(NameLine+" з",OBJPROP_COLOR,WhiteColor);}

}

if (OrderType()==OP_SELL)

{ TimeOllOpenSell = TimeOllOpenSell + TimeCurrent()-OrderOpenTime();

if (MaxSellOrder < price) MaxSellOrder = price;

OldSellOrder=price;

OldSellLot=OrderLots();

if (DrawInfo&&!IsTesting()){

NameLine="ордер Sell "+OrderTicket();ObjectDelete(NameLine);ObjectDelete(NameLine+" з");

ObjectCreate(NameLine, OBJ_TREND, 0, OrderOpenTime(),price,Time[0],Ask);

ObjectSet(NameLine, OBJPROP_COLOR,Pink);

ObjectCreate(NameLine+" з",OBJ_ARROW,0,Time[0],Ask,0,0,0,0);

ObjectSet(NameLine, OBJPROP_STYLE, STYLE_DOT);// Стиль

ObjectSet(NameLine, OBJPROP_RAY, false); // Луч

ObjectSet(NameLine+" з",OBJPROP_ARROWCODE,3);ObjectSet(NameLine+" з",OBJPROP_COLOR,WhiteColor);}

}

}

}

}

if (MinBuyOrder==1000000000 && MaxSellOrder==0 && OOL_BUYSTOP!=OOL_SELSTOP)//если серия закрылась

{

DELETEORDERS();

}
 
Roman.:

Ich teste EAs auf die Eröffnungskurse eines neuen Balkens (dazu muss ich im EA-Code die Kontrolle für die Bildung eines neuen Balkens angeben)
Ich versuche, die Haltestellen tickweise zu verändern. Roman, was sind die Nachteile dieser Änderung, abgesehen von den fehlenden Änderungspfeilen?
 

beim Einfügen des Indikators bleibt das Terminal hängen und schreibt dasselbe in die Protokolle: unknown subwindow number -1 for ObjectCreate function

Ich habe den Index eines Fensters mit dem Namen dieses Indikators in allen ObjectCreate(x=WindowFind(short_name); ObjectCreate("fut "+i,OBJ_TREND,x,0,0,0);)

Es hat bisher immer funktioniert... Ich verstehe nicht, warum es so ist.

 
eddy:

wenn ich einen Indikator einfüge, bleibt das Terminal hängen und schreibt dasselbe ins Protokoll: 15:18:16 RSI EURUSD,M15: unknown subwindow number -1 for ObjectCreate function

Ich habe einen Index eines Fensters mit dem Namen dieses Indikators in allen ObjectCreate (WindowFind(indikator_name), zum Beispiel, ObjectCreate("fut "+i,OBJ_TREND,x,0,0,0);

Es hat bisher immer funktioniert... Ich verstehe nicht, warum es so ist.

Das kann daran liegen, dass ObjectCreate von init() aufgerufen wird. In diesem Fall kann die Fenstersuche -1 zurückgeben, auch wenn der Indikatorname korrekt ist.
 
genau das tut er... danke
 
Ich kann das nicht verstehen.
2011.03.07 15:49:40     2011.01.19 10:50  RSI-тралинг EURUSD,H1: OrderSend error 131

Dies ist auf Alpari... mit variablem Spread... aber der feste Spread funktioniert gut...

Ich habe über den Fehler gelesen, ich habe alle Volumina und 1 Lot und 0,1 Lot und 0,01 Lot eingegeben.....pis der gleiche Fehler((((((

 
Vovo4ka:
Ich kann es nicht verstehen, sagt es.

Dies ist auf Alpari... mit variablem Spread... aber der feste Spread funktioniert gut...

Ich habe über den Fehler gelesen, ich habe alle Volumina und 1 Lot und 0,1 Lot und 0,01 Lot.....pis den gleichen Fehler((((((

Auf einem Code des Fehlers können Sie die Richtung erfahren, in der Sie graben müssen. Aber ohne den Code kann Ihnen niemand sagen, woher der Fehler kommt.

 
Vovo4ka:
Ich kann das nicht verstehen.

Dies ist auf Alpari... mit variablem Spread... aber der feste Spread funktioniert gut...

Ich habe über den Fehler gelesen, ich habe alle Volumina und 1 Lot und 0,1 Lot und 0,01 Lot eingegeben.....pis der gleiche Fehler((((((


Schreiben Sie den Code.
Grund der Beschwerde: