Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 1069
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
CloseAllBuy() wird an einer einzigen Stelle aufgerufen: in der OnTick()-Funktion durch die Bedingung if(Bid>buycloseprice) CloseAllBuy(); diese Bedingung trat bei der erneuten Aktivierung nicht auf und auch nicht während der Deaktivierungsperiode, aber die CloseAllBuy()-Funktion wurde trotzdem ausgelöst, als der EA wieder aktiviert wurde.
Hier ist ein Stück Code:
ist nicht sichtbar.
Frage:Könnten Sie mir bitte sagen, wie genau ich in diesem Fall eine globale Variable anwenden kann?Ich kann es nicht begreifen. Ich danke Ihnen.
Lesen Sie die DokumentationGlobale Variablen des Terminals, schauen Sie in der Hilfe des Meta-Editors nach, dort ist es schneller zu aktualisieren.
Alternativ können Sie die Einstellungen und Werte wichtiger Variablen in einer Datei speichern und sie beim Laden aus dieser Datei lesen.
Aber die meiste Zeit kann man auf all das verzichten, man muss nur seinen Kopf benutzen und die richtige Logik in den Code einbauen.
total=OrdersTotal();
if(total>0)
{
for(int i=0; i<=OrdersTotal(); i++)
if(OrderSelect(i,SELECT_BY_POS)==true)
{
if(OrderType()==OP_BUY && OrderMagicNumber()==magic)
{ RefreshRates();
if(Bid>buycloseprice) CloseAllBuy();
}
if(OrderType()==OP_SELL && OrderMagicNumber()==magic)
{ RefreshRates();
if(Ask<sellcloseprice) CloseAllSell();
}
}
}
if((gesamt==0) || (gesamt>0 && OrderSelect(1,SELECT_BY_POS,MODE_TRADES)==true && OrderSymbol()!=Symbol())
{
Comment("Keine offenen Positionen");
if(condition && timeBar!=iTime(Symbol(),Zeitraum(),1))
{
Print("Kriterium-1 für BAY ist erschienen");
int poz_1 = OrderSend(Symbol(),OP_BUY,lot,Ask,slip,0,0,NULL,magic,Blue);
Sleep(1000);
RefreshRates();
int poz_2 = OrderSend(Symbol(),OP_BUY,lot,Ask,slip,0,0,NULL,magic,Blue);
Sleep(1000);
RefreshRates();
int poz_3 = OrderSend(Symbol(),OP_BUY,lot,Ask,slip,0,0,NULL,magic,Blue);
Sleep(1000);
RefreshRates();
int poz_4 = OrderSend(Symbol(),OP_BUY,lot,Ask,slip,0,0,NULL,magic,Blue);
Sleep(1000);
RefreshRates();
int poz_5 = OrderSend(Symbol(),OP_BUY,lot,Ask,slip,0,0,NULL,magic,Blue);
timeBar=iTime(Symbol(),Zeitraum(),1);
double spread = (Ask-Bid);
buyopentime = iTime(Symbol(),Period(),0);
buycloseprice = NormalizeDouble((iOpen(Symbol(),Period(),0)+spread+75*Point),Digits);
Comment("Magic 510015 BAY");
Print("SCHLUSSPREIS = ",Kauf-Schlusskurs);
}
}
}
//+------------------------------------------------------------------+*/
void CloseAllBuy()
{
bool fc;
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if (OrderType()==OP_BUY)
{
fc=OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),slip);
buycloseprice=0.0;
tc=OrderCloseTime();
}
}
}
Wiederholungen im Text:
Es ist immer noch nicht klar, woher buycloseprice kommt und was mit ihm vor der Bedingungif(Bid>buycloseprice) CloseAllBuy(); passiert. Denn ich sehe nur dies im Code, nach - buycloseprice = NormalizeDouble((iOpen(Symbol(), Period(), 0)+spread+75*Point), Digits);, aber wo dieserbuycloseprice deklariert wird und welcher Wert initialisiert wird?
Wenn dies der angebliche Schlusskurs eines Kaufauftrags ist, dann bricht die Logik hier zusammen, weil der Wert an die Variable übergeben wird, nachdem sie ausgelöst wurde, und Sie uns nicht gezeigt haben, was vorher in ihr war.
Nun ein bisschen Rechnen, es gibt eine solche Schleife im Code:
for(int i=0; i<=OrdersTotal(); i++)
Nehmen wir an, es gibt 5 Aufträge von 0 bis 4. Die Schleife zählt von 0 bis 5. Funktioniert diese Schleife korrekt?
Und woher kommen in der Zeile if(condition && timeBar!=iTime(Symbol(),Period(),1)) die Bedingung und timeBar?