[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 1121
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
Guten Tag/Nacht
Ich versuche, einen Handel mit dieser primitiven Methode umzukehren, was nicht funktioniert (die Berechnung im Expert Advisor basiert auf Ticks):
if(CalculateCurrentOrders(Symbol())>0 && Close[1]<LowLevel) // ermittelt, ob es Kaufaufträge gab && ob eine Kerze unterhalb des unteren Levels geschlossen hat
{
CheckForClose(); // Schließen des Auftrags
OpenSell(); // einen Verkaufsauftrag eröffnen
Rückkehr;
}
Bitte teilen Sie mir mit, was ich falsch mache? Ich wäre auch dankbar für Links, die es mir ermöglichen würden, diese Lücke zu schließen.
dzhini:
Ich versuche, den Handel auf diese primitive Weise umzukehren, was nicht funktioniert (der Expert Advisor berechnet nach Ticks):
if(CalculateCurrentOrders(Symbol())> 0 && Close[1]<LowLevel) // es wird geprüft, ob es Kaufaufträge gab && ob eine Kerze unterhalb des unteren Niveaus geschlossen hat
Wie kann ich feststellen, wie viele Minuten zwischen Zeit1 und Zeit2 liegen?
Dies ist wahrscheinlich die Funktion, mit der Sie alle Aufträge zählen. Dies sollte für Buy
sein.
Dies ist eine Standardfunktion:
int CalculateCurrentOrders(string symbol)}
wenn >0 dann ist es ein Kaufauftrag, wenn <0 dann ist es ein Verkaufsauftrag ))))
Wie kann ich feststellen, wie viele Minuten zwischen Zeit1 und Zeit2 liegen?
die Differenz ergibt die Anzahl der Sekunden.
Dividieren Sie durch 60. Sie erhalten die Anzahl der Minuten.
extern double TP = 70; //Gewinn nehmen
extern double SL = 0; //Verlust stoppen
extern double Lot = 0.1;
double HighLevel;
double LowLevel;
int resBuy=0;
int resSell=0;
//+------------------------------------------------------------------+
//| Experteninitialisierungsfunktion |
//+------------------------------------------------------------------+
int init()
{
HighLevel=High[1];
LowLevel=Low[1];
return;
}
//+------------------------------------------------------------------+
//| Expertenfunktion |
//+------------------------------------------------------------------+
void start()
{
if(Bars<100 && IsTradeAllowed()==false) return;
if(resBuy==0 && resSell==0 && CheckBreak()==-1)
{
resSell=OrderSend(Symbol(),OP_SELL,Lot,Bid,2,0,Bid -TP,"",MAGICMA,0,Red);
HighLevel=LowLevel;
LowLevel=Close[1];
return;
}
if(resBuy==0 && resSell==0 && CheckBreak()==-1& CheckBreak()==1)
{
resBuy=OrderSend(Symbol(),OP_BUY,Lot,Ask,2,0,Ask + TP,"",MAGICMA,0,Blue);
LowLevel=HighLevel;
HighLevel=Close[1];
return;
}
if(resBuy!=0 && resSell==0 && Close[1]<LowLevel) //------------------------------------- interessiert sich für diesen Teil: Schließen und Öffnen auf einem Balken
{
bool closeBuy=OrderClose(resBuy, Lot, Bid, 2, Blue);
// while(!IsTradeAllowed()) Sleep(100);
resSell=OrderSend(Symbol(),OP_SELL,Lot,Bid,2,0,Bid -TP,"",MAGICMA,0,Red);
HighLevel=LowLevel;
LowLevel=Close[1];
return;
}
if(resSell!=0 && resBuy==0 && Close[1]>HighLevel) //------------------------------------- interessiert sich für diesen Teil: Schließen und Öffnen auf einem Bar
{
bool closeSell=OrderClose(resSell, Lot, Ask, 0.0002, Red);
// while(!IsTradeAllowed()) Sleep(100);
resBuy=OrderSend(Symbol(),OP_BUY,Lot,Ask,2,0,Ask + TP,"",MAGICMA,0,Blue);
LowLevel=HighLevel;
HighLevel=Close[1];
return;
}
}
//----------------------------------------------------------------- Check Low&High break (Func)
double CheckBreak()
{
double candle=Open[1]-Close[1];
if(candle>0 && Low[1]<LowLevel) return(-1);
if(candle<0 && High[1]>HighLevel) return(1);
}
Differenz gibt die Anzahl der Sekunden zurück.
Dividieren Sie durch 60. Das ergibt die Anzahl der Minuten.
Ich erhalte nur das Datum 1971.03.04 12:00, vielleicht muss das umgerechnet werden?
Ich bekomme nur das Datum, vielleicht muss es umgerechnet werden?
Zunächst einmal: Warum multiplizieren Sie mit 60?
Zweitens - wenn Sie die Anzahl der Minuten als Zeit wie 00:15 anzeigen möchten,
müssen Sie nicht durch 60 dividieren oder multiplizieren.
Zunächst einmal: Warum multiplizieren Sie mit 60?
Zweitens - wenn Sie die Anzahl der Minuten auf dem Bildschirm als eine Zeit wie 00:15 darstellen möchten,
müssen Sie nicht durch 60 dividieren oder multiplizieren.
Ja, ich habe die Division korrigiert, aber die Jahreszahl lautet 1970.01.01 02:51
Ich brauche es nicht für den Bildschirm, ich wollte nur die Anzahl der Minuten ohne Datum für dieses Zeitintervall finden....
Auch ohne Division wird das Datum ausgegeben, oder muss ich das Datum, auf dem die Funktion basiert, abziehen?
Wenn Sie nur eine Anzahl von Minuten benötigen, gibt es keinen Grund, TimeToStr zu verwenden.
Zeit ist eine normale int-Zahl.
Alternativ können Sie TimeToStr nur mit dem TIME_MINUTE-Flag verwenden