Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 707

 
Roman Shiredchenko:

es ist kein Witz und ich mache mich nicht darüber lustig.

Sehen Sie sich das Bild genau an, bevor Sie Ketzerei verbreiten.

Das Thema ist so banal, dass es eklig ist, es zu lesen... ...dann fehlt das Bildmaterial, dann die Optimierung...

Erweitern Sie das Fenster und Sie werden zufrieden sein. Verwechseln Sie nicht das zu erweiternde Fenster.

 
ilvic:

Das Problem ist die Bildschirmauflösung.

Vielen Dank, ich habe angefangen zu raten, indem ich mir die Bilder angesehen habe...

 
ilvic:

Das Problem ist die Bildschirmauflösung.

Nochmals vielen Dank. Alles funktioniert, das Problem lag in der Anzeige der Textgröße (Schriftart)


 
Guten Tag, Hilfe finden Sie einen Fehler in den Code für den Indikator, Kommentare sind in den Code, blau will nicht zeichnen, wie ich schreiben möchte. Idee, den kleinsten Low-Wert in der Zeitspanne von der letzten Aktualisierung bis zur letzten Aktualisierung zu finden High green line. Danke.
{

if(prev_calculated<1) limit=rates_total-1;
if(prev_calculated>0)limit=rates_total-prev_calculated;
for(i=limit; i>=0; i--)
{
yesterday_weekday = TimeDayOfWeek(iTime(Symbol(),0,i+1))-TimeDayOfWeek(iTime(Symbol(),0,i));
if (yesterday_weekday !=0) // находим открытие нового дня
{

BH=open[i];BL=open[i]; // переменные ХАЙ ЛОУ  
Closebar=open[i]; // искомая переменная 
NHT=time[i]; // переменная время последнего обновления ХАЙ
PHT=time[i]; // переменная время предпоследнего обновления хай
}
CloseD[i]=Closebar; // буфер отрисовки искомая переменная СИНИЙ ЦВЕТ
HD[i]=BH;  // буфер отрисовки ХАЙ
LD[i]=BL; // буфер отрисовки ЛОУ

if (Fun_New_Bar==false)  // находим закрытие бара                             
    {                                             
     if (Prev_Time==0) 
     {
        Prev_Time=time[i];
        Fun_New_Bar=false;
     }
   if(Prev_Time!=time[i])                        
     {
      Prev_Time=time[i];

if(iHigh(NULL,0,i+1)>BH) // проверяем есть ли обновление Хай
{
C=PHT; // присвоим переменной время предыдущего бара обновления Хай 
NHT=iTime(NULL,0,i+1); // находим время обновления Хай
Pshift=iBarShift(NULL,0,C); // находим индекс бара предыдущего обновления Хай 
P=iLow(NULL,0,iLowest(NULL,0,MODE_LOW,Pshift,i+1)); // находим наименьшее значение Лоу от обновления Хай настоящего до предыдущего (искомая величина) 
BH=iHigh(NULL,0,i+1); // прорисовываем Хай новый
Closebar=P; // прорисовываем искомую величину 
PHT=NHT; // сохраняем время последнего обновления Хай
} 
     
                             
      Fun_New_Bar=false; // ждем закрытие нового бара                           
     }
     }

Comment( NHT, C , Pshift ); // проверка

if(low[i]<BL)  BL=low[i]; // в процессе

}
   return(rates_total);
  }


 
Guten Tag! Hilfe zum EA! Ich muss einen normalen Trailing-Stop machen, der schrittweise arbeitet und den SL zum Breakeven bewegt!!! D.h.: Eine Order wird eröffnet und nach 25 (bildlich gesprochen) Punkten in die richtige Richtung, wird SLsofort aufden Eröffnungskurs gesetzt!

Ich habe diesen Code, aber er folgt dem Kurs und stoppt beim Eröffnungskurs!


bool tkt;
  for (int i = 0; i < OrdersTotal(); i++) 
  {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      {
      if (OrderType() == OP_BUY)
      {
      if(NormalizeDouble(OrderStopLoss(), Digits) < NormalizeDouble(OrderOpenPrice(), Digits) && 
      NormalizeDouble(Ask - OrderStopLoss(), Digits) > NormalizeDouble(TrailingStop * Point, Digits))
      tkt = OrderModify(OrderTicket(), 0, Ask - TrailingStop * Point, OrderTakeProfit(), OrderExpiration(), clrNONE);
      Print("Error setting Buy trailing stop: ", GetLastError());
      }
         
      if (OrderType() == OP_SELL)
      {
      if(NormalizeDouble(OrderStopLoss(),Digits) > NormalizeDouble(OrderOpenPrice(), Digits) && 
      NormalizeDouble(OrderStopLoss() - Bid, Digits) > NormalizeDouble(TrailingStop * Point, Digits))
      tkt = OrderModify(OrderTicket(), 0, Bid + TrailingStop * Point, OrderTakeProfit(), OrderExpiration(), clrNONE);
      Print("Error setting Sell trailing stop: ", GetLastError());
      }  
           }
   } 
Ich habe meinen Kopf seit einer Woche gegen die Wand geschlagen!
 
ponochka:
Guten Tag! Hilfe zum EA! Ich muss einen normalen Trailing-Stop machen, der schrittweise arbeitet und den SL zum Breakeven bewegt!!! D.h.: Eine Order wird eröffnet und nach 25 (bildlich gesprochen) Punkten in die richtige Richtung, wird SLsofort aufden Eröffnungskurs gesetzt!

Ich habe diesen Code, aber er folgt dem Kurs und stoppt beim Eröffnungskurs!


Ich habe meinen Kopf seit einer Woche gegen die Wand geschlagen!

Bitte, ich habe für mich selbst geschrieben und benutze sie auch.

//======= Глобальные переменные

extern bool   UseBreakeven       = true;          //Использование безубытка
extern int    Breakeven          = 20;            //Профит безубытка
extern int    ValueBreak         = 3;             //Безубыток
extern bool   UseTrailingStop    = true;          //использование трейлинг стопа
extern int    TrailingStop       = 40;            //Величина трала
extern int    TrailingStep       = 3;             //Шиг трала 

double SL, TP;

//нннннннннннн Функция перевода в безубыток нннннннннннннннннннннннннннннннннннннннннннн
void BreakevenModify()
{ 
   int    i;
   double sl;
   
   int total = OrdersTotal();
   
   if(UseBreakeven)
   {
      for(i = total-1; i >= 0; i--)
      {
         if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
         { 
            if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) 
            {
               if(OrderType() == OP_BUY)
               {
                  if(OrderStopLoss() < OrderOpenPrice() && (OrderOpenPrice() + Breakeven*point) <= Bid)
                  {   
                     sl = NormalizeDouble(OrderOpenPrice() + ValueBreak*point, Digits);
                     
                     OrderModifyX(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0, 0);
                  } 
               }
            }
         }
      
         if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
         { 
            if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) 
            { 
               if(OrderType() == OP_SELL)
               {
                  if(OrderStopLoss() > OrderOpenPrice() && (OrderOpenPrice() - Breakeven*point) >= Ask)
                  { 
                     sl = NormalizeDouble(OrderOpenPrice() - ValueBreak*point, Digits);
                     
                     OrderModifyX(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0, 0);
                  } 
               }
            }
         }
      }
   }
}
//нннннннннннн Функция трейлинг стопа ннннннннннннннннннннннннннннннннннннннннннннннннннннн
void TrailingStopLoss()
{   
   int    i;
   double sl;
   
   int total = OrdersTotal();
   
   if(UseTrailingStop)
   {
      for(i = total-1; i >= 0; i--)
      {
         if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
         {
            if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
            {
               if(OrderType() == OP_BUY) 
               {
                  if((OrderOpenPrice() + TakeProfit3*point) <= Bid)
                  {
                     if(OrderStopLoss() > OrderOpenPrice() && OrderStopLoss() + (TrailingStop + TrailingStep)*point <= Bid)
                     {
                        sl = NormalizeDouble(OrderStopLoss() + TrailingStep*point, Digits);
                        
                        OrderModifyX(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0, 0);
                     } 
                  }  
               }
            }
         }
      
         if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
         {
            if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
            {     
               if(OrderType() == OP_SELL)
               {
                  if((OrderOpenPrice() - TakeProfit3*point) >= Ask)
                  {
                     if(OrderStopLoss() < OrderOpenPrice() && OrderStopLoss() - (TrailingStop + TrailingStep)*point >= Ask)
                     {
                        sl = NormalizeDouble(OrderStopLoss() - TrailingStep*point, Digits);
                        
                        OrderModifyX(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0, 0);
                     } 
                  }  
               } 
            }
         }
      }
   }
}


Ich habe sie für mich selbst geschrieben und verwende sie.

 
Youri Lazurenko:

Bitte, ich habe es für mich selbst geschrieben und verwende es für mich selbst.

dies ist nur für Tester :-)

Im wirklichen Leben ist es sehr gefährlich, die Schleppnetzfischerei auf der Grundlage von Bid, Ask

 
Rustam Bikbulatov:
Hallo Leute. Können Sie mir bitte sagen, warum ich ein paar Dutzend Aufträge habe, die in gestaffelter Reihenfolge oder anders abgeschlossen werden? Wie soll ich es reparieren? Gibt es eine Methode, um sie alle auf einmal zu schließen?

Schließen Sie am Ende, nicht am Anfang.

for(int i=OrdersTotal()-1; i>=0; i--)
Oder muss ich meine eigene Liste erstellen und sie für den Abschluss verwenden?
 
Taras Slobodyanik:

am Ende schließen, nicht am Anfang

oder erstellen Sie Ihre eigene Liste und verwenden sie zum Abschluss?

Wie erstellt man eine Liste?

 
Hallo Leute. Können Sie mir bitte sagen, warum ich einige Dutzend Aufträge habe, die in gestaffelter Reihenfolge oder überhaupt nicht geschlossen werden? Wie kann ich es reparieren? Gibt es eine Methode, um sie alle auf einmal zu schließen?
void CloseOrdB(){  
     for(int i=0;i<OrdersTotal();i++){
     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
     if(OrderSymbol()==Symbol() && OrderMagicNumber()==456){    
if(OrderClose(OrderTicket(),OrderLots(),Bid,3,clrBlue)){CloseOrdB();}}}} }
Grund der Beschwerde: