Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 1092

 
Neuinstallation des Betriebssystems. Wie kann man nach einer Neuinstallation des Betriebssystems MT4 in den Zustand vor der Neuinstallation zurückversetzen?
Indikatoren, EAs, Skripte; Vorlagen, Profile; Konten
 
AlexandrL:
Neuinstallation des Betriebssystems. Wie kann man nach einer Neuinstallation des Betriebssystems MT4 in den Zustand vor der Neuinstallation zurückversetzen?
Indikatoren, Expert Advisors, Skripte; Vorlagen, Profile; Konten
Kopieren Sie vor der Neuinstallation den Ordner des Terminals auf ein Flash-Laufwerk. Wenn es sich um eine Version 7 oder höher handelt, dann auch den gemeinsamen Ordner. Weitere Einzelheiten finden Sie hier
 

Nachmittags.

Ein Ratgeber, der auf einem Pfeilindikator basiert.

Auf dem oberen Fraktal verkaufen, auf dem unteren kaufen. Bei der Arbeit max. 1 Bestellung. Aber irgendwo liegt ein Fehler vor, denn der Expert Advisor berücksichtigt die Fraktale nicht und öffnet nur im Kauf. Oder es wird überhaupt nicht geöffnet (wenn wir den Offset in iCustom ändern). Ich habe versucht, eine andere Bedingung in den Expert Advisor einzufügen (beim Überqueren des Pfeils). Alles funktioniert, aber es werden keine Daten von der Pfeilanzeige übernommen.

Indikator:

//+------------------------------------------------------------------+
//|                                                   MI_Fractal.mq4 |
//|                                                     Орешкин А.В. |
//|                                        http://www.vk.com/mtforex |
//+------------------------------------------------------------------+
#property copyright "Орешкин А.В."
#property link      "http://www.vk.com/mtforex"

#property indicator_chart_window
#property indicator_buffers 2
#property  indicator_color1 Aqua
#property  indicator_color2 Yellow
#property  indicator_width1 2
#property  indicator_width2 2

//--- input parameters
extern int       leftBars=10;
extern int       rightBars=2;
extern int       difference=10;
//extern int       maximumBars=1000;
extern bool      showUp=true;
extern bool      showDown=true;

bool  UP_Fractal,DOWN_Fractal;
double DEF,up[],down[];

int init()
  {
   DEF=NormalizeDouble(difference*Point,Digits);
   SetIndexBuffer(0,up);
   SetIndexBuffer(1,down);
   SetIndexStyle(0,DRAW_ARROW);
   SetIndexStyle(1,DRAW_ARROW);    
   SetIndexArrow(0,217);
   SetIndexArrow(1,218);
   return(0);
  }

int deinit(){return(0);}

int start()
  {   
   //for (int i=maximumBars;i>rightBars;i--)
   for (int i=Bars-IndicatorCounted()-leftBars-1;i>rightBars;i--)   
      {//3
      UP_Fractal=true;DOWN_Fractal=true;
      
      for (int x=i+leftBars;x>=i-rightBars;x--)
         {//0
         if (x==i) continue;
         if (High[i]-High[x]<DEF) UP_Fractal=false;
         if (Low[x]-Low[i]<DEF) DOWN_Fractal=false;
         }//0
      
      up[i]=EMPTY;
      down[i]=EMPTY;
      
      if (showUp)   
         if (UP_Fractal && !DOWN_Fractal) up[i]=High[i];
      
      if (showDown)   
         if (!UP_Fractal && DOWN_Fractal) down[i]=Low[i]; 
      }//3
   return(0);
  }


Code von der Eule:

double upFr=iCustom(Symbol(),0, "MI_Fractal",leftBars,rightBars,difference,showUp,showDown,0,1);
double downFr=iCustom(Symbol(),0, "MI_Fractal",leftBars,rightBars,difference,showUp,showDown,1,1); 
     
   if (upFr!=EMPTY_VALUE)   
   //if (upFr<2) 
   //if (upFr>0)    
     {   
                                          
      Alert(upFr); 
      Opn_S=true;                             
      //Cls_B=true;                                
     }
 if (downFr!=EMPTY_VALUE)
   //if (downFr<2)
 //  if (downFr>0)                                              
     {                                         
     Opn_B=true;                              
     //Cls_S=true;                             
     }

Ich habe schon alle möglichen Lösungen ausprobiert, aber es funktioniert nicht. Bitte sagen Sie mir, wo der Fehler liegt.

Dateien:
 

Guten Tag.

Helfen Sie mir, den Eröffnungskurs des ersten Balkens am Dienstag zu finden und ihn zu fixieren, damit ich die ganze Woche über damit rechnen kann.

Ich danke Ihnen.

 

Hallo, ich wäre dankbar, wenn mir jemand sagen könnte, was ich hier einfügen muss, damit der EA aufhört, schwebende Aufträge zu öffnen, nachdem sie ausgelöst wurden.

//+------------------------------------------------------------------+
//| Copyright © 2014, Khlystov Vladimir |
//| http://cmillion.narod.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2014, cmillion@narod.ru"
#property link "http://cmillion.ru"
#Eigenschaft streng
#property description "Der Expert Advisor handelt auf Marktschwankungen, ohne irgendwelche Indikatoren zu verwenden."
#property description "Die Idee des Expert Advisors besteht darin, dass Stop-Orders zeitlich diskret in einem bestimmten Abstand zum aktuellen Kurs verschoben werden."
#property description "Wenn sich der Preis stark genug in eine Richtung bewegt hat, hat der EA einfach keine Zeit mehr, die Order zu verschieben und sie wird zu einer Marktorder."
#property description "Dann wird ein Rückrufauftrag ausgelöst."
//--------------------------------------------------------------------
extern int Stoploss = 10; // Stoploss, falls 0, bleibt unverändert
Takeprofit = 50; //Takeprofit, falls 0, bleibt unverändert.
extern int TrailingStop = 10; //Tramp-Länge, wenn 0, dann kein Trailing-Stop
extern int TrailingStart = 0; //Wann wird ein Trall aktiviert, z.B. wenn er 40 Punkte Gewinn erreicht hat
extern int StepTrall = 2; //Tramp-Schritt - StopLoss nicht näher als StepTrall bewegen
extern int NoLoss = 0, //Übertragung zum Breakeven bei einer bestimmten Anzahl von Gewinnpunkten, wenn 0, dann keine Übertragung zum Breakeven
MinProfitNoLoss = 0; //Mindestgewinn für die Umstellung auf verlustfrei.
extern int Magie = 77; //Magie
extern int Step = 10; //Abstand zum Preis
extern double Lot = 0.1;
extern intern TimeModify = 30; //die Anzahl der Sekunden, vor der ein Auftrag nicht geändert werden darf
extern int slippage = 30; //maximal zulässige Preisabweichung für Marktaufträge (Kauf- und Verkaufsaufträge).
//--------------------------------------------------------------------
datetime TimeBarB,TimeBarS;
//--------------------------------------------------------------------
int start()
{
double STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);
double OSL=0,StLo=0,PriceB=0,PriceS=0,OOP=0,SL=0,TP=0;
int b=0,s=0,TicketB=0,TicketS=0,OT;
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()==Symbol() && Magic==OrderMagicNumber())
{
OT = OrderType();
OSL = NormalizeDouble(OrderStopLoss(),Digits);
OOP = NormalizeDouble(OrderOpenPrice(),Digits);
SL=OSL;
wenn (OT==OP_BUY)
{
b++;
wenn (OSL<OOP && NoLoss!=0)
{
StLo = NormalizeDouble(OOP+MinProfitNoLoss*Point,Digits);
if (StLo > OSL && StLo <= NormalizeDouble(Bid - STOPLEVEL * Point,Digits)) SL = StLo;
}
if (TrailingStop>=STOPLEVEL && TrailingStop!=0 && (Bid - OOP)/Point >= TrailingStart)
{
StLo = NormalizeDouble(Bid - TrailingStop*Point,Digits);
if (StLo>=OOP && StLo > OSL+StepTrall*Point) SL = StLo;
}
wenn (SL > OSL)
{
if (!OrderModify(OrderTicket(),OOP,SL,TP,0,White)) Print("Error ",GetLastError(), "Order Modify Buy SL ",OSL,"->",SL);
else Print("Order Buy Modify SL ",OSL,"->",SL);
}
}
wenn (OT==OP_SELL)
{
s++;
wenn ((OSL>OOP || OSL==0) && NoLoss!=0)
{
StLo = NormalizeDouble(OOP-MinProfitNoLoss*Point,Digits);
if ((StLo < OSL || OSL==0) && StLo >= NormalizeDouble(Ask + STOPLEVEL * Point,Digits)) SL = StLo;
}
if (TrailingStop>=STOPLEVEL && TrailingStop!=0 && (OOP - Ask)/Point >= TrailingStart)
{
StLo = NormalizeDouble(Ask + TrailingStop*Point,Digits);
if (StLo<=OOP && (StLo < OSL-StepTrall*Point || OSL==0)) SL = StLo;
}
wenn ((SL < OSL || OSL==0) && SL!=0)
{
if (!OrderModify(OrderTicket(),OOP,SL,TP,0,White)) Print("Fehler ",GetLastError(), "Order Modify Sell SL ",OSL,"->",SL);
else Print("Order Sell Modify SL ",OSL,"->",SL);
}
}
if (OT==OP_BUYSTOP) {PreisB=OOP; TicketB=OrderTicket();}
if (OT==OP_SELLSTOP) {PreisS=OOP; TicketS=OrderTicket();}
}
}
}
wenn (b+TicketB==0)
{
if (Stoploss>=STOPLEVEL && Stoploss!=0) SL = NormalizeDouble(Bid - Stoploss * Point,Digits); sonst SL=0;
if (Takeprofit>=STOPLEVEL && Takeprofit!=0) TP = NormalizeDouble(Ask + Takeprofit * Point,Digits); sonst TP=0;
if (OrderSend(Symbol(),OP_BUYSTOP,Lot,NormalizeDouble(Ask+Step * Point,Digits),slippage,SL,TP, "news",Magic,0,CLR_NONE)!=-1) TimeBarB=TimeCurrent();
}
wenn (s+TicketS==0)
{
if (Stoploss>=STOPLEVEL && Stoploss!=0) SL = NormalizeDouble(Ask + Stoploss * Point,Digits); sonst SL=0;
if (Takeprofit>=STOPLEVEL && Takeprofit!=0) TP = NormalizeDouble(Bid - Takeprofit * Point,Digits); sonst TP=0;
if (OrderSend(Symbol(),OP_SELLSTOP,Lot,NormalizeDouble(Bid - Step * Point,Digits),Slippage,SL,TP, "news",Magic,0,CLR_NONE)!=-1) TimeBarS=TimeCurrent();
}
wenn (TicketB!=0)
{
if (TimeBarB<TimeCurrent()-TimeModify && MathAbs(NormalizeDouble(Ask + Step * Point,Digits)-PriceB)/Point>StepTrall)
{
if (Stoploss>=STOPLEVEL && Stoploss!=0) SL = NormalizeDouble(Bid - Stoploss * Point,Digits); sonst SL=0;
if (Takeprofit>=STOPLEVEL && Takeprofit!=0) TP = NormalizeDouble(Ask + Takeprofit * Point,Digits); sonst TP=0;
if (OrderModify(TicketB,NormalizeDouble(Ask + Step * Point,Digits),SL,TP,0,CLR_NONE)) TimeBarB=TimeCurrent();
}
}
wenn (TicketS!=0)
{
if (TimeBarS<TimeCurrent()-TimeModify && MathAbs(NormalizeDouble(Bid - Step * Point,Digits)-PriceS)/Point>StepTrall)
{
if (Stoploss>=STOPLEVEL && Stoploss!=0) SL = NormalizeDouble(Ask + Stoploss * Point,Digits); sonst SL=0;
if (Takeprofit>=STOPLEVEL && Takeprofit!=0) TP = NormalizeDouble(Bid - Takeprofit * Point,Digits); sonst TP=0;
if (OrderModify(TicketS,NormalizeDouble(Bid - Step * Point,Digits),SL,TP,0,CLR_NONE)) TimeBarS=TimeCurrent();
}
}
zurück(0);
}
//--------------------------------------------------------------------

Dateien:
 
yaaarik777:

Guten Tag.

Helfen Sie mir, den Eröffnungskurs des ersten Balkens am Dienstag zu finden und ihn so festzulegen, dass ich die ganze Woche damit rechnen kann.

Ich danke Ihnen.

if (DayOfWeek() == 1) Kurs = iOpen(Symbol(), PERIOD_D1, 4);
if (DayOfWeek() >= 2) Kurs = iOpen(Symbol(), PERIOD_D1, DayOfWeek() - 2);

 

Sieht nach MetaTrader-Störungen aus: Ist jemandem beim Versuch, einen Vorgang einzugeben, ein Hänger unterlaufen?

Hier ist ein einfacher Code

void OnInit()

{

...

Print("Außerhalb des Verfahrens");

StartBuy(Preis, Take, Stop, Lot);

...

}

void StartBuy(double Price, double Take, double Stop, double Lot)

{

Print("Innerhalb der Prozedur");

....

}

Es wird eine Zeile Außerhalb der Prozedur erzeugt und dann bleibt der Tester hängen. Was ist das?

 
A13ksandr:

Sieht nach MetaTrader-Störungen aus: Ist jemandem beim Versuch, einen Vorgang einzugeben, ein Hänger unterlaufen?

Hier ist ein einfacher Code

void OnInit()

{

...

Print("Außerhalb des Verfahrens");

StartBuy(Preis, Take, Stop, Lot);

...

}

Hören Sie auf, mit der Inite zu handeln, das ist es, was es bedeutet. Wie oft habe ich gesagt, dass inite ein Minimum an Code mit der schnellsten Beendigung der Ausführung haben muss, aber es gibt immer noch jemanden, der zu faul zum Lesen ist. Es gibt standardmäßig vordefinierte Funktionen zur Ausführung eines Programms.

Und die inite ist wie ein int, nicht eine Eingabe, mit Rückgabe des Grundes für die Beendigung, übrigens, ich empfehle, es auf diese Weise zu verwenden.

 
Scarick1:

Hallo, ich wäre dankbar, wenn mir jemand sagen könnte, was ich hier einfügen muss, damit der EA aufhört, schwebende Aufträge zu öffnen, nachdem sie ausgelöst wurden.

//+------------------------------------------------------------------+
//| Copyright © 2014, Khlystov Vladimir |
//| http://cmillion.narod.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2014, cmillion@narod.ru"
#property link "http://cmillion.ru"
#Eigenschaft streng
#property description "Der Expert Advisor handelt auf Marktschwankungen, ohne irgendwelche Indikatoren zu verwenden."
#property description "Die Idee des Expert Advisors ist, dass Stop-Orders zeitlich diskret in einem bestimmten Abstand zum aktuellen Kurs verschoben werden."
#property description "Wenn sich der Preis stark genug in eine Richtung bewegt hat, hat der EA einfach keine Zeit mehr, die Order zu verschieben und sie wird zu einer Marktorder."
#property description "Dann wird ein Rückrufauftrag ausgelöst."
//--------------------------------------------------------------------
extern int Stoploss = 10; // Stoploss, falls 0, bleibt unverändert
Takeprofit = 50; //Takeprofit, falls 0, bleibt unverändert.
extern int TrailingStop = 10; //Tramp-Länge, wenn 0, dann kein Trailing-Stop
extern int TrailingStart = 0; //Wann soll der Trall einbezogen werden, z.B. nach Erreichen von 40 pprofit.
extern int StepTrall = 2; //Trampelschritt - StopLoss nicht näher als StepTrall verschieben
extern int NoLoss = 0, //Übertragung zum Breakeven bei einer bestimmten Anzahl von Gewinnpunkten, wenn 0, dann keine Übertragung zum Breakeven
MinProfitNoLoss = 0; //Mindestgewinn für die Umstellung auf verlustfrei.
extern int Magie = 77; //Magie
extern int Step = 10; //Abstand zum Preis
extern double Lot = 0.1;
extern intern TimeModify = 30; //die Anzahl der Sekunden, vor der ein Auftrag nicht geändert werden darf
extern int slippage = 30; //maximal zulässige Preisabweichung für Marktaufträge (Kauf- und Verkaufsaufträge).
//--------------------------------------------------------------------

datetime TimeBarB,TimeBarS;

TradingAllowed = true;

//--------------------------------------------------------------------
int start()
{
double STOPLEVEL=MarketInfo(Symbol(),MODE_STOPLEVEL);
double OSL=0,StLo=0,PriceB=0,PriceS=0,OOP=0,SL=0,TP=0;
int b=0,s=0,TicketB=0,TicketS=0,OT;
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if (OrderSymbol()==Symbol() && Magic==OrderMagicNumber())
{
OT = OrderType();
OSL = NormalizeDouble(OrderStopLoss(),Digits);
OOP = NormalizeDouble(OrderOpenPrice(),Digits);
SL=OSL;
wenn (OT==OP_BUY)

{

b++;

TradingAllowed = false;

wenn (OSL<OOP && NoLoss!=0)
{
StLo = NormalizeDouble(OOP+MinProfitNoLoss*Point,Digits);
if (StLo > OSL && StLo <= NormalizeDouble(Bid - STOPLEVEL * Point,Digits)) SL = StLo;
}
if (TrailingStop>=STOPLEVEL && TrailingStop!=0 && (Bid - OOP)/Point >= TrailingStart)
{
StLo = NormalizeDouble(Bid - TrailingStop*Point,Digits);
if (StLo>=OOP && StLo > OSL+StepTrall*Point) SL = StLo;
}
wenn (SL > OSL)
{
if (!OrderModify(OrderTicket(),OOP,SL,TP,0,White)) Print("Error ",GetLastError(), "Order Modify Buy SL ",OSL,"->",SL);
else Print("Order Buy Modify SL ",OSL,"->",SL);
}
}
wenn (OT==OP_SELL)
{

s++;

TradingAllowed = false;

wenn ((OSL>OOP || OSL==0) && NoLoss!=0)
{
StLo = NormalizeDouble(OOP-MinProfitNoLoss*Point,Digits);
if ((StLo < OSL || OSL==0) && StLo >= NormalizeDouble(Ask + STOPLEVEL * Point,Digits)) SL = StLo;
}
if (TrailingStop>=STOPLEVEL && TrailingStop!=0 && (OOP - Ask)/Point >= TrailingStart)
{
StLo = NormalizeDouble(Ask + TrailingStop*Point,Digits);
if (StLo<=OOP && (StLo < OSL-StepTrall*Point || OSL==0)) SL = StLo;
}
wenn ((SL < OSL || OSL==0) && SL!=0)
{
if (!OrderModify(OrderTicket(),OOP,SL,TP,0,White)) Print("Fehler ",GetLastError(), "Order Modify Sell SL ",OSL,"->",SL);
else Print("Order Sell Modify SL ",OSL,"->",SL);
}
}
if (OT==OP_BUYSTOP) {PreisB=OOP; TicketB=OrderTicket();}
if (OT==OP_SELLSTOP) {PreisS=OOP; TicketS=OrderTicket();}
}
}

}

if (b == 0 && s == 0) TradingAllowed = true;

if (b+TicketB==0 && TradingAllowed)
{
if (Stoploss>=STOPLEVEL && Stoploss!=0) SL = NormalizeDouble(Bid - Stoploss * Point,Digits); sonst SL=0;
if (Takeprofit>=STOPLEVEL && Takeprofit!=0) TP = NormalizeDouble(Ask + Takeprofit * Point,Digits); sonst TP=0;
if (OrderSend(Symbol(),OP_BUYSTOP,Lot,NormalizeDouble(Ask+Step * Point,Digits),slippage,SL,TP, "news",Magic,0,CLR_NONE)!=-1) TimeBarB=TimeCurrent();
}
if (s+TicketS==0 && TradingAllowed)
{
if (Stoploss>=STOPLEVEL && Stoploss!=0) SL = NormalizeDouble(Ask + Stoploss * Point,Digits); sonst SL=0;
if (Takeprofit>=STOPLEVEL && Takeprofit!=0) TP = NormalizeDouble(Bid - Takeprofit * Point,Digits); sonst TP=0;
if (OrderSend(Symbol(),OP_SELLSTOP,Lot,NormalizeDouble(Bid - Step * Point,Digits),Slippage,SL,TP, "news",Magic,0,CLR_NONE)!=-1) TimeBarS=TimeCurrent();
}
wenn (TicketB!=0)
{
if (TimeBarB<TimeCurrent()-TimeModify && MathAbs(NormalizeDouble(Ask + Step * Point,Digits)-PriceB)/Point>StepTrall)
{
if (Stoploss>=STOPLEVEL && Stoploss!=0) SL = NormalizeDouble(Bid - Stoploss * Point,Digits); sonst SL=0;
if (Takeprofit>=STOPLEVEL && Takeprofit!=0) TP = NormalizeDouble(Ask + Takeprofit * Point,Digits); sonst TP=0;
if (OrderModify(TicketB,NormalizeDouble(Ask + Step * Point,Digits),SL,TP,0,CLR_NONE)) TimeBarB=TimeCurrent();
}
}
wenn (TicketS!=0)
{
if (TimeBarS<TimeCurrent()-TimeModify && MathAbs(NormalizeDouble(Bid - Step * Point,Digits)-PriceS)/Point>StepTrall)
{
if (Stoploss>=STOPLEVEL && Stoploss!=0) SL = NormalizeDouble(Ask + Stoploss * Point,Digits); sonst SL=0;
if (Takeprofit>=STOPLEVEL && Takeprofit!=0) TP = NormalizeDouble(Bid - Takeprofit * Point,Digits); sonst TP=0;
if (OrderModify(TicketS,NormalizeDouble(Bid - Step * Point,Digits),SL,TP,0,CLR_NONE)) TimeBarS=TimeCurrent();
}
}
zurück(0);
}
//--------------------------------------------------------------------

Irgendwie...


 
evillive:

Отставить торговать в ините, вот что значит. Сколько уже повторяли что в ините должен быть минимум кода с максимально быстрым завершением исполнения, всё равно найдется кто-нибудь, кому лень читать. Есть же стандартные предопределенные функции для работы программы.

Да и инит типа инт, а не войд, с возвратом причины прекращения работы, между прочим, рекомендую так им и пользоваться. 

Entschuldigung! Natürlich geschieht alles in void OnTick(). Ich habe mich selbst geschrieben)
Grund der Beschwerde: