Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 356
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
Danke, aber ich hätte gerne eine genaue Lösung. Damit wird der aktuelle Balken nicht berücksichtigt, sondern nur die vorherigen Balken.
Danke, aber ich hätte gerne eine genaue Lösung. Damit wird der aktuelle Balken nicht berücksichtigt, sondern nur die vorherigen Balken.
Verdammt, ich habe mich in den Code von jemand anderem eingegraben, um wieder einmal mit einem Blick zu versuchen, dieses Stück zu ändern. In diesem Fall sollte wahrscheinlich PRICE_CLOSE oder 0 sein...
Hier ist der Code, wobei die Verschiebungen von 0 auf 1 geändert wurden. Wird das helfen?
//============================================================================================
//
//
//
//
//
//============================================================================================
inttern MA1_Period=7; // 1. MA-Periode
extern int intMA2_Period=13; // Periode des 2. MA
extern int MA1_Method=1; // MA1 Berechnungsmethode (SMA=0,EMA=1,SMMA=2,LWMA=3)
extern int MA2_Method=1; // MA2 Berechnungsmethode (SMA=0,EMA=1,SMMA=2,LWMA=3)
extern int MA1_Price=0; // MA1-Preis-Berechnungsmethode
extern int MA2_Price=0; // MA2-Preis-Berechnungsmethode
extern int MA1_Shift=1; // MA1-Zeitverschiebung
extern int MA2_Shift=1; // MA2-Zeitverschiebung
extern double Lot = 0.01; // Festes Lot
extern int slippage = 0; // Preisabweichung für Marktaufträge
int New_Bar; // 0/1 Neue Taktformung
int Time_0; // Startzeit eines neuen Taktes
int PosClose; // Kreuzungsrichtung
int total; // Anzahl der offenen Aufträge
double MA1_0; // Aktueller Wert des ersten МА (rosa)
double MA1_1; // Vorheriger Wert des 1. MA (rosa)
double MA2_0; // Aktueller Wert des 2. MA (blau)
double MA2_1; // Vorheriger Wert des 2. MA (blau)
int orderBuy; // 1 = Vorhandensein der Kaufbestellung
int orderSell; // 1 = Vorhandensein eines Verkaufsauftrags
//============================================================================================
int init()
{
}
//============================================================================================
int start()
{
doppelter Preis;
int total=OrdersTotal(); // Bestellungen insgesamt
for(int i=Gesamt-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) // Auftrag auswählen
{
if(OrderType()==OP_BUY) // wenn ein Kaufauftrag
{
orderBuy=1;
if(CrossPositionClose()==1) // Schließen Sie den Auftrag, wenn er den Anforderungen entspricht
{ // Bedingung CrossPositionClose()=1
Preis=MarketInfo(Symbol(),MODE_BID);
OrderClose(OrderTicket(),OrderLots(),Preis,Slippage,CLR_NONE);
}
}
if(OrderType()==OP_SELL) // Wenn ein Kaufauftrag erteilt wird
{
orderSell=1;
if(CrossPositionClose()==2) // Schließen Sie den Auftrag, wenn er den Anforderungen entspricht
{ // Bedingung CrossPositionClose()=2
Preis=MarketInfo(Symbol(),MODE_ASK);
OrderClose(OrderTicket(),OrderLots(),Preis,Slippage,CLR_NONE);
}
}
}
}
New_Bar=0; // Zuerst wird der Balken auf Null gesetzt
if (Time_0 != Time[0]) // Wenn die Startzeit des Taktes bereits unterschiedlich ist
{
New_Bar= 1; // Hier ist ein neuer Balken
Time_0 = Time[0]; // Merken Sie sich die neue Startzeit des Taktes
}
MA1_0=iMA(NULL,0, MA1_Period, MA1_Shift,MAMethod(MA1_Method), MAPrice(MA1_Price), 0); // Aktueller Wert des 1. MA
MA1_1=iMA(NULL,0, MA1_Period, MA1_Shift,MAMethod(MA1_Method), MAPrice(MA1_Price), 1); // Vorheriger Wert des 1. MA
MA2_0=iMA(NULL,0, MA2_Period, MA2_Shift,MAMethod(MA2_Method), MAPrice(MA2_Price), 0); // Aktueller Wert des 2. MA
MA2_1=iMA(NULL,0, MA2_Period, MA2_Shift,MAMethod(MA2_Method), MAPrice(MA2_Price), 1); // Vorheriger Wert des 2. MA
Rückkehr;
}
//============================================================================================
int CrossPositionClose()
{
PosClose=0; // hier ist der Hund begraben!!:)
if ((MA1_1>=MA2_0 && MA1_0<MA2_0) || (MA1_1>MA2_0 && MA1_0<=MA2_0)) // CrossPosition Close {
{
PosClose=1;
}
if ((MA1_1<=MA2_0 && MA1_0>MA2_0) || (MA1_1<MA2_0 && MA1_0>=MA2_0)) // Schnittpunkt nach unten
{
PosClose=2;
}
return(PosClose); // Rückgabe der Kreuzungsrichtung.
}
//============================================================================================
//============================================================================================
int MAMethode(int MA_Methode)
{
switch(MA_Methode)
{
Fall 0: return(0); //return MODE_SMA=0
Fall 1: return(1); // return MODE_EMA=1
Fall 2: return(2); // Rückgabe MODE_SMMA=2
Fall 3: return(3); //return MODE_LWMA=3
}
}
//============================================================================================
int MAPrice(int MA_Price)
{
switch(MA_Preis)
{
Fall 0: return(PREIS_SCHLIESSEN); // Return PRICE_CLOSE=0
Fall 1: return(PRICE_OPEN); //return PRICE_OPEN=1
Fall 2: return(PRICE_HIGH); //return PRICE_HIGH=2
Fall 3: return(PREIS_TIEF); //return PREIS_TIEF=3
Fall 4: return(PRICE_MEDIAN); //return PRICE_MEDIAN=4
case 5: return(PREIS_TYPISCH); //return PREIS_TYPISCH=5
Fall 6: return(PREIS_GEWICHTET); //return PREIS_GEWICHTET=6
}
}
//============================================================================================
Sepulca, das habe ich schon versucht, der Compiler schwört.
Das kann nicht sein, ich werde es selbst ausprobieren......
Sepulca, danke, dein Code funktioniert. Nur habe ich die Schichten wieder an ihren Platz gestellt.
Ich werde es auf längeren Zeitrahmen zu überprüfen, werde ich es für ein paar Tage zu foltern, um sicherzustellen, dass dieser Code funktioniert.