[ARCHIV!] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen - 4. - Seite 68

 
Stells:

Guten Tag.

Frage, wie zu testen oder wessen Ergebnisse sind zuverlässiger?

Im Expert Advisor ist der H1-Zeitraum überall klar vorgeschrieben.

Ich teste auf m1 bei Eröffnung - klarer Verlust.

Ich habe es auf H1 getestet, wobei alle Ticks nach oben gingen.

Das Problem ist, dass die Haltestellen klein sind - nur ein paar Punkte. Die Profite sind groß.

Wenn der EA eine explizite Kontrolle über die Öffnung eines neuen Balkens hat und nur funktioniert, wenn ein neuer Balken geöffnet wird, dann können Sie die Öffnung eines neuen Balkens testen. Ansonsten nur Zecken. Außerdem sind die Stopps klein und werden bei der Eröffnung eines neuen Balkens natürlich weggeblasen, denn auf M1 kann ein Balken Ihren Stopp innerhalb einer Minute um einige Pips einholen. Testen Sie alle Zecken auf M1.
 
artmedia70:
Wenn der EA eine explizite Kontrolle über die Öffnung eines neuen Balkens hat und nur funktioniert, wenn ein neuer Balken geöffnet wird, dann können Sie die Öffnung eines neuen Balkens testen. Ansonsten nur Zecken. Außerdem sind die Stopps klein und werden bei der Eröffnung eines neuen Balkens natürlich weggeblasen, denn auf M1 kann ein Balken Ihren Stopp innerhalb einer Minute um einige Pips einholen. Testen Sie alle Zecken auf M1.

Wie werden sich (theoretisch) alle Ticks von H1 unterscheiden?
 

Hallo! Bitte helfen Sie mir, den Code zu verstehen, was ich falsch mache. Ich bin neu in der Programmierung. Ich habe mein mql4-Tutorial gelesen und eine Menge Expert Advisor-Codes durchgesehen, aber ich kann immer noch keine Antworten auf meine Fragen finden. Ich habe ein Terminal mit 5 Ziffern, ECN-Konto, variablem Spread + Kommission. Der Expert Advisor ist am einfachsten. Er eröffnet einen Verkaufsauftrag, wenn der schnelle МА den langsamen МА von oben nach unten kreuzt und umgekehrt, wenn der schnelle МА den langsamen МА von unten nach oben kreuzt. Tatsächlich ist der TS viel komplexer, ich habe nur noch nicht alle grundlegenden Funktionen, die richtig funktionieren, und kann ihn nicht richtig testen, geschweige denn optimieren, ich habe beschlossen, den Code nicht mit überflüssigen Berechnungen zu verkomplizieren. Hier ist der Code des Expert Advisors selbst.

#define MAGICMA  20050610
extern string text1              ="===========================MoneyManagment===========================";
extern double Lots               = 0.1;
extern string text2              ="======================Simple_Close_settings=========================";
extern double TakeProfit         = 100;
extern double StopLoss           = 100;
extern double Bezubitok          = 30; //Расстояние, через которое пройдёт цена от открытия сделки в "+", чтобы перенести СтопЛос в безубыток
extern string text3              = "===================TrailingStopLoss_settings=======================";
extern double Trailing           = 100; //Расстояние, через которое будет подтягиватся СтопЛос к текущей цене
extern double Slippage           = 3; // Допуск проскальзования цены при открытии и закрытии сделок
extern string text4              = "===================Indicator_Trade_System_settings=================";
extern int    Fast_EMA_Period    = 8;
extern int    Slow_EMA_Period    = 21;




//+------------------------------------------------------------------+
//| Calculate open positions                                         |
//+------------------------------------------------------------------+
int CalculateCurrentOrders(string symbol)
  {
   int 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);
  }

//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
int CheckForOpen()
  {
   double X1,X2,X3,X4;
   int ticket;

   
   X1=iMA(NULL,0,Fast_EMA_Period,0,MODE_EMA,PRICE_CLOSE,1);
   X2=iMA(NULL,0,Slow_EMA_Period,0,MODE_EMA,PRICE_CLOSE,1);
   X3=iMA(NULL,0,Fast_EMA_Period,0,MODE_EMA,PRICE_CLOSE,2);
   X4=iMA(NULL,0,Slow_EMA_Period,0,MODE_EMA,PRICE_CLOSE,2);
//----
if(Volume[0]>1) return;
  {   
      //ENTRY Ask(buy, long) 
      if (X3<=X4 && X1>X2)
        {
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,",",MAGICMA,0,White);
        }
      //ENTRY Bid (sell, short)
      if (X3>=X4 && X1<X2)
        {
         ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,",",MAGICMA,0,Red);
        }
  }
//----
  }
//+------------------------------------------------------------------+
//| Check for TrailingStop                                           |
//+------------------------------------------------------------------+
void CheckForTrailing()
 {

     if (Trailing>0) for(int i=0; i<=OrdersTotal();i++) 
     {
         OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
           if (OrderMagicNumber()==MAGICMA && OrderSymbol()==Symbol()) 
           {
            if (OrderType()==OP_BUY && Bid-OrderOpenPrice()>Trailing*Point && Bid-OrderStopLoss()>Trailing*Point)
            OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Trailing*Point,OrderTakeProfit(),0,CLR_NONE);
            if (OrderType()==OP_SELL && OrderOpenPrice()-Ask>Trailing*Point && OrderStopLoss()-Ask>Trailing*Point)
            OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Trailing*Point,OrderTakeProfit(),0,CLR_NONE);
           }
        }
}
//+------------------------------------------------------------------+
//| Check for close order conditions                                 |
//+------------------------------------------------------------------+
void CheckForClose()
  {
   double X1,X2,X3,X4;
//---- go trading only for first tiks of new bar
   if(Volume[0]>1) return;
//---- get Moving Average 
   X1=iMA(NULL,0,Fast_EMA_Period,0,MODE_EMA,PRICE_CLOSE,1);
   X2=iMA(NULL,0,Slow_EMA_Period,0,MODE_EMA,PRICE_CLOSE,1);
   X3=iMA(NULL,0,Fast_EMA_Period,0,MODE_EMA,PRICE_CLOSE,2);
   X4=iMA(NULL,0,Slow_EMA_Period,0,MODE_EMA,PRICE_CLOSE,2);
//----
   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(Bid>=(OrderOpenPrice()+TakeProfit*Point)||Bid<=(OrderOpenPrice()-StopLoss*Point))OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
         break;
        }
        
      if(OrderType()==OP_SELL)
        {
         if(Ask<=(OrderOpenPrice()-TakeProfit*Point)||Ask>=(OrderOpenPrice()+StopLoss*Point)) OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
         break;
        }
     }
//----
  }



//+------------------------------------------------------------------+
//| Start function                                                   |
//+------------------------------------------------------------------+
void start()
  {
   if(Bars<25 || IsTradeAllowed()==false) 
     return (0);
   if (AccountFreeMargin()<(100*Point*Lots))
     {
      Print("Стоп! Недостаточно средств для продолжения торговли. Свободная маржа = ", AccountFreeMargin());
      return(0);  
     }
      
   if(Trailing>0) CheckForTrailing();  
     
      
//---- calculate open orders by current symbol
   if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
   else                                    CheckForClose();
   
 
   

   return(0);
  }
//+------------------------------------------------------------------+

Vielleicht kann jemand meine Fragen beantworten:

1. Wenn ich einen Auftrag eröffne, behalte ich Nullen in OrderSend, wo die Parameter Stopplos und TakeProfit sein sollten; bei einem Versuch, andere Zahlen dort zu setzen, öffnet der Experte keine Geschäfte; ich habe geprüft, ob ich manuell ein Geschäft öffnen und sofort SL und TP setzen kann, was kann das Problem sein?

2. Ich verstehe nicht, warum ich TP, SL und TS von 100 Pips gesetzt habe, obwohl die Trades nicht um ein Vielfaches dieser Pips geschlossen werden, selbst wenn man den Spread berücksichtigt. Vielleicht funktioniert meine Funktion zum Schließen der Bestellung nicht? Wie kann ich den Verlust in diesem Fall begrenzen, ursprünglich SL gesetzt, und wie bekomme ich es zu folgen Preis nur in + Richtung?

3. Mein Brokerage-Unternehmen hat Stop-Level=100 Pips, wie kann ich virtuelle TP und SL, so dass ich Ebenen niedriger als die Stop-Level, wie bei der manuellen Schließung von Positionen setzen könnte? (Pips auf Ecn-Konten sind nicht verboten).

4. Ist es möglich, das Folgende zu tun, und wenn es möglich ist: eine umgekehrte schließen und gleichzeitig schließen durch die SL und TP mit einer Übertragung auf Breakeven (je nachdem, welches Ereignis zuerst eintritt)? Ich habe es versucht, aber im Tester wird eine Position geöffnet und bis zum Ende des Tests nicht wieder geschlossen, sondern nur Vertauschungen gesammelt). Beides funktioniert.

Vielen Dank im Voraus an alle, die antworten werden!

Dateien:
 

Guten Tag ...

Nur eine Frage

Nehmen wir ein Fraktal auf Daily... Wie findet man den Preis, der die Bildung dieses Fraktals beendet, sagen wir auf H1 .... Es ist wünschenswert, dass auf den Preis erscheint Pfeil...

 
Cmu4:
Meine Herren, wie stellt ein EA eine Verbindung zu einem bestimmten Server und Port her? Ist das überhaupt möglich?
Sie sind also keine Experten auf diesem Gebiet?
 
Cmu4:
Meine Herren, wie stellt ein EA eine Verbindung zu einem bestimmten Server und Port her? Ist das überhaupt möglich?

Was bedeutet es, eine Verbindung zu einem Socket herzustellen oder Informationen über http zu lesen?
 
Hallo. Ich habe eine einfache und wahrscheinlich dumme Frage. Kannein Strategietester Fehler machen...Welche Methoden haben Sie, um Ihre Strategien zu testen?..Danke.
 

Nur eine Frage

Nehmen wir ein Fraktal auf Daily... Wie findet man den Preis, der die Bildung dieses Fraktals beendet, sagen wir auf H1 .... Es ist wünschenswert, dass auf den Preis erscheint Pfeil...

 

Guten Tag!

Frage zu speziellen Funktionen: init(), start(), deinit().

Wie Sie, auch aus dem Tutorial, wissen, MÜSSEN Sie, um diese spezielle Funktion zu beenden (zu verlassen), die

Rückgabeoperator (z. B. im Bedingungsoperator IF-ELSE).

Was bedeuten dann die Rückgabewerte? Zum Beispiel: Return(0) und möglicherweise eine andere ganze Zahl (Return(1));

 

Guten Tag zusammen!

Bitte helfen Sie mir, den Indikator "FX5_Divergence_V2.1" ein wenig zu bearbeiten.

Ich arbeite mit 3 Bildschirmen. Der Indikator im Fenster wird mit seinem Namen und einigen anderen Werten angezeigt, die es schwer machen, den Indikator zu erkennen. Aufgrund dieser Zahlen kann ich die Indikatorknoten oft nicht sehen und es ist schwierig, sie zu vergleichen (auf dem Screenshot gelb eingekreist).

(Bitte helfen Sie mir, den Indikator so zu korrigieren, dass nur der Indikatorname angezeigt wird, ohne alle anderen Ziffern)

Indikator und Bildschirmfoto im Anhang.


Vielen Dank im Voraus an alle, die helfen können)


Dateien: