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

 
VIREDS #:
Gute Zeit für alle mql4 Benutzer. Wir haben eine Funktion, die den Teil des am weitesten zurückliegenden Auftrags in einer Serie um Prozentpunkte auf Kosten der profitablen Positionen in jeder Richtung schließt. Wir brauchen Hilfe bei der Fertigstellung dieser Funktion! Wir müssen nämlich alle verbleibenden Aufträge in der Serie (aufgrund von gewinnbringenden Positionen in jeder Richtung) teilweise schließen, anstatt den längsten. Vielen Dank im Voraus!
Ich habeseit etwa 2 Monaten mit dieser Funktion zu kämpfen. Es gibt so viele Nuancen. Insbesondere diese Zeile
 ProfitPer=OrderProfit()+OrderCommission()+OrderSwap();//ПРОФИТ ОДНОГО ОРДЕРА

Wenn sich viele Aufträge im Raster befinden, ergibt sich bei der Schließung ein Totalverlust, obwohl alle Aufträge zu Null geschlossen werden sollten. Am Ende habe ich Provisionen und Swaps ganz abgeschafft.

double spreadLoss =(MarketInfo(_Symbol,MODE_TICKVALUE)* MarketInfo(_Symbol,MODE_SPREAD));
 
Und dann in der Funktion können Sie multiplizieren mit Lot/Lotstep für jede Bestellung, aber ich habe gerade einen Multiplikator gemacht
 
Und vor OrderClose() haben sie vergessen (!)
 
Guten Tag. Könnten Sie mir bitte mitteilen, wie ich angesichts der derzeitigen Situation für MQL4-Dienste bezahlen kann?
 

Guten Tag zusammen. Ich habe einen Indikator, der einen Pfeil auf dem Diagramm zeichnet, wenn ein Signal erscheint. Es stellt sich heraus, dass alle diese Pfeile auf der Geschichte auf dem Diagramm platziert werden und Sie können das Potenzial für Signale zu bewerten.

das Diagramm mit den Indikatorpfeilen.

Ich habe versucht, eine Meldung anzuhängen, die das Auftreten eines Signals signalisiert. Ich habe eine Funktion in dem Indikator gefunden, die Pfeile zeichnet, wenn ein Signal erscheint.

void SetDivergenceUP(string sy, int work_period, int wnd, string name_ind, string pattern, const datetime &time[], int index,
                     datetime left_time, double left_point, datetime time_b, double ind_b, 
                     datetime last_prc_tm, double last_prc_val, datetime time_extr, datetime &last_time_gv, double price_extr, double &Buffer[]) {
   double atr=iATR(sy,PERIOD_CURRENT,14,index);
   color line_color=clrNONE;
   string nm="", gv_name="";
   if(name_ind=="AO") {line_color=ColorUpperAO; gv_name=GV_nameCTS;}
   else if(name_ind=="MACD") {line_color=ColorUpperMACD; gv_name=GV_nameCTS;}
   else if(name_ind=="RSI") {line_color=ColorUpperRSI; gv_name=GV_nameCTS;}
   else {line_color=ColorUpperSTO; gv_name=GV_nameCTS;}
   //--- поставим сигнальную стрелку на график цены и запишем сигнал для CTS и его время
   //int bar_extr=Bars(sy,PERIOD_CURRENT,TimeCurrent(),time_extr);
   int bar_extr=GetBarShift(sy,PERIOD_CURRENT,time_extr);
   //Buffer[bar_extr]=GetPriceHigh(sy,Period(),bar_extr);
   Buffer[index]=GetPriceHigh(sy,Period(),index)+atr*shiftArrow;
   if(ModeSignalsCTS==enBoth || ModeSignalsCTS==enSell) {
      GlobalVariableSet(gv_name,-1.0);
      last_time_gv=time[index];
      }
   //--- соединим линией ближайшие точки экстремумов цены
   int last_bar_extr=Bars(sy,PERIOD_CURRENT,TimeCurrent(),last_prc_tm);
   nm=Prefix+"P"+name_ind+"divUpper"+TimeToString(time_b);
   SetTLine(0,nm,line_color,0,last_prc_tm,last_prc_val,time_extr,price_extr,widthChartLine,pattern+" "+name_ind+(work_period==Period()?"":"\nна периоде "+GetNameTF(work_period)));
   //--- если есть окно индикатора, соединим линией ближайшие точки экстремумов индикатора
   if(wnd>0) {
      nm=Prefix+name_ind+"divUpper"+TimeToString(time_b);
      SetTLine(0,nm,line_color,wnd,left_time,left_point,time_b,ind_b,widthIndicatorstLine,pattern+" "+(work_period==Period()?"":"\nна периоде "+GetNameTF(work_period)));
      }

}


Ich habe eine Zeile am Ende dieser Funktion hinzugefügt, um die Meldung zu erzeugen. Ich habe die hinzugefügte Zeile mit Farbe hervorgehoben ;-)

void SetDivergenceUP(string sy, int work_period, int wnd, string name_ind, string pattern, const datetime &time[], int index,
                     datetime left_time, double left_point, datetime time_b, double ind_b, 
                     datetime last_prc_tm, double last_prc_val, datetime time_extr, datetime &last_time_gv, double price_extr, double &Buffer[]) {
   double atr=iATR(sy,PERIOD_CURRENT,14,index);
   color line_color=clrNONE;
   string nm="", gv_name="";
   if(name_ind=="AO") {line_color=ColorUpperAO; gv_name=GV_nameCTS;}
   else if(name_ind=="MACD") {line_color=ColorUpperMACD; gv_name=GV_nameCTS;}
   else if(name_ind=="RSI") {line_color=ColorUpperRSI; gv_name=GV_nameCTS;}
   else {line_color=ColorUpperSTO; gv_name=GV_nameCTS;}
   //--- поставим сигнальную стрелку на график цены и запишем сигнал для CTS и его время
   //int bar_extr=Bars(sy,PERIOD_CURRENT,TimeCurrent(),time_extr);
   int bar_extr=GetBarShift(sy,PERIOD_CURRENT,time_extr);
   //Buffer[bar_extr]=GetPriceHigh(sy,Period(),bar_extr);
   Buffer[index]=GetPriceHigh(sy,Period(),index)+atr*shiftArrow;
   if(ModeSignalsCTS==enBoth || ModeSignalsCTS==enSell) {
      GlobalVariableSet(gv_name,-1.0);
      last_time_gv=time[index];
      }
   //--- соединим линией ближайшие точки экстремумов цены
   int last_bar_extr=Bars(sy,PERIOD_CURRENT,TimeCurrent(),last_prc_tm);
   nm=Prefix+"P"+name_ind+"divUpper"+TimeToString(time_b);
   SetTLine(0,nm,line_color,0,last_prc_tm,last_prc_val,time_extr,price_extr,widthChartLine,pattern+" "+name_ind+(work_period==Period()?"":"\nна периоде "+GetNameTF(work_period)));
   //--- если есть окно индикатора, соединим линией ближайшие точки экстремумов индикатора
   if(wnd>0) {
      nm=Prefix+name_ind+"divUpper"+TimeToString(time_b);
      SetTLine(0,nm,line_color,wnd,left_time,left_point,time_b,ind_b,widthIndicatorstLine,pattern+" "+(work_period==Period()?"":"\nна периоде "+GetNameTF(work_period)));
      }
      Alert("ДИВЕРГЕНЦИЯ НА "+Symbol());
}

Der Alert funktioniert, und im Testgerät ist alles normal. Aber wenn ich das Terminal starte und ein Indikator auf dem Diagramm ist, gibt es so viele Pieptöne und Nachrichten, wie es Pfeile auf der Geschichte gabJ Was soll ich tun und wie soll ich machen Alarm nur gegeben werden, wenn das letzte Signal empfangen wird, wenn das Terminal eingeschaltet ist, und die Pfeile auf der Geschichte sind still?
 
DanilaMactep #:

Guten Tag zusammen. Ich habe einen Indikator, der einen Pfeil auf dem Diagramm zeichnet, wenn ein Signal erscheint. Es stellt sich heraus, dass alle diese Pfeile auf der Geschichte auf dem Diagramm platziert werden und Sie können das Potenzial für Signale zu bewerten.

Ich habe versucht, eine Meldung anzuhängen, die das Auftreten eines Signals signalisiert. Ich habe eine Funktion in dem Indikator gefunden, die Pfeile zeichnet, wenn ein Signal erscheint.


Ich habe eine Zeile am Ende dieser Funktion hinzugefügt, um die Meldung zu erzeugen. Ich habe die hinzugefügte Zeile mit Farbe hervorgehoben ;-)

Der Alert funktioniert, und im Testgerät ist alles normal. Aber wenn ich das Terminal zu starten und wenn es ein Indikator auf dem Diagramm erzeugt es so viele Audio-Signale und Nachrichten, wie es Pfeile auf der GeschichteJ Was sollte ich tun und wie sollte ich Alert nur auf das letzte Signal, wenn das Terminal eingeschaltet ist, und die Pfeile auf der Geschichte waren still?
Um nur beim ersten oder beim Null-Balken zu alarmieren.
 

Kolleginnen und Kollegen - organisatorische Frage:

Freier Speicherplatz auf der Festplatte C auf meinem Computer, wo ich die Expos auf MT4 und MT 5 teste und optimiere, wurde knapp... wie von 220 übrig gebliebenen 30 GB auf meinem Computer...

Ich vermute, dass der Platz von Protokollen von Robotern eingenommen wird, die früher funktionierten oder getestet wurden, sowie von der Geschichte verschiedener Symbole auf verschiedenen Terminals und MT4 und MT5 - ich bin interessiert:

Wie kann man den Symbolverlauf (Ticks nach Symbol) und die Protokolle in den verschiedenen Ordnern löschen, in denen sich die Terminals befinden (nicht viele, insgesamt etwa 5).

Ähnlich wie früher auf MT 4 gab es eine magische Datei clear.bat.

In der Regel müssen Option(en), um Platz unter der Geschichte der Zeichen (ihre Zecken) und Protokolle in verschiedenen Ordnern zu löschen. Alle Verknüpfungen auf dem Desktop sind zu MT4 und MT5. In etwa so.

im Allgemeinen, um Speicherplatz von vergangenen Tests (Symboltick-Historie) und Trades (deren Protokolle) zu löschen.

Zumindest wo man nachlesen kann, wie man aufräumt und welche Ordner zu löschen sind und MT4 und MT5 - wo sie sich befinden...

Sps.

 

Können Sie mir einen Tipp geben?

Der Expert Advisor über iCustom verwendet einen Indikator, aber bei jedem Tick gibt es solche Fehler im Log.

Kann das Problem behoben werden, ohne den Indikator zu bearbeiten, und wenn ja, wie?

 
ALEKSANDR SOKOLOV jeden Tick in das Protokoll.

Kann das Problem behoben werden, ohne den Indikator zu bearbeiten, und wenn ja, wie?

Wenn der Indikator, der getrennt vom Expert Advisor ausgeführt wird, keine solchen Datensätze erzeugt, prüfen Sie, ob die Indikatorparameter beim Aufruf von iCustom() im Expert Advisor korrekt angegeben wurden.

 
Roman Shiredchenko Ordnern löschen, in denen sich die Terminals befinden (nicht viele, insgesamt etwa 5).

Ähnlich wie früher auf MT 4 gab es eine magische Datei clear.bat.

Im Allgemeinen müssen Option(en), um Platz unter der Geschichte der Zeichen (ihre Zecken) und Protokolle in verschiedenen Ordnern zu löschen. Alle Verknüpfungen auf dem Desktop sind zu MT4 und MT5. In etwa so.

im Allgemeinen, um Speicherplatz von vergangenen Tests (Symboltick-Historie) und Trades (deren Protokolle) zu löschen.

Zumindest, wo zu lesen, wie zu reinigen und welche Ordner zu löschen, sowohl auf MT 4 und MT5 - wo sie sind ...

Danke.

Wie alt ist der Computer und wann wurden die Systemprotokolle in den lokalen Ordnern, den temporären Ordnern und den Service-Intelligence- oder anderen Herstellerordnern bereinigt? Auf einem 10 Jahre alten Computer mit nur einem Browser und Office habe ich fast 100 Gigabyte mit dem Sikliner von Admin bereinigt. In meinem Intel-Ordner habe ich 25gb gefunden.

Zecken im Ordner "Histories". Auch dort waren z.B. von binans alle Zeichen 25 gb. Und die Protokolle im freigegebenen und mcl-Ordner überprüfen. Wenn Sie die Stämme abreißen, hat das keine Auswirkungen. Aber wenn Sie die Zecken abnehmen, müssen Sie möglicherweise warten, bis die richtigen geladen werden.