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

 
Eugen8519:

Ich habe diese Funktion eingerichtet und danke Ihnen für Ihre Unterstützung und Ihre Hilfe.


Gern geschehen)
 
Mihail Matkovskij:

Es hängt davon ab, wie Sie die Stopp- und Mitnahmezeiten auf der Grundlage von Statistiken berechnen wollen... Es ist nicht ganz klar, was die "Candlestick-Statistik" ist und wie Sie sie berechnen.

Die Antwort ist wie das Pfeifen eines Krebses, und das Seltsame daran ist, dass sie immer meine Frage beantwortet.

 
darirunu1:

Die Antwort ist wie das Pfeifen eines Flusskrebses, und es ist seltsam, dass sie immer meine Frage beantwortet.

Wie können Sie eine Frage beantworten, von der Sie nicht wissen, worum es geht...? :)

Um zu verstehen, wie man den Stop und nehmen, in Ihrem Fall zu berechnen, müssen Sie wissen, wie Sie die Statistiken von Candlestick berechnen? Denn "Candlestick-Statistik" ist ein sehr weiter Begriff...

Außerdem: Welches Verhältnis von Anhalten und Mitnehmen wünschen Sie? Es gibt ein ganzes Handelssystem, das Sie sich hier ausdenken müssen, da Sie die Aufgabe nicht einmal kennen...
 
Mihail Matkovskij:

Wie kann man eine Frage beantworten, bei der nicht klar ist, worum es geht...? :)

Um zu verstehen, wie man Stop und Take in Ihrem Fall berechnet, müssen Sie wissen, wie Sie Candlestick-Statistiken berechnen? Da "Candlestick-Statistik" ein sehr dehnbarer Begriff ist...

Außerdem: Welches Verhältnis von Anhalten und Mitnehmen wünschen Sie? Es gibt ein ganzes Handelssystem, das Sie sich hier ausdenken müssen, da Sie die Aufgabe nicht einmal kennen...

int cnt,ticket,total=0;

st = "allgemeine Öffnungszeiten Mo-Fr Mi-Mi Do-Fr \n";

double cHöhe, gHöhe, max;

int sat, sun, mon, thu, wen, ths, fri; //, NN;

int H = TimeHour(TimeCurrent()); // Ermittlung der aktuellen Stunde

double NN = H + N*24; // Offset definieren

if (NN>Bars) NN=Bars;

for (int t=0; t<24; t++)

{

int HeightZ = 0; int z=0;

for (int i=0; i<=NNN; i++)

{

HeightZ = MathAbs(High[i]-Low[i])/Point ;

z++;

}

Welche Optionen schlagen Sie vor?
 
darirunu1:

Welche Optionen schlagen Sie vor?
int cnt,ticket,total=0;

st = "часы общ. пон. вт. ср. чт. пт. \n";

double cHeight, gHeight, Max;

int sat, sun, mon, thu, wen, ths, fri; //, NN;

int H = TimeHour(TimeCurrent()); // определим текущий час

double NN = H + N*24; // определим смещение

if (NN>Bars) NN=Bars;

for (int t=0; t<24; t++)

{

  int HeightZ = 0; int z=0;

  for (int i=0; i<=NN; i++)

  {

    HeightZ = (High[i]-Low[i])/Point;

    z++;
  }

}

Soweit ich weiß, wird Ihre Bewegung als Balkenhöhe berechnet(MathAbs wurden nicht benötigt).

и

double NN = H + N*24;

hier versuchen Sie, die Anzahl der Balken zu berechnen... Für den Anfang ist es jedoch besser, nur eine positive Zahl anzugeben.

Sie können die durchschnittliche Balkenbewegung wie folgt berechnen:

double avBarMove(int _period) {
  double cmMove = 0;
  for (int i = 0; i < _period; i++)
    cmMove += High[i]-Low[i];
  return cmMove / _period;
} 

Nun können Sie versuchen, den Stop und Take auf der Grundlage des Ergebnisses der Funktion zu berechnen.

 



Helfen Sie mir, die Funktion richtig zu positionieren

SendNotification ("текст");




Hier eingefügt für die Meldung zur Positionserfassung

void OPENORDER(string ord)

  {
  
  double priceL=m_symbol.Ask();
   if(ord=="Sell")      
    SendNotification ("текст");

        //--- check for free money
            if(m_account.FreeMarginCheck(Symbol(),ORDER_TYPE_BUY,my_lot,priceL)<0.0)
               printf("We have no money. Free Margin = %f",m_account.FreeMargin());
            else
      if(!m_trade.Sell(my_lot,Symbol(),m_symbol.Bid(),my_SL,my_TP,""))
         Print("BUY_STOP -> false. Result Retcode: ",m_trade.ResultRetcode(),
               ", description of Retcode: ",m_trade.ResultRetcodeDescription(),
               ", ticket of order: ",m_trade.ResultOrder());                     // Если sell, то не открываемся
     double priceS=m_symbol.Bid();
   if(ord=="Buy")
    SendNotification ("текст");
 //--- check for free money
            if(m_account.FreeMarginCheck(Symbol(),ORDER_TYPE_SELL,my_lot,priceS)<0.0)
               printf("We have no money. Free Margin = %f",m_account.FreeMargin());
            else
      if(!m_trade.Buy(my_lot,Symbol(),m_symbol.Ask(),my_SL,my_TP,""))
 
         Print("Buy -> false. Result Retcode: ",m_trade.ResultRetcode(),
               ", description of result: ",m_trade.ResultRetcodeDescription(),
               ", ticket of deal: ",m_trade.ResultDeal());
   return;
 }

Und ich erhalte bereits erfolgreich Benachrichtigungen auf meinem Smartphone.




Aber wie und wo einfügen

SendNotification

Um eine Nachricht zu erhalten, wenn ich den Stop-Loss oderTake-Profit erreiche?

 
Eugen8519:


Hilfe zur richtigen Positionierung der Funktion


Hier eingefügt für die Meldung zur Positionserfassung

Und ich erhalte bereits erfolgreich Benachrichtigungen auf meinem Smartphone.


Aber wie und wo einfügen

Um eine Nachricht zu erhalten, wenn ich Stop Loss oderTake Profit erreiche?

Siehe OnTradeTransaction

 

Eugen8519:

Aber wie und wo einfügen

Um eine Nachricht zu senden, wenn Stop Loss oderTake Profit erreicht wird?

Zunächst müssen Sie eine Funktion erstellen, die den Abschluss von Aufträgen steuert.

 
MakarFX:

Zunächst müssen wir eine Funktion erstellen, die das Schließen von Aufträgen steuert.

OnTradeTransaction wird ausgelöst, wenn eine Stop-Order auf dem Server ausgelöst wird.

 
MakarFX:

Zunächst müssen wir eine Funktion erstellen, die den Abschluss von Aufträgen steuert.

Wie wäre es mit durch?

DEAL_REASON_SL
DEAL_REASON_TP