[ARCHIV!] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen - 4. - Seite 42

 
sting-igor:
Haben die DoCs ein Limit für die Anzahl der Trades?

Einige haben nicht nur eine Begrenzung der Anzahl der Angebote, sondern sogar eine Begrenzung der Anzahl der Anfragen.

Sie sind solche Erfinder! :-))

 
Guten Tag!
Letztes Mal habe ich eine Frage zum Öffnen von Aufträgen gestellt, jetzt habe ich eine Frage zum Schließen von Aufträgen).
Nachfolgend finden Sie einen Code mit Funktionen zum Öffnen und Schließen von Aufträgen.
Wenn mein Expert Advisor arbeitet, kommt es zu einer "Besonderheit" wie dieser: Es werden z.B. 10 verschiedene Orders geöffnet und 2 davon werden dabei geschlossen,

Die übrigen bleiben bis zum Ende des Tests offen, obwohl ein bedingtes Schließen eines Auftrags erfolgen sollte, wenn ein anderer geöffnet wird.

........................
magick=MathRand(); 
     
     if(NewBar())
 {     

  //---- Условие SELL
if(MAarrUP1[j]>0.35 && MAarrUP2[j]>1.8)
     {
 closeDnOrd();OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,0,0,magick,0,Blue);
     } 
  
  //---- Условие BUY
    if(MAarrDN1[j]<-0.35 && MAarrDN2[j]<-1.8)
    {
closeUpOrd();OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,0,0,magick,0,Red);
     }
}
............
//--------------------------------------------------------- Функции

//----- Функция закрытия селл

void closeUpOrd()
  {
  for(int i=0;i<=OrdersTotal();i++)
      {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)        break;
      if(OrderMagicNumber()!=magick || OrderSymbol()!=Symbol()) continue;

  if(OrderType()==OP_SELL)
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,CLR_NONE);
}
      } 
    }

//---- Функция закрытия бая

void closeDnOrd()
  {
  for(int i=0;i<=OrdersTotal();i++)
      {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)        break;
      if(OrderMagicNumber()!=magick || OrderSymbol()!=Symbol()) continue;

 if(OrderType()==OP_BUY)
{
 OrderClose(OrderTicket(),OrderLots(),Bid,3,CLR_NONE);
}
      } 
  }

Eine weitere Frage zu den Fehlern 4051 und 134 bei der Verwendung von OrderClose(), was bedeuten sie? Ich habe Informationen aus dem Protokoll kopiert.

02:54:37 2010.10.17 23:16  Ti&Pi_Speeder_Exp AUDUSD,M1: invalid ticket for OrderModify function
02:54:37 2010.10.17 23:16  Ti&Pi_Speeder_Exp AUDUSD,M1: OrderModify error 4051


02:54:37 2010.10.17 23:22  Ti&Pi_Speeder_Exp AUDUSD,M1: OrderSend error 134

 
Vinin:

Die letzte Option scheint mehr oder weniger gut funktioniert zu haben. Es ist zwar möglich, die Berechnungen zu vereinfachen
Sagen Sie mir, warum Sie die Funktion iMAOnArray in einer separaten Schleife haben?
 

Bitte um Rat! Wie kann ich zwei schwebende Aufträge mit derselben Magie, aber mit unterschiedlichem Lot schließen?


int start()

{
double MyLastBullOpenPrice=0;
for(int Cnt=0;Cnt<OrdersTotal();Cnt++)
{
OrderSelect(Cnt,SELECT_BY_POS,MODE_TRADES);
if(OrderMagicNumber()==12345 && OrderType()==OP_BUY)
{
MyLastBullOpenPrice=OrderOpenPrice();
double Cena=OrderOpenPrice()+5*Point;
double Totalcena= Bid;

if (Totalcena>Cena)
{
if (OrdersTotal()>0)
{ for (int i=OrdersTotal()-1; i>=0; i--)
{ if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{ if(BestellMagischeNummer()==12345)

{ if(OrderDelete(OrderTicket())==true)
{
Print("Fehler = ",GetLastError()); return(0);
}
} } }
}
}

return(MyLastBullOpenPrice);
}

 
Fox_RM:
Guten Tag!
Letztes Mal habe ich eine Frage zum Öffnen von Aufträgen gestellt, jetzt habe ich eine Frage zum Schließen von Aufträgen).
Nachfolgend finden Sie einen Code mit Funktionen zum Öffnen und Schließen von Aufträgen.
Wenn mein Expert Advisor arbeitet, kommt es zu einer "Besonderheit" wie dieser: Es werden z.B. 10 verschiedene Orders geöffnet und 2 davon werden dabei geschlossen,

Die übrigen bleiben bis zum Ende des Tests offen, obwohl ein bedingtes Schließen eines Auftrags erfolgen sollte, wenn ein anderer geöffnet wird.

Eine weitere Frage zu den Fehlern 4051 und 134 bei der Verwendung von OrderClose(), was bedeuten sie? Ich habe Informationen aus dem Protokoll kopiert.

134 - kein Geld, 4051 - falsche Parameter an die Funktion übergeben.

Was den Punkt angeht - stellen Sie sicher, dass die Variable magick nur einmal zugewiesen wird, vorzugsweise in der Funktion init(), andernfalls hat jeder Auftrag seine eigene magick und das Ergebnis wird so sein, wie Sie es beschreiben.

 

Bitte helfen Sie mir, eine Zeichenersetzungsfunktion für eine Zeichenkette durch Arrays hinzuzufügen (oder zu schreiben).

Haben zwei Arrays von Zeichen:

string symbols1[] = {"a", "b", "c", "d"};
string symbols2[] = {"1", "2", "3", "4"};


Versucht, eine Funktion zu schreiben, die den Text badc mit 2143 ersetzen würde, basierend auf den Arrays, stellte sich wie folgt heraus:

string ReplaceSymbolsInStr(string text){
string textMod[] ={""};
string symbols1[] = {"a","b","c","d"};
string symbols2[] = {"1","2","3","4"};
int textLen = StringLen(text);
for (int i1=0; i1<textLen; i1++)
{
string OneSymbol = StringSubstr(text,i1,1);

for (int i2=0; i2<ArraySize(symbols1); i2++)
{
if (symbols1[i2]==OneSymbol) int PosSymbolIn1array=i2;
}
return(-1);

string OneSymbolMod = symbols2[PosSymbolIn1array];
int NewArraySize = ArraySize(textMod)+1;
ArrayResize(textMod,NewArraySize);
textMod[i1]=OneSymbolMod;
string textNew;
textNew=StringConcatenate(textMod[1],textMod[2]...);//собрать массив в строку вообще не могу :(
return (textNew);
}
}

Ich weiß, dass es falsch ist, und ich kann das Array überhaupt nicht zu einer Zeichenkette zusammensetzen. Bitte um Hilfe.

 
Zhunko:

Einige haben nicht nur eine Begrenzung der Anzahl der Angebote, sondern sogar eine Begrenzung der Anzahl der Anfragen.

Sie sind solche Erfinder! :-))

Gibt es ein Verbot, dass sie sich in Ihre Angelegenheiten einmischen?
 
Lians:

Bitte helfen Sie mir, eine Funktion zur Ersetzung von Zeichen in einer Zeichenfolge durch Arrays hinzuzufügen (oder zu schreiben).

Haben zwei Arrays von Zeichen:

string symbols1[] = {"a", "b", "c", "d"};
string symbols2[] = {"1", "2", "3", "4"}


Versucht, eine Funktion zu schreiben, die den Text badc mit 2143 ersetzen würde, basierend auf den Arrays, stellte sich wie folgt heraus:

string ReplaceSymbolsInStr(string text){
string textMod[] ={""};
string symbols1[] = {"a","b","c","d"};
string symbols2[] = {"1","2","3","4"};
int textLen = StringLen(text);
for (int i1=0; i1<textLen; i1++)
{
string OneSymbol = StringSubstr(text,i1,1);

for (int i2=0; i2<ArraySize(symbols1); i2++)
{
if (symbols1[i2]==OneSymbol) int PosSymbolIn1array=i2;
}
return(-1);

string OneSymbolMod = symbols2[PosSymbolIn1array];
int NewArraySize = ArraySize(textMod)+1;
ArrayResize(textMod,NewArraySize);
textMod[i1]=OneSymbolMod;
string textNew;
textNew=StringConcatenate(textMod[1],textMod[2]...);//собрать массив в строку вообще не могу :(
return (textNew);
}
}

Ich weiß, dass es falsch ist, und ich kann das Array überhaupt nicht zu einer Zeichenkette zusammensetzen. Bitte um Hilfe.

Sie sollten den Index des Zeichens im Ersetzungsarray gefunden haben, warum also ein weiteres Array erstellen?

Versuchen Sie, ihn in der ersten Schleife in eine einfache Textvariable einzufügen:

string ReplaceSymbolsInStr(string text)

{


string symbols1[] = {"a", "b", "c", "d"};

string symbols2[] = {"1", "2", "3", "4"};

string textNew="";

int textLen = StringLen(text);

for (int i1=0; i1<textLen; i1++)
{
string OneSymbol = StringSubstr(text,i1,1);

for (int i2=0; i2<ArraySize(symbols1); i2++)

{
if (symbols1[i2]==OneSymbol) {textNew = textNew + symbols2[ i2 ]; i2=ArraySize(symbols1) ; }

}

}

return (textNew);

}

 


Oder noch einfacher ist es so:

string ReplaceSymbolsInStr(string text)

{


string symbols1[4] = {"a", "b", "c", "d"}; // Größe des Arrays entsprechend der Anzahl der enthaltenen Symbole

string textNew="";

for (int i1=0; i1< StringLen(text) ; i1++)

{
string OneSymbol = StringSubstr(text,i1,1);

for (int i2=0; i2<ArraySize(symbols1); i2++)

{
if (symbols1[i2]==OneSymbol )

{

textNew = textNew + (i2+1); // die Nummer des Symbols selbst wird dem zurückgegebenen Text hinzugefügt

i2=ArraySize(symbols1) ; // Abschluss der Suchschleife

}

}

}

return (textNew);

}

 

Guten Tag!

Könnten Sie mir bitte mitteilen (oder einen Beispiel-Link angeben), wie ich Daten im csv-Format automatisch per E-Mail versenden kann?

Ich danke Ihnen.