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

 
Artyom Trishkin:
Ich bin nicht beleidigt über Sturheit. Und warum?
Und Variablen müssen explizit initialisiert werden. Auf die Bedeutung der Initialisierung werden wir noch zu sprechen kommen. In der Zwischenzeit können Sie alles innerhalb der geschweiften Klammern wegwerfen.

Ich weiß den Humor zu schätzen. Ich danke Ihnen.

 
input int ExtDepth=12;//
input int ExtDeviation=5;//
input int ExtBackstep=3;//

input int Deviation=10;

//---------------------------------
int zz_handle;
struct zz_info{
   double P_;
   datetime T_;
};
double zz_value[];
datetime zz_time[];
zz_info zz_highs[2];
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   zz_handle=iCustom(_Symbol,PERIOD_CURRENT,"Examples\\ZigZag",ExtDepth,ExtDeviation,ExtBackstep);
   

   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {

   int count=0; 
   int i=1;
   
   CopyBuffer(zz_handle,0,1,1,zz_value);
   if(zz_value[0]!=0)
      {
      while(count<2)
         {
            CopyBuffer(zz_handle,0,i,1,zz_value);
            CopyTime(_Symbol,PERIOD_CURRENT,i,1,zz_time);
            i++;
            if(zz_value[0]!=0)
               {
                  zz_highs[count].P_=zz_value[0];
                  zz_highs[count].T_=zz_time[0];
                  count++;
               }
                           
         }
      DrawFibofan(zz_highs);
      }
      double high[];
      double low[];
      datetime Time[];
      CopyHigh(_Symbol,PERIOD_CURRENT,1,1,high);
      CopyLow(_Symbol,PERIOD_CURRENT,1,1,low);
      CopyTime(_Symbol,PERIOD_CURRENT,1,1,Time);
      double fibo_p=ObjectGetValueByTime(0,"DisFibo",Time[0],0);
      Comment(fibo_p);
   
  }
//+------------------------------------------------------------------+
void DrawFibofan(zz_info &zz[])
{
   if(zz[0].P_-zz[1].P_>0) 
      {
         ObjectDelete(0,"AscFibo");
         ObjectCreate(0,"AscFibo",OBJ_FIBOFAN,0,zz[1].T_,zz[1].P_,zz[0].T_,zz[0].P_);
         ObjectSetInteger(0,"AscFibo",OBJPROP_LEVELS,1);
         ObjectSetDouble(0,"AscFibo",OBJPROP_LEVELVALUE,0.882);
         ObjectSetInteger(0,"AscFibo",OBJPROP_LEVELCOLOR,clrNavy);
         ObjectSetInteger(0,"AscFibo",OBJPROP_WIDTH,2);
         ObjectSetString(0,"AscFibo",OBJPROP_LEVELTEXT,"88.2");
      }

      else
      {
         ObjectDelete(0,"DisFibo");
         ObjectCreate(0,"DisFibo",OBJ_FIBOFAN,0,zz[1].T_,zz[1].P_,zz[0].T_,zz[0].P_);
         ObjectSetInteger(0,"DisFibo",OBJPROP_LEVELS,1);
         ObjectSetDouble(0,"DisFibo",OBJPROP_LEVELVALUE,0.882);
         ObjectSetInteger(0,"DisFibo",OBJPROP_LEVELCOLOR,clrNavy);
         ObjectSetInteger(0,"DisFibo",OBJPROP_WIDTH,2);
         ObjectSetString(0,"DisFibo",OBJPROP_LEVELTEXT,"88.2");
      }
}

Können Sie mir sagen, was falsch ist, ich verstehe nicht, wie man den Wert der Fibo-Fan-Linie auf die vorherige Kerze zu bekommen?

Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
Задавайте вопросы по техническому анализу, обсуждайте торговые системы и улучшайте свои навыки программирования торговых стратегий на языке MQL5. Общайтесь и обменивайтесь опытом на форуме с трейдерами всего мира и помогайте ответами новичкам — наше сообщество развивается вместе с вами. Обсудим совместные проекты в редакторе - зачем они и...
 
Roman Sharanov:

Können Sie mir sagen, was falsch ist, ich verstehe nicht, wie man den Wert der Fibo-Fan-Linie auf die vorherige Kerze zu bekommen?

Hier hat sich etwas aufgestaut, sowohl mql4 als auch mql5...

Welche Sprache sollte ich verwenden, um den Wert zu erhalten?

 
nicholishen:

Vergleich von Zahlen mit einem Fließkomma auf Gleichheit

bool ( fabs (number1-number2) < _Point / 10 * 5 )
bool flag = ( fabs (number1-number2) < _Point / 10 * 5 )
 
Wenn Sie ein Konto im Terminal löschen, wird meines Wissens nur die Anzeige des Kontos im Terminal gelöscht, das Konto selbst auf dem Server des Brokers wird nicht gelöscht.
 
igrok333:
Wenn Sie ein Konto im Terminal löschen, wird meines Wissens nur die Anzeige des Kontos im Terminal gelöscht, das Konto selbst auf dem Server des Brokers wird nicht gelöscht.

Ja, da haben Sie recht.

 
STARIJ:
Es ist ganz einfach. Sie müssen 7 Parameter einstellen, um die iMA zu berechnen. Der erste Parameter, der Name des Symbols, ist offensichtlich. Als zweiten Zeitrahmen setzen Sie M1. Der dritte Parameter - der Zeitraum - wird so oft eingestellt, wie Sie benötigen, d. h. wie viele Tage größer als eine Minute sind. Der vierte Parameter - Verschiebung = 0. Die nächsten beiden Parameter - die Methode der Mittelwertbildung und der Preistyp - sind Ihnen bekannt. Bitte berechnen Sie die Taktzahl, wenn Sie die benötigte Zeit wissen. Das ist alles! Überprüfen Sie dies, indem Sie Berechnungen für die Zeiträume M5 und M15 anstellen. Vielleicht sogar für M30.

Alekseu Fedotov:

So einfach ist das.

Es ist folgendermaßen.


Ich werde es morgen ausprobieren und berichten. Dankeschön)

 

Können Sie mir sagen, wie ich das Umkehrmoment des Parabolic SAR Indikators einfangen und festhalten kann? Zumindest eine Idee, wie man es machen kann. Vielen Dank im Voraus!

 
Corvin85:

Können Sie mir sagen, wie ich das Umkehrmoment des Parabolic SAR Indikators einfangen und festhalten kann? Zumindest eine Idee, wie man es machen kann. Ich habe keine Ahnung, wie man es benutzt.


können Sie den aktuellen und den vorherigen Balken überprüfen.

Zum Beispiel war die vorherige höher als der Preis, die aktuelle ist niedriger als der Preis.

 

Hallo, liebe Forumsmitglieder. Können Sie mir sagen, was zu tun ist, um sicherzustellen, dass das t1-Ticket nicht neu gezeichnet wird, wenn eine Position unter denselben Bedingungen eröffnet wird? Wenn also eine Bedingung zum Schließen dieser (aber nicht anderer) Positionen eintritt, werden beide (oder möglicherweise mehrere)

if(ЗДЕСЬ УСЛОВИЕ ОТКРЫТИЯ ПОЗИЦИИ БАЙ)
      {
      t1=OrderSend(Symbol(),OP_BUY,lot,Ask,slippage,0,0,"",0,0,Green);
      if(t1>0)
           {
            if(OrderSelect(t1,SELECT_BY_TICKET,MODE_TRADES))
              { Print("Открыта позиция BUY20");
               buy20=true;
              }
           }
         else
            Print("Error opening BUY20 order : ",GetLastError());
      return;
      }


Ticket. Bislang habe ich nur das letzte Ticket gelesen, und die abschließende Schleife ignoriert das erste Ticket. Die Schleife scheint korrekt aufgebaut zu sein:

void ClosePoz()
  { RefreshRates();
         double WPR0 = iWPR(NULL,PERIOD_M5,bars,0);
         bool rez1 = false;
         bool rez2 = false;
  int total=OrdersTotal();
      for(int i=OrdersTotal()-1;i>=0;i--)
      {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         {
         if(OrderTicket()==t1 && buy20 && MathAbs(WPR0)>81)
         rez1 =  OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),int(MarketInfo(OrderSymbol(),MODE_DIGITS))),slippage,clrNONE); 
        
         if(OrderTicket()==t2 && buy80 && MathAbs(WPR0)<20)
         rez2 =  OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(OrderSymbol(),MODE_BID),int(MarketInfo(OrderSymbol(),MODE_DIGITS))),slippage,clrNONE);                 
         }
       continue;  
      }      
     
  }