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

 
Николай Никитюк:
Hallo, 2020.11.15_05:51 GMT+3. Irgendetwas an meinem Strategietester in MT4 ist zu langsam. Auf einem Stundenchart von GBPUSD schien es nicht lange zu dauern, bis er drei Monate lang gut getestet wurde. Ich habe meinen Expert Advisor getestet. Und vor kurzem habe ich meinen EA auf GOLD, M15 für einen Monat der Geschichte getestet. Ich habe für die Prüfung eine Stunde und siebenundvierzig Minuten gebraucht, aber im Testgerät waren es anderthalb Tage. Was kann ich tun, damit mein Strategietester schnell arbeitet? Soll ich den Service Desk anschreiben? Wer weiß, was zu tun ist? Ich werde auf eine Antwort warten. 06:04 GMT+3. Ja, ich kann das Protokoll des MT4-Testers anhängen.

Es hängt davon ab, welcher Indikator installiert ist. Es gibt Indikatoren, die nicht nur das Testgerät verlangsamen, sondern auch den gesamten Computer zum Stillstand bringen.

 
SanAlex:

Es hängt davon ab, welcher Indikator installiert ist. Es gibt solche Indikatoren, die nicht nur das Testgerät verlangsamen, sondern auch den ganzen Computer hängen lassen.

Es wird nicht auf eine Antwort gewartet - die Zeit ist um!

Nachricht geschrieben:2020.11.15_05:51 GMT+3

Die Antwort wurde ebenfalls am 15. erwartet:"Ich werde auf eine Antwort warten. 06:04 GMT+3"

Strategietester in MT4 ist zu langsam. Auf meinem dreimonatigen Verlaufsdiagramm des GBPUSD-Stundencharts schien es nicht lange gut zu laufen. Ich habe meinen Expert Advisor getestet. Und vor kurzem habe ich meinen EA auf GOLD, M15 für einen Monat der Geschichte getestet. Ich habe für die Prüfung eine Stunde und siebenundvierzig Minuten gebraucht, aber im Testgerät waren es anderthalb Tage. Was kann ich tun, damit mein Strategietester schnell arbeitet? Soll ich den Service Desk anschreiben? Wer weiß, was zu tun ist? Ich werde auf eine Antwort warten. 06:04 GMT+3. Ja, ich kann das Protokoll des MT4-Testers anhängen.


Wenn Sie also helfen wollen, antworten Sie schnell und pünktlich!

P.S. Ich hatte keine Zeit, selbst zu antworten - ich habe verschlafen.

 
Vitaly Muzichenko:

Er wartet nicht mehr auf eine Antwort - die Zeit ist um!

Nachricht geschrieben:2020.11.15_05:51 GMT+3

Die Antwort wurde ebenfalls am 15. erwartet:"Ich werde auf eine Antwort warten. 06:04 GMT+3".


Wenn Sie also helfen wollen, antworten Sie schnell und pünktlich!

P.S. Ich selbst hatte noch keine Zeit zu antworten - ich habe verschlafen.

passiert - was der eine fragt und der andere die Antwort findet.

 
Gudgeon:
Bitte sagen Sie mir, wie ich die Kubikwurzel berechnen kann. Ausdruck MathPow(x,1/3)=1

1/3=0 daher muss einer der Werte vom Typ Double sein, d.h. 1/3.0 oder 1.0/3 oder 1.0/3.0

 
Alexey Viktorov:

1/3=0, daher muss einer der Werte in den Typ Double gesetzt werden, d.h. 1/3.0 oder 1.0/3 oder 1.0/3.0

Ich danke Ihnen!

 

Hallo.

Ich habe beschlossen, mit einem EA zu beginnen, für die erste, um es zu wiederholen, dass es einen Stop-Loss bei Breakeven setzen würde.

Ich denke, dass alles korrekt ist, es kompiliert, aber es lässt sich nicht übersetzen, bitte helfen Sie mir.

//+------------------------------------------------------------------+
//|                                               Moving Average.mq4 |
//|                   Copyright 2005-2014, MetaQuotes Software Corp. |
//|                                              http://www.mql4.com |
//+------------------------------------------------------------------+
#property copyright   "2005-2014, MetaQuotes Software Corp."
#property link        "http://www.mql4.com"
#property description "Moving Average sample expert advisor"
#property strict
//#define MAGICMA  20131111
//--- Inputs
input double Lots          = 0.1;
input double MaximumRisk   = 0.02;
input double DecreaseFactor= 3;
input int    SL            = 600;
input int    Slip          = 50;
input int    MovingPeriod  = 12;
input int    MovingShift   = 6;
//extern string Trailing_Funcion   = "Main_step_tral";
//extern bool   tral               =true;
extern int    TralStop       = 40; // Растояние в пунктах, откуда начнем тралить : если цена прошла в плюс 40 пунктов, то стоп передвинется на 5 пунктов в плюсовом поле
extern int    Tral           = 5; // Шаг трала
extern int    MAGICMA        = 12345;

//+------------------------------------------------------------------+
//| Calculate open positions                                         |
//+------------------------------------------------------------------+
int CalculateCurrentOrders(string symbol)
  {
   int buys,sells;
   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()==MAGICMA)
        {
         if(OrderType()==OP_BUY)  buys++;
         if(OrderType()==OP_SELL) sells++;
        }
     }
//--- return orders volume
   if(buys>0) return(buys);
   else       return(-sells);
  }

//+------------------------------------------------------------------+
//| Calculate optimal lot size                                       |
//+------------------------------------------------------------------+
double LotsOptimized()
  {
   double lot=Lots;
   int    orders=HistoryTotal();     // history orders total
   int    losses=0;                  // number of losses orders without a break
//--- select lot size
   lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1);
//--- calcuulate number of losses orders without a break
   if(DecreaseFactor>0)
     {
      for(int i=orders-1;i>=0;i--)
        {
         if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
           {
            Print("Error in history!");
            break;
           }
         if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL)
            continue;
         //---
         if(OrderProfit()>0) break;
         if(OrderProfit()<0) losses++;
        }
      if(losses>1)
         lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);
     }
//--- return lot size
   if(lot<0.1) lot=0.1;
   return(lot);
  }
//+------------------------------------------------------------------+
//| Функция выставления стоп лосс  в БУ                              |
//+------------------------------------------------------------------+
void T_SL()
{
int i=0;
for(i=0; i<OrdersTotal(); i++)
{
if((OrderSelect(i, SELECT_BY_POS, MODE_TRADES))) continue;
if(OrderSymbol() != Symbol()) continue;
if(OrderMagicNumber()!=MAGICMA) continue;
if(OrderType()==OP_BUY)
{
if(NormalizeDouble(Bid-OrderOpenPrice(),Digits)>NormalizeDouble(TralStop*Point,Digits))
//if(OrderOpenPrice()<=(Bid-TralStop))//&&OrderOpenPrice()>OrderStopLoss())
{      
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-Tral*Point,Digits),OrderTakeProfit(),0,Green);
}
}  
if(OrderType()==OP_SELL)
{
if(NormalizeDouble(OrderOpenPrice()-Ask,Digits)>NormalizeDouble(TralStop*Point,Digits))
//if(OrderOpenPrice()>=(Ask+TralStop))//&&OrderOpenPrice()<OrderStopLoss()) 
{
OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+Tral*Point,Digits),OrderTakeProfit(),0,Red);
}
} 
}
}
//| Конец функции тралл стоп лосс |  
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void CheckForOpen()
  {
   double ma;
   int    res;
//--- go trading only for first tiks of new bar
   if(Volume[0]>1) return;
//--- get Moving Average 
   ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
//--- sell conditions
   if(Open[1]>ma && Close[1]<ma)
     {
      res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,Slip,NormalizeDouble(Bid+SL*Point,Digits),0,"",MAGICMA,0,clrDarkRed);
      return;
     }
//--- buy conditions
   if(Open[1]<ma && Close[1]>ma)
     {
      res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,Slip,NormalizeDouble(Ask-SL*Point,Digits),0,"",MAGICMA,0,clrDarkGreen);
      return;
     }
//---
  }
//+------------------------------------------------------------------+
//| Check for close order conditions                                 |
//+------------------------------------------------------------------+
void CheckForClose()
  {
   double ma;
//--- go trading only for first tiks of new bar
   if(Volume[0]>1) return;
//--- get Moving Average 
   ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
//---
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue;
      //--- check order type 
      if(OrderType()==OP_BUY)
        {
         if(Open[1]>ma && Close[1]<ma)
           {
            if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,White))
               Print("OrderClose error ",GetLastError());
           }
         break;
        }
      if(OrderType()==OP_SELL)
        {
         if(Open[1]<ma && Close[1]>ma)
           {
            if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,White))
               Print("OrderClose error ",GetLastError());
           }
         break;
        }
     }
//---
  }
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- check for start trall
   if (TralStop!=0) T_SL();
 //  if(tral){T_SL();}  // это строка запуска тралла
//--- check for history and trading
   if(Bars<100 || IsTradeAllowed()==false)
      return;
//--- calculate open orders by current symbol
   if(CalculateCurrentOrders( Symbol())==0) CheckForOpen();
   else                                  CheckForClose();
//---
  }
//+------------------------------------------------------------------+
 



double   Fibo_Level= ObjectGetDouble(
                       0,          // идентификатор графика
                       n,              // имя объекта
                       OBJPROP_LEVELVALUE,           // идентификатор свойства
                       4     // модификатор свойства
                    );

Hallo!!! Können Sie mir sagen, wie man den Preis von 61,8 Fibonacci-Level zu bekommen?

Warum gibt es eine Funktion, dieeine Beschreibung der Fibonacci-Ebene des Objekts zurückgibt? Wenn diese Beschreibung keinen Bezug zum Preis hat, wie kann sie dann in der Praxis verwendet werden?)


Müsste der Preis auf der Grundlage der Entfernung zwischen den Ankerpunkten selbst berechnet werden?

Документация по MQL5: Операции с графиками / ChartID
Документация по MQL5: Операции с графиками / ChartID
  • www.mql5.com
ChartID - Операции с графиками - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Kira27:

Hallo!!! Können Sie mir sagen, wie man den Preis von 61,8 Fibonacci-Level zu bekommen?

Warum gibt es eine Funktion, dieeine Beschreibung der Fibonacci-Ebene des Objekts zurückgibt? Wenn diese Beschreibung keinen Bezug zum Preis hat, wie kann sie dann in der Praxis verwendet werden?)


Müsste der Preis selbst durch den Abstand zwischen den Ankerpunkten berechnet werden???

Zwischen den Preisen der Objektkoordinaten ist 100%. Das 61,8er-Niveau ist der Preis der Stufe 0 plus 61,8 %. Es handelt sich hierbei nicht um einen Vorgang zur Erstellung von Diagrammen.

 
Alexey Viktorov:

Die Preise zwischen den Objektkoordinaten betragen 100%. Das 61,8er-Niveau ist der Preis der Stufe 0 plus 61,8 %. Es handelt sich nicht um eine Kartenoperation.

Danke!!! Das habe ich mir auch gedacht.

 

Hallo. Die Funktion MarketInfo() wird in mql4 verwendet, um die aktuellen Marktinformationen zu erhalten. Welche Funktion sollte ich verwenden, um MODE_LOTSIZE, MODE_TICKVALUE und MODE_TICKSIZE nicht für den aktuellen Momentzu erhalten, aber nach schließen Preise von Bars in der Geschichte?

Grund der Beschwerde: