[Archiv!] Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Könnte nirgendwo ohne dich hingehen - 2. - Seite 27

 
volshebnik:
Ja, vielen Dank für die großartigen Erklärungen. Ich habe die Optimierung in allen TFs umgesetzt. Ich werde die Ergebnisse nach der Optimierung und den Tests in verschiedenen Segmenten bekannt geben.


Sie fragten nach der Möglichkeit, die möglichen TFs programmatisch aufzuzählen und zu optimieren, um ihre Indikatorwerte im Expert Advisor zu erhalten. Dies ist zum Beispiel auf folgende Weise möglich

Hier sind einige Codeschnipsel aus dem Expert Advisor in der Datei, in der diese Operation durchgeführt wird - alles ist dort mit Kommentaren beschrieben.

......
extern int t_trend_period=7;
......

int trend_period=GetPeriod(t_trend_period); // это ф-ия для определения ТФ согласно заданному значению t_trend_period - заданному во внешней переменной (диапазон от 0 до 7)

double t_stoch_main=iStochastic(NULL,trend_period,t_Kperiod,t_Dperiod,t_slowing,MODE_SMA,0,MODE_MAIN,0);
......

// сама ф-ия выбота ТФ для оптимизации по всем периодам 
int GetPeriod(int period)
{int periodres;
 switch(period)
  {
   case 1: periodres=1;break;
   case 2: periodres=5;break;
   case 3: periodres=15;break;
   case 4: periodres=30;break;
   case 5: periodres=60;break;
   case 6: periodres=240;break;
   case 7: periodres=1440;break;
   default: periodres=1;break;
  }
return(periodres);
}

Möge jemand anderes sie nützlich finden.

Dateien:
 

Bitte um Rat! Wie kann man, sagen wir, einen neuen Balken im stündlichen Zeitrahmen (H1) öffnen und die Zeit wird für etwa 50 Minuten in diesem Balken gezählt, nach 50 Minuten wird es ein Signal geben. Ich habe von Sleep gehört.

 
anton777:

Bitte um Rat! Wie kann man, sagen wir, einen neuen Balken im stündlichen Zeitrahmen (H1) öffnen und die Zeit wird für etwa 50 Minuten in diesem Balken gezählt, nach 50 Minuten wird es ein Signal geben. Ich habe von Sleep gehört.

int minutes=50; 

if(TimeCurrent()>=iTime(NULL,PERIOD_H1,0)+minutes*60){

   /// 

}
 

Ich habe eine seltsame Sache - der benutzerdefinierte Indikator auf dem Diagramm und innerhalb der EA gibt völlig unterschiedliche Zahlen. Der Indikator ist MQL analog zu LinearReg von MetaStock. Sie wird wie folgt formuliert

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Magenta

extern int  RPeriod = 20;

int shift = 0, cnt = 0,loopbegin = 0;
bool first = True;
int prevbars = 0;
double sum =0, WT = 0;
int i = 0;

double val1[];

int init()
{
SetIndexBuffer(0,val1);
   return(0);
}

int start()
{
   if (RPeriod<1) 
   {
   return(0);
   }
   loopbegin=Bars-RPeriod-1;
   for (shift=loopbegin; shift>=0; shift--)
   {
      sum=0;
      for (i=RPeriod; i>=1; i--)
      {
         sum=sum+(i-(RPeriod+1)/3)*Close[RPeriod-i+shift];
      }
      WT = sum*6/(RPeriod*(RPeriod+1));

           val1[shift] = WT;
        }
   return(0);
}
Wenn es mit einem Diagramm verbunden ist, zeigt es genau die gleichen Ergebnisse wie MetaStock. Sobald er jedoch mit einem Expert Advisor verbunden ist, liegt sein Wert bei EURUSD über 1,4 (in der Eigenschaft indicator_chart_window), während die Notierungen bei 1,29 liegen. Natürlich können die reproduzierten Handelssysteme für MetaStock nicht funktionieren, es stellt sich heraus, dass sie immer die gleiche Position halten. Wenn ich auf die EA-Ergebnisse klicke, bleibt die Linie dieses Indikators weit weg, aber wenn ich ihn einfach neu kompiliere, wird das Diagramm sofort korrekt wie in MetaStock. Ich kann mir nicht erklären, warum es einen solchen Unterschied gibt.
 

Hallo, liebe Experten!

Ich möchte Sie um Ihre Hilfe bitten! Ich möchte versuchen, meinen ersten Expert Advisor zu erstellen, mit Aufgaben ...
1-Punkte
2-М5
3-Kann Parameter für Stopp und Mitnahme einstellen.
4 - Anstelle von Abflügen könnte (optional) eine Positionsumkehr bei jedem Erreichen dieser Stufe vorgesehen werden.
Um es manuell zu stoppen, z. B. durch Tastenkombinationen.
5 - Absolut keine Induktionen.
So, das war's. Ich hoffe, ich habe nicht heruntergeladen.
Eigentlich brauche ich zumindest einige Quellen nitsy, oder Layout, na ja, das wäre nicht sehr kompliziert Ich bin so acrome Skripte nicht alles tun, und das ist, tokmo bereit remade meist für sich selbst.
Ich hoffe auf Ihre Hilfe

 
Mr.Ross:

Hallo, liebe Experten!

Ich möchte Sie um Ihre Hilfe bitten! Ich möchte versuchen, meinen ersten Expert Advisor zu erstellen, mit Aufgaben ...
1-Punkte
2-М5
3-Kann Parameter für Stopp und Mitnahme einstellen.
4 - Anstelle von Abflügen könnte (optional) eine Positionsumkehr bei jedem Erreichen dieser Stufe vorgesehen werden.
Um es manuell zu stoppen, z. B. durch Tastenkombinationen.
5 - Absolut keine Induktionen.
So, das war's. Ich hoffe, ich habe nicht heruntergeladen.
Eigentlich brauche ich zumindest einige Quellen nitsy, oder Layout, na ja, das wäre nicht sehr kompliziert Ich bin so acrome Skripte nicht alles tun, und das ist, tokmo bereit remade meist für sich selbst.
Ich hoffe auf Ihre Hilfe

https://www.mql5.com/ru/articles/1413
 
Mr.Ross:

Ich möchte Sie um Ihre Hilfe bitten!

Wir werden Ihnen helfen, wenn Sie die Programmierung nicht verstehen, aber vergessen Sie nicht: "Retten Sie die Ertrinkenden - die Ertrinkenden selbst" = Sie zeigen einen Teil des Codes, wo es unklare Punkte gibt, den Code von 1,5 tausend Zeilen - beenden Sie es und sortieren Sie es selbst ;)
 
Ilya81:

Ich habe eine merkwürdige Sache

versuchen Sie, einen einfachen Indikator und die Daten, die der Expert Advisor über iCustom() von diesem Indikator erhält, visuell zu vergleichen. Ich denke, MovingAverage ist ein guter Indikator für Experimente

Sie müssen die Funktion iCustom() falsch verwenden

 
Integer:

Ich danke Ihnen vielmals!
 

Wenn jemand bei instaforex mt4 arbeitet, ist er vielleicht schon auf ein Problem gestoßen:

Sie haben vier Ziffern auf der Demo, fünf Ziffern auf der realen, aber sehr seltsam - bid und ask sind auf vier Ziffern gerundet.


Hier ist ein solcher Code:

   if (Poz_Up)
      {
         ticket=OrderSend(Symbol(),OP_BUY,0.01,Ask,3,NormalizeDouble(Bid-300*Point,Digits),NormalizeDouble(Ask+300*Point,Digits),Komment,0,Green);
      }
   if (Poz_Dn)
      {
         ticket=OrderSend(Symbol(),OP_SELL,0.01,Bid,3,NormalizeDouble(Ask+300*Point,Digits),NormalizeDouble(Bid-300*Point,Digits),Komment,0,Green);
      }

Ich habe das Gefühl, dass ich nicht weiß, was ich damit machen soll. Es gibt SL&TP aus, wenn ich eine Position eröffne, dann 300pp und dann 3000pp, als ob ich nur wissen will, was die Digits jedes Mal sind, wenn ich eine neue Position erhalte.

Kann mir jemand vorschlagen, wie ich dieses Problem lösen kann, und hat jemand ähnliche Situationen erlebt, oder geht es nur mir so?

Grund der Beschwerde: