[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 279

 
drknn:
Was ist, wenn er einen Code für 70 Pfund statt für 60 Pfund dabei hat? :) ;)
Heben wir es für ein Upgrade auf :)
 
veti-k:
Hallo, können Sie mir sagen, wie ich feststellen kann, wie viele Pips eine Order im Gewinn ist?
Wenn Sie eine Kaufposition haben, müssen Sie den Eröffnungskurs vom aktuellen Geldkurs subtrahieren. Wenn es sich um eine Verkaufsposition handelt, sollten Sie den aktuellen Briefkurs vom Eröffnungskurs subtrahieren.
 
paladin80:
Wenn eine Kaufposition eröffnet wird, ziehen Sie den Eröffnungskurs vom aktuellen Geldkurs ab. Wenn es sich um eine Verkaufsposition handelt, ziehen Sie den aktuellen Briefkurs vom Eröffnungskurs ab.

Die Scouts fanden heraus, dass OrderClosePrice() anstelle von Bid oder Ask verwendet werden kann
 
Danke))
 
Liebe Forenbenutzer, können Sie mir sagen, wie ich eine Variable aus iCustom in ArrayMaximum einfügen kann?
 
Alexandr24:
Liebe Forumsnutzer, könnten Sie mir bitte sagen, wie ich eine Variable aus iCustom in ArrayMaximum einfügen kann?
Hierfür müssen Sie lesen, was ArrayMaximum ist.

int ArrayMaximum( double array[], int count=WHOLE_ARRAY, int start=0)

Es wird das Element mit dem maximalen Wert gesucht. Die Funktion gibt die Position des maximalen Elements im Array zurück.

Die Suche ist ein Prozess, nicht eine Variable. Das heißt, Sie können einem Array-Element einen Indikatorwert zuweisen und dann das Array mit ArrayMaximum nach dem größten Element durchsuchen.
 
granit77:
Dazu sollten Sie lesen, was ArrayMaximum ist.

int ArrayMaximum( double array[], int count=WHOLE_ARRAY, int start=0)

Suche nach dem Element mit dem maximalen Wert. Die Funktion gibt die Position des maximalen Elements im Array zurück.

Die Suche ist ein Prozess, nicht eine Variable. Das heißt, Sie können einem Arrayelement einen Indikatorwert zuweisen und dann das Array mit ArrayMaximum nach dem maximalen Element durchsuchen.
Wie finde ich den maximalen Wert des Indikators für den gestrigen Tag? Ich habe den ersten und den maximalen Wert des Indikators für den gestrigen Tag gefunden, aber ich kann den maximalen Wert des gestrigen Tages nicht finden, ArrayMaximum beginnt mit der Suche durch das gesamte Diagramm, oder kann es durch eine andere Funktion getan werden?
 

Guten Tag zusammen, ich sitze gerade vor meinem Computer und schlage meinen Kopf gegen die Tastatur - ich kann einen Fehler im Code nicht beheben... Bitte helfen Sie einem Anfänger.

Hier ist mein Eulencode:

extern double TakeProfit = 500;

extern double Lots = 0.1;

extern double Stoploss = 30;

extern double TrailingStop = 30;

externer String Indikator_1 = "SAR (SAR_STEP)";

extern double SAR_Step = 0,02;

extern double SAR_MaxStep =0.2;

extern double GeneralShift = 0; // 0 - nicht geschlossener Balken, 1 - geschlossen.

// Dies sind die Variablen, die in die

// angezeigt während

// Verbindung des Expert Advisors mit dem Chart


//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

int start()

{

Doppel-A;

int b;

int total, ticket, cnt;


//nur Variablen, die im Programm verwendet werden sollen


if(Balken<100)

{

Print("Balken kleiner als 100");

zurück(0);

}

// Diese Bedingung prüft, ob der Chartverlauf mehr als 100 Candlesticks enthält, und gibt andernfalls einen Fehler zurück,

// Es wird ein Fehler erzeugt. Es ist erforderlich, Ihre Aufmerksamkeit auf das Problem zu lenken, dass

// Mangel an Informationen


if(TakeProfit<5)

{

Print("TakeProfit kleiner als 5");

zurück(0);

}

// Diese Bedingung prüft das TakeProfit-Niveau (eine der externen Variablen,

// der die Höhe der Gewinnmitnahme steuert. Es wird benötigt, um zu überprüfen, ob // Sie die Take-Profit-Ebenen festgelegt haben.

// Prüfen Sie, ob Sie Gewinnmitnahmen auf einem Niveau festgelegt haben, das von Ihrer Brokerfirma nicht erlaubt ist.

// Für Ihr Maklerunternehmen nicht zulässig. Wenn Ihr Expert Advisor fehlschlägt, wissen Sie also genau, was der Fehler ist.

// wo der Fehler liegt. Ich empfehle dringend, sie einzustellen.


total=AuftragsSumme();

if(gesamt<1)

// Diese Prüfung ist erforderlich, um zu vermeiden, dass mehrere identische Positionen auf einmal geöffnet werden. Wenn diese Option nicht aktiviert ist, wird Ihr EA beispielsweise ausgelöst, wenn sich die Stochastik in der überkauften Zone befindet, und er handelt so lange mit jedem Tick, bis er die gesamte Marge aufgebraucht hat.

// Um die Anzahl der offenen Stellen zu begrenzen, wird daher diese

// Begrenzer. Wenn sie gesetzt ist, wird der Advisor nicht mehr als eine bestimmte // Anzahl von

// Anzahl der Positionen <x

{

// keine offenen Aufträge identifiziert

if(KontoFreieMarge()<(1000*Lose))

{

Print("Wir haben kein Geld. Freie Marge = ", AccountFreeMargin();

zurück(0);

}

// Ein weiteres Hilfsstück des Codes. Wenn nicht genügend Geld auf dem Konto ist, wird es

// gibt einen Fehler aus. Dieser Teil ist völlig nutzlos, wenn der Expert Advisor funktioniert

// Echtzeit, aber es ist sehr nützlich für Tests in der Vergangenheit.


if(iSAR(NULL,0,SAR_Step,SAR_MaxStep,GeneralShift)>Close[0]); // BUY eröffnen

// Endlich kommen wir zum interessantesten Teil. Anstelle dieser x's müssen wir einfügen

// Bedingung, die einen KAUF auslöst.


{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-Stoploss*Point, Ask+TakeProfit*Point, "comment",16384,0,Green);


// Dies sind die Kaufbedingungen. Im Prinzip gibt es hier nichts zu ändern, aber um meinen Horizont zu erweitern, erweitere ich den Rahmen.

// Ich werde entschlüsseln, was hier steht. Hier steht, dass wir kaufen müssen

// (OP_BUY) das aktuelle Symbol (Währungspaar, an dessen Chart dieser Expert Advisor angehängt wurde),

// Handelsgröße Lots (Variable, die zu Beginn festgelegt wird). Marktpreis, mit

// Schlupf 3, und mit einem StopLoss und TakeProfit, die auf den

am // Anfang wird der Handel mit dem Kommentar "comment" gekennzeichnet, mit der entscheidenden Nummer 0, und am

// Am Ort des Kaufs wird auf der Karte ein grüner Schieberegler mit dem Bestimmungscode zu sehen sein

// 16384


if(Ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());

}

else Print("Fehler beim Öffnen der BUY-Bestellung: ",GetLastError());

zurück(0);

}


// Dieser Block wird nur benötigt, um zu protokollieren, ob alles gut gelaufen ist.

// Oder um einen Fehler aufzuzeichnen, der zum Scheitern einer Aktion geführt hat.


// Nun das Gleiche mit der Verkaufswette. Anstatt YYYYYYY - Bedingung

if(iSAR(NULL,0,SAR_Step,SAR_MaxStep,GeneralShift)<Close[0])

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+Stoploss*Point,Bid-TakeProfit*Point, "macd sample",16384,0,Red);

if(Ticket>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());

}

else Print("Fehler bei der Eröffnung einer SELL-Order: ",GetLastError());

zurück(0);

}

zurück(0);

}


// Jetzt der Ausgang. Auch hier hat sich nichts geändert, es ist nur RRRRRR - Zustand

// Schließen eines Geschäfts durch KAUFEN, ZZZZZZZZZZZZ - durch VERKAUFEN


for(cnt=0;cnt

// alle offenen Stellen werden mit für gesucht

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if(OrderType()<=OP_SELL && // Prüfung auf offene Positionen

OrderSymbol()==Symbol()) // Prüfung auf Symbol

{

if(OrderType()==OP_BUY) // Long-Position wird eröffnet

{

// sollte sie geschlossen werden?

if(iSAR(NULL,0,SAR_Step,SAR_MaxStep,GeneralShift)<Close[0]) //KAUFEN schließen.

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // Position schließen

return(0); // exit

}

// Prüfung auf Nachlaufstopp

if(NachlaufenderStop>0)

{

if(Bid-OrderOpenPrice()>Point*TrailingStop)

{

if(OrderStopLoss()<Bid-Point*TrailingStop)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);

zurück(0);

}

}

}

}

else // Dasselbe mit der Short-Position

{

// sollte sie geschlossen werden?

if(iSAR(NULL,0,SAR_Step,SAR_MaxStep,GeneralShift)>Close[0])//VERKAUFEN abschließen

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // Position schließen

return(0); // exit

}

// Prüfung auf Nachlaufstopp

if(NachlaufenderStop>0)

{

if((OrderOpenPrice()-Ask)>(Point*TrailingStop))

{

if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0)))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);

zurück(0);

}

}

}

}

}

}

}

zurück(0);

//--------

}

//-------- das Ende.

 

Ein unerfahrener Autohändler kann sich keinen Käfer einfangen!!! BITTE BITTE HELFEN SIE MIR!!!!!!!!!!!!!!!!!!

'}' - unausgewogene Klammern C:\Program Files (x86)\Forex4you MetaTrader 4\experts\Saurentios V101.mq4 (167, 1)

 
Ich wünschte, ich hätte mir nicht den Kopf gestoßen, als ich den Code so formatiert habe. Ich werde es in Ordnung bringen :)