[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 282

 
Können Sie mir sagen, welche? Ich habe nur zwei. MACD und gleitende Durchschnitte.
 

Bitte helfen Sie einem Anfänger. Wie man diesen Codeabschnitt schreibt:

Prüfen Sie die Marktaufträge, und wenn es keine Marktaufträge für unser Finanzinstrument gibt, kaufen wir es?

Außerdem benötigen wir eine Code-Zeile, die den Trailing-Stop 500 Pips vom realen Preis entfernt anordnet.

Hilfe!!!

Und wie groß ist die Entfernung (von wo und wohin genau)?

//+------------------------------------------------------------------+
//|                                                  MACD Sample.mq4 |
//|                      Copyright © 2005, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+

extern double TakeProfit = 50;
extern double Lots = 0.1;
extern double TrailingStop = 30;
extern double MACDOpenLevel=3;
extern double MACDCloseLevel=2;
extern double MATrendPeriod=26;

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   double MacdCurrent, MacdPrevious, SignalCurrent;
   double SignalPrevious, MaCurrent, MaPrevious;
   int cnt, ticket, total;
// initial data checks
// it is important to make sure that the expert works with a normal
// chart and the user did not make any mistakes setting external 
// variables (Lots, StopLoss, TakeProfit, 
// TrailingStop) in our case, we check TakeProfit
// on a chart of less than 100 bars
   if(Bars<100)
     {
      Print("bars less than 100");
      return(0);  
     }
   if(TakeProfit<10)
     {
      Print("TakeProfit less than 10");
      return(0);  // check TakeProfit
     }
// to simplify the coding and speed up access
// data are put into internal variables
   MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
   MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
   SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
   SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
   MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,0);
   MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,1);

   total=OrdersTotal();
   if(total<1) 
     {
      // no opened orders identified
      if(AccountFreeMargin()<(1000*Lots))
        {
         Print("We have no money. Free Margin = ", AccountFreeMargin());
         return(0);  
        }
      // check for long position (BUY) possibility
      if(MacdCurrent<0 && MacdCurrent>SignalCurrent && MacdPrevious<SignalPrevious &&
         MathAbs(MacdCurrent)>(MACDOpenLevel*Point) && MaCurrent>MaPrevious)
        {
         ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,"macd sample",16384,0,Green);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
           }
         else Print("Error opening BUY order : ",GetLastError()); 
         return(0); 
        }
      // check for short position (SELL) possibility
      if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious && 
         MacdCurrent>(MACDOpenLevel*Point) && MaCurrent<MaPrevious)
        {
         ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,"macd sample",16384,0,Red);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
           }
         else Print("Error opening SELL order : ",GetLastError()); 
         return(0); 
        }
      return(0);
     }
   // it is important to enter the market correctly, 
   // but it is more important to exit it correctly...   
   for(cnt=0;cnt<total;cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if(OrderType()<=OP_SELL &&   // check for opened position 
         OrderSymbol()==Symbol())  // check for symbol
        {
         if(OrderType()==OP_BUY)   // long position is opened
           {
            // should it be closed?
            if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious &&
               MacdCurrent>(MACDCloseLevel*Point))
                {
                 OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // close position
                 return(0); // exit
                }
            // check for trailing stop
            if(TrailingStop>0)  
              {                 
               if(Bid-OrderOpenPrice()>Point*TrailingStop)
                 {
                  if(OrderStopLoss()<Bid-Point*TrailingStop)
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
                     return(0);
                    }
                 }
              }
           }
         else // go to short position
           {
            // should it be closed?
            if(MacdCurrent<0 && MacdCurrent>SignalCurrent &&
               MacdPrevious<SignalPrevious && MathAbs(MacdCurrent)>(MACDCloseLevel*Point))
              {
               OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // close position
               return(0); // exit
              }
            // check for trailing stop
            if(TrailingStop>0)  
              {                 
               if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
                 {
                  if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
                    {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
                     return(0);
                    }
                 }
              }
           }
        }
     }
   return(0);
  }
// the end.

Nun, das ist einfach Unsinn! Wenn es einen Auftrag gibt: entweder schwebend oder zum Marktpreis, und zwar für ein beliebiges Finanzinstrument, wird kein Auftrag in diesem Code geöffnet:

   total=OrdersTotal();
   if(total<1)

Wir können sehen, dass ein Auftrag ausgeführt wird, wenn es weniger als einen gibt. Oder liege ich da falsch?

 

Aus dem gleitenden Durchschnitt, nehmen Sie CalculateCurrentOrders(Symbol()), es gibt Werte = Anzahl der offenen Aufträge, gefiltert nach Symbol und Magie, mit Vorzeichen = Richtung der Transaktion: zum Beispiel -1 bedeutet 1 Auftrag im Verkauf. Verwenden Sie bei Bedarf MathAbs(), um das Vorzeichen zu ignorieren.

Entnehmen Sie dem obigen Code den Trailing-Stop:

// Prüfung auf Trailing-Stop - hier gibt es sogar Kommentare.

if(TrailingStop>0) { ... }, es gibt 2 Stellen - für den Kauf und den Verkauf. Alles ist einfach. Oder Sie können fertige Funktionen von Igor Kim verwenden. Hier gibt es eine spezielle Farbe. Sie sind universeller und korrekter für den realen Handel, aber auch ein wenig schwieriger zu verstehen für einen Anfänger. Der Markt bietet viele Möglichkeiten für die Entwicklung von MQL, aber der Preis von MQL hat sich nicht verändert.

p.s. Zum Debuggen verwenden Sie Print(), das hilft sehr.

 
rusa: Ich möchte Sie bitten, diese Funktion selbst in Expert Advisor einzufügen. Auf dem Bild können Sie sehen, dass 3 Aufträge auf einem Balken eröffnet wurden. Ich weiß nicht, wie ich meine Forex-Roboter bestellen soll, und ich möchte sie nicht umschreiben.

Ich habe angefangen, Ihren Code zu verstehen. Ich bin erstaunt. Was Sie beigefügt haben, kann nicht funktionieren. Ich kann sehen, dass es aus den Teilen zusammengesetzt ist, aber zumindest Klammern sollten richtig platziert werden, Variablen sollten definiert werden. Und das Signal - es ist unklar, was bedeutet, zum Beispiel, "rsi>30" - Indikator RSI-Wert, oder etwas anderes? Die Funktion Trade_BUY() wird innerhalb der Funktion start... angehängt. usw.

Geben Sie mir entweder einen vollständigen Code, der funktioniert hat (geöffnete Orders), oder füllen Sie TOR für Signale, Trailing usw. aus. Es wird für mich einfacher sein, von Grund auf zu schreiben.

 
nuan:

Haben Sie eine detaillierte Anleitung, wie man Kurse für die MICEX für 2 Jahre herunterladen kann, zum Beispiel für Lukoil.

wie man weiter konvertieren sie richtig und öffnen Sie sie in mt4, wenn es irgendwelche Links geben mir Links, wie dies zu tun.

P.S. Vielen Dank im Voraus.


Hier ist eine Mamba für ein paar Jahre
http://zalil.ru/31909547
 
kolyango:

Bitte helfen Sie einem Anfänger. So schreiben Sie den folgenden Codeabschnitt:

Prüfen Sie die Marktaufträge, und wenn es keine Marktaufträge für unser Finanzinstrument gibt, kaufen wir es?

Außerdem brauchen wir eine Code-Zeile, die den Trailing-Stop 500 Pips vom realen Preis entfernt anordnet.

Hilfe!!!

Und wie groß ist die Entfernung (von wo und wohin genau)?

Nun, das ist einfach Unsinn! Liegt ein Auftrag vor: entweder schwebend oder zum Marktpreis, und zwar für ein beliebiges Finanzinstrument, wird mit diesem Code kein Auftrag eröffnet:

Wir können sehen, dass ein Auftrag ausgeführt wird, wenn es weniger als einen gibt. Oder liege ich da falsch?


Oder liegen Sie vielleicht falsch?

for (int i = 0; i < OrdersTotal(); i++)
{
OrderSelect(i,SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == . Paar)
{
if(OrderType() == OP_BUY || OrderType() == OP_SELL)
{
OrderSend(Symbol(),OP_BUY, .......

}
}
}

 

Ich brauche etwas Hilfe:

ein regulärer gleitender Durchschnittsindikator , wenn die Linie nach unten bricht, erscheint das Kauf- oder Verkaufssignal,

Hat jemand einen fertigen Code des grafischen Objekts, können Sie es posten!

Ich danke Ihnen.

 
diese sind in der Datenbank
 
ZZZEROXXX:
Diese befinden sich in der Datenbank.
Für einen Link wären wir dankbar.
 

Hallo! Können Sie mir sagen, wie ich die Prüfung der Aufwärts-/Abwärtsleiste in einer Schleife durchführen kann? Das heißt, wie kann ich diesen Zustand "kürzer" beschreiben?

Close[0]>Open[0]&& Close[1]>Open[1]&& Close[2]>Open[2]&& Close[3]>Open[3]&&& Close[4]>Open[4]&& Close[5]>Open[5]&& Close[6]>Open[6]&& Close[7]>Open[7]

Vielen Dank im Voraus.