[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 767
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
Ja, ein Teil des Codes funktioniert und ein Teil des Codes sagt 4107 und 130 Fehler und das Interessanteste ist, dass sie den Preis von ein und derselben Funktion nehmen und auf ein und dieselbe Öffnungsfunktion wirken.
Versuchen Sie irgendwo die folgende Struktur, dieses Beispiel ist für meinen Fall.
if (OrderSend(Symbol(),OP_BUYSTOP,Lot,OpenPrice,0,Ask,0,0,Mg,0,Red)== -1)
Print("Fehler 1 OP_BUYSTOP "," Open=",OpenPrice," StopLoss=",Ask," Trall=",TrallBuy," StopLoss=",StopLoss) ;
siehe das Ergebnis im Protokoll unter
Guten Tag, liebe Genießer. Helfen Sie mir, diesen Code zu verstehen...
//+------------------------------------------------------------------+
Offene Positionen berechnen //|
//+------------------------------------------------------------------+
int CalculateCurrentOrders(string symbol)
{
int buys=0,sells=0;
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICEA)
{
if(OrderType()==OP_BUY) kauft++;
if(OrderType()==OP_SELL) sells++;
}
}
//---- Rücksendeauftragsvolumen
if(Käufe>0) return(Käufe);
sonst return(-sells);
}
//+------------------------------------------------------------------+
//| Berechnung der optimalen Losgröße |
//+------------------------------------------------------------------+
double LotSize(){
DoppellotMM;
if(PairsTraded==0){
lotMM = MathCeil(AccountFreeMargin() * Risiko / 10000) / 10;
} sonst {
lotMM = MathCeil(AccountFreeMargin() * Risk / 10000 /PairsTraded) / 10 ;
}
wenn (MM==true){
if (lotMM < 0.1) lotMM = Lots;
wenn (lotMM > 1,0) lotMM = MathCeil(lotMM);
wenn (lotMM > 100) lotMM = MaxLots;
}
sonst lotMM = Lose;
zurück (lotMM);
}
//+------------------------------------------------------------------+
//| Prüfung auf offene Auftragsbedingungen |
//+------------------------------------------------------------------+
void CheckForOpen()
{
doppelt CCI5,CCI15,CCI30,CCIH1,CCIH4;
int senden;
//----MultitimeFrame CCI-Einstellung
CCI5 = iCCI(NULL,PERIOD_M5,50,PRICE_CLOSE,0);
CCI15 = iCCI(NULL,PERIOD_M15,50,PRICE_CLOSE,0);
CCI30 = iCCI(NULL,PERIOD_M30,50,PRICE_CLOSE,0);
CCIH1 = iCCI(NULL,PERIOD_H1,50,PRICE_CLOSE,0);
//----
//---- Verkaufsbedingungen
wenn ((CCIH1<0)&&(CCI30<0)&&(CCI15<0)&&(CCI5<0))//op verkaufen
{
send=OrderSend(Symbol(),OP_SELL,LotSize(),Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,MagicName+"-Sell",MAGICEA,0,Red);
Rückkehr;
}
//---- Kaufbedingungen
wenn ((CCIH1>0)&&(CCI30>0)&&(CCI15>0)&&(CCI5>0))//op kaufen
{
send=OrderSend(Symbol(),OP_BUY,LotSize(),Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,MagicName+"-Buy",MAGICEA,0,Blue);
Rückkehr;
}
}
//----
//+------------------------------------------------------------------+
//| Prüfung auf enge Auftragsbedingungen |
//+------------------------------------------------------------------+
void CheckForClose()
{
//----
//----
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderMagicNumber()!=MAGICEA || OrderSymbol()!=Symbol()) weiter;
//---- Auftragsart prüfen
if (OrderSymbol()==Symbol() && OrderType()==OP_BUY && Bid-TrailingStop*Point > OrderStopLoss()){
if (Bid > OrderOpenPrice()+TrailingStop*Point) {
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*Point,0,0,White);
}
} sonst {
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-1*Point,0,0,White);
}
if (OrderSymbol()==Symbol() && OrderType()==OP_SELL && Ask-TrailingStop*Point < OrderStopLoss()){
if (Ask < OrderOpenPrice()-TrailingStop*Point) {
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TrailingStop*Point,0,0,White);
}
} sonst {
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+1*Point,0,0,White);
}
}
//----
}
//+------------------------------------------------------------------+
//| Startfunktion |
//+------------------------------------------------------------------+
void start()
{
//---- check für Geschichte und Handel
if(Bars<100 || IsTradeAllowed()==false) return;
//---- berechnet offene Aufträge nach aktuellem Symbol
if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
sonst CheckForClose();
//----
}
//+------------------------------------------------------------------+
Wenn ich möchte, dass nur eine Position geöffnet wird und ich nicht möchte, dass sie wieder geöffnet wird, nachdem ich sie geschlossen habe, aber sie öffnet eine Position, nachdem ich sie geschlossen habe, möchte ich, dass sie wieder geöffnet wird.
Guten Tag, liebe Genießer. Helfen Sie mir, diesen Code zu verstehen...
... code ...Ich brauche es, um nur eine Transaktion unter gebildet Bedingung und nach seiner Schließung zu öffnen, bis die nächste Bedingung nicht mehr öffnen... aber was ich habe, ist, dass es öffnet, schließe ich zum Beispiel einen bestimmten Handel und es öffnet wieder an der gleichen Stelle, was für?
Sie haben es und es wird sich öffnen, solange die Öffnungsbedingung besteht.
Prüfen Sie, ob die Position bereits durch dieses Signal geöffnet wurde, z. B. bool OpnPose = false; bevor eine Position durch dieses Signal geöffnet wird, prüfen Sie das Flag, und wenn es nicht gesetzt ist (OpnPose == false), öffnen Sie die Position. Wenn es geöffnet wird, wenn es wirklich geöffnet wurde und auf dem Markt ist, setzen Sie die Flagge zum Öffnen durch dieses Signal: OpnPose = true; sobald ein neues Signal kommt, verwerfen Sie dieses:
OpnPose = false;
Dankeschön
Ja, wir können es einfacher machen, nachdem das Signal ausgelöst wird, setzen Sie einen Zähler, so dass nichts anderes innerhalb von 2 oder 3 Kerzen öffnet, so dass, wenn es manuell schließt nichts anderes öffnet, und der Zähler hebt das Öffnungsverbot nach ein paar Kerzen
Und nachdem das Verbot aufgehoben wurde, wird der EA den Auftrag wieder auf den Markt bringen... Und wenn er beschließt, die Position nach 10, 15, 20 Kerzen zu schließen und nicht wieder zu öffnen, auch wenn das Signal noch vorhanden ist? Am Freitag, zum Beispiel...
meine Frage ist, wie zu tun, wenn es eine neue Bestellung aus dem Beispiel der genau das Gegenteil, wenn es eine geschlossene Bestellung "if(TotalHistoryOrders<OrdersHistoryTotal())// eine andere Bestellung hat in der Geschichte erschienen" und ich brauche die offene auch bestimmt werden
meine Frage ist, wie zu tun, wenn es eine neue Bestellung aus dem Beispiel der genau das Gegenteil, wenn es eine geschlossene Bestellung "if(TotalHistoryOrders<OrdersHistoryTotal())// eine andere Bestellung hat in der Geschichte erschienen" und ich brauche die offene auch bestimmt werden
Zählen Sie beim Durchprobieren aller Aufträge und beim Aussortieren überflüssiger Aufträge die Zahl, merken Sie sie sich, und wenn sich die Zahl bei einer neuen Schleife geändert hat, bedeutet dies, dass entweder ein neuer Auftrag erschienen ist oder verschwunden ist.
Ich brauche nur die Funktion aufzurufen und das war's, ich brauche nur eine Zeile "Wenn die Bestellungen mehr als eine sind als .... Das ist alles" und Sie bieten mir eine ganze Funktion an
So speichere ich Daten über Bestellungen