[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 341

 
Liebe Neulinge! Einige der hier diskutierten Fragen sind sehr spezifisch und verdienen wirklich Tipps und Hilfe. Aber einige, na ja, offen gesagt, ergeben sich aus der Tatsache, dass ab Programm einige EXPERT Autoren nicht einmal ein Lehrbuch über MCL lesen. TIPP: Laden Sie die Anleitung (5 MB) herunter und lesen Sie sie, dann müssen Sie nicht auf eine Antwort aus dem Forum warten - Sie werden sie im Kopf haben.
 
costy_ >> :

Gespeicherte Indikationsparameter werden einmalig bei der Initialisierung der Vorlage in die Indikatoren "eingetragen", danach "werden sie völlig unabhängig".

Alle geänderten Indikatorparameter werden in der Vorlage gespeichert. Wenn Sie die Indikatorparameter geändert haben, speichern Sie die Vorlage erneut.


>> Vielen Dank!

 

mazepa 08.12.2009 17:42

ANTWORT: auf den CODE!

Wenn ich den Algorithmus verstehe, dann öffnen wir zum festgelegten Zeitpunkt den Kauf (Verkauf), wenn der Preis >10 Pips in die andere Richtung gegangen ist, dann schließen wir den Auftrag und stehen in der entgegengesetzten Richtung.

Zum Abschluss verwende ich meine eigene universelle Funktion.

//Funktion zum Schließen aller Marktaufträge in--------------------------------------------------------------------------------------------------
void _CloseAllOrder()
{
for(int i=0; i<OrdersTotal(); i++) //alle Aufträge für alle Währungen
{
if (OrderSelect(i,SELECT_BY_POS)==true) //wenn der Auftrag erfolgreich ausgewählt wurde
{
if (OrderSymbol()!=Symbol()) continue; //wenn der Auftrag in der falschen Währung ist, die Suche fortsetzen
{
switch(OrderType()) //im gewünschten Auftrag den Typ (Bue_Sell) bestimmen und schließen
{
case 0:OrderClose(OrderTicket(),OrderLots(),Bid,2);break;
case 1:OrderClose(OrderTicket(),OrderLots(),Ask,2);break;
}
}
}
}
return;
}
Bevor Sie also in die andere Richtung öffnen, schreiben Sie einfach _CloseAllOrder()

 


Freunde, ich lerne gerade. Bitte schauen Sie sich nicht den Inhalt des Programms an, sondern helfen Sie mir, einen Fehler im Programm zu finden:

int start()
{
switch(CurrentState)
{
case STATE_SHORT:
MeinOrderTicket = OrderSend(Symbol(), OP_SELL, Lots, Bid, 1, 0, 0,NULL, 1, 0, Red);
OrderSelect(MeinOrderTicket,SELECT_BY_TICKET);
if (OrderModify(OrderTicket(),OrderOpenPrice(),Bid+90*Point,Bid-Profit1*Point,0,Green)==true)
{CurrentState=STATE_1;
break;
}
case STATE_1:
OrderSelect(MyOrderTicket,SELECT_BY_TICKET);
if(Ask <= OrderTakeProfit())
{CurrentState=STATE_SHORT;
break;
}
if(Bid >= (OrderOpenPrice()+Profit1*Point)
{CurrentState=STATE_SHORT;
break;
}
}
//----
return(0);
}


Der Fehler ist folgendermaßen: \ Programmende' - unausgewogene linke Klammer. Wo liegt der Fehler?









 
Klinskih >> :

Freunde, ich lerne gerade. Bitte schauen Sie sich nicht den Inhalt des Programms an, sondern helfen Sie mir, einen Fehler im Programm zu finden:

Ich hab's:

                    if(Bid >= (OrderOpenPrice()+ Profit1*Point)

brauchen:

                    if(Bid >= OrderOpenPrice()+ Profit1*Point)



 

Wie kann man ein eindimensionales Array deklarieren, ohne jede Speicherzelle zu beschreiben (ist das möglich)?

  ии[1]=ExtMapBuffer1[0]; ии[2]=ExtMapBuffer2[0];  ии[3]=ExtMapBuffer3[0]; 

sondern durch eine eindimensionale Folge

  ии[3]={ExtMapBuffer1[0],ExtMapBuffer2[0],ExtMapBuffer3[0]} 

oder ist eine eindimensionale Abfolge nur für numerische und logische Konstanten möglich!!!?

 
TheXpert >> :

Ich hab's:

>> wir müssen es tun:



Vielen Dank, mein Freund!

 
future >> :

Eine weitere Frage. Wenn (OrdersTotal()==0) dies... wenn die Anzahl der offenen Aufträge gleich Null ist... wie wird es dann sein... wenn die Anzahl der für den Tag eröffneten Aufträge gleich Null ist.

Gibt es nicht so etwas wie "OrdersDayTotal"?

nein, aber wir können jederzeit unsere eigene Funktion schreiben)

int OrdersDayTotal(string Symb)
 {
int cnt,
OrdersDayTotal=0,
Time0=iTime(NULL,PERIOD_D1,0);

for( cnt=0; cnt<OrdersTotal(); cnt++)
   {
   OrderSelect( cnt, SELECT_BY_POS, MODE_TRADES);
   if(OrderSymbol()== Symb && OrderType()<2)
      {
      if(OrderOpenTime()> Time0) OrdersDayTotal++;
      }
   }
for( cnt=0; cnt<OrdersHistoryTotal(); cnt++)
   {
   OrderSelect( cnt, SELECT_BY_POS, MODE_HISTORY);
   if(OrderSymbol()== Symb && OrderType()<2)
      {
      if(OrderOpenTime()> Time0) OrdersDayTotal++;
      }
   }
return( OrdersDayTotal);
 }

Zählt die Kauf- und Verkaufsaufträge für ein bestimmtes Symbol, die heute eröffnet wurden. Keine ausstehenden Aufträge.

if(OrdersDayTotal(Symbol())==0) {...}

etwa so)

 
Stepan241 >> :

mazepa 08.12.2009 17:42

ANTWORT: Auf COD!

Wenn ich den Algorithmus verstehe, eröffnen wir den Kauf (Verkauf) zur festgelegten Zeit, wenn der Preis >10 Pips in die andere Richtung geht, schließen wir den Auftrag und gehen auf die andere Seite.

Ich verwende meine eigene Universalfunktion, um sie zu schließen.

//Funktion zum Schließen aller Marktaufträge im Fenster--------------------------------------------------------------------------------------------------
void _CloseAllOrder()
{
for(int i=0; i<OrdersTotal(); i++) //alle Aufträge für alle Währungen auslesen
{
if (OrderSelect(i,SELECT_BY_POS)==true) //wenn die Bestellung erfolgreich ausgewählt wurde
{
if (OrderSymbol()!=Symbol()) continue; //wenn die Bestellung auf die falsche Währung lautet, wird die Suche fortgesetzt
{
switch(OrderType()) //wenn die gewünschte Order eingereicht wird, definiere ihren Typ (Bue_Sell) und schließe sie
{
Fall 0:OrderClose(OrderTicket(),OrderLots(),Bid,2);break;
Fall 1:OrderClose(OrderTicket(),OrderLots(),Ask,2);break;
}
}
}
}
Rückkehr;
}
Also schreiben Sie jetzt einfach _CloseAllOrder(), bevor Sie in die andere Richtung öffnen


Die Funktion ist der Hammer, ich habe ein paar Seiten gebraucht. Vielen Dank.
 
Stepan241 >> :

mazepa 08.12.2009 17:42

ANTWORT: Auf COD!

Wenn ich den Algorithmus verstehe, eröffnen wir den Kauf (Verkauf) zur festgelegten Zeit, wenn sich der Preis um mehr als 10 Pips in die andere Richtung bewegt hat, schließen wir den Auftrag und bewegen uns in die entgegengesetzte Richtung.

Ich verwende meine eigene Universalfunktion, um sie zu schließen.

//Funktion zum Schließen aller Marktaufträge im Fenster--------------------------------------------------------------------------------------------------
void _CloseAllOrder()
{
for(int i=0; i<OrdersTotal(); i++) //alle Aufträge für alle Währungen auslesen
{
if (OrderSelect(i,SELECT_BY_POS)==true) //wenn die Bestellung erfolgreich ausgewählt wurde
{
if (OrderSymbol()!=Symbol()) continue; //wenn die Bestellung auf die falsche Währung lautet, wird die Suche fortgesetzt
{
switch(OrderType()) //wenn die gewünschte Order eingereicht wird, definiere ihren Typ (Bue_Sell) und schließe sie
{
Fall 0:OrderClose(OrderTicket(),OrderLots(),Bid,2);break;
Fall 1:OrderClose(OrderTicket(),OrderLots(),Ask,2);break;
}
}
}
}
Rückkehr;
}
Also schreiben Sie jetzt einfach _CloseAllOrder(), bevor Sie in die andere Richtung öffnen


Die Funktion ist der Hammer, ich habe ein paar Seiten gebraucht. Vielen Dank.