Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 225

 

Guten Abend!

Ich verwende das System mit den Kommentaren schon seit langem, um zu unterscheiden, ob ich eine Position früher geändert habe oder nicht...

Wie kann ich z.B. korrekt unterscheiden, dass ich, nachdem ich einen Kaufauftrag erteilt habe, SL und TP in der Position geändert habe? Gibt es positionsspezifische Felder oder Funktionen?

 
websafe25:

Guten Abend!

Ich verwende das System mit den Kommentaren schon seit langem, um zu unterscheiden, ob ich eine Position früher geändert habe oder nicht...

Wie kann ich z.B. korrekt unterscheiden, dass ich, nachdem ich einen Kaufauftrag erteilt habe, SL und TP in der Position geändert habe? Gibt es positionsspezifische Felder oder Funktionen?

Das ist unwahrscheinlich.

Meiner Meinung nach sollte man sich nicht auf den aktuellen Stand der Position oder der Aufträge verlassen, sondern es ist viel zuverlässiger, wenn das System nach dem Neustart den Stand bildet, der in der aktuellen Marktsituation sein muss. Danach werden die Position und die Auftragsvergabe angepasst.

 
pronych:

Dies ist unwahrscheinlich.

Meiner Meinung nach sollte man sich nicht auf den aktuellen Stand einer Position oder eines Auftrages verlassen, sondern es ist viel zuverlässiger, wenn das System den Stand bildet, den es in der aktuellen Marktsituation nach dem Neustart haben sollte. Und dann werden die Position und die Auftragstabelle angepasst.

Ich danke Ihnen für Ihre Antwort.

Ich werde nun meine eigene Situation beschreiben.

Wenn die Position, sagen wir, einen Gewinn von 10 Pips erreicht, möchte ich sie in eine verlustfreie Position umwandeln, d.h. ich verschiebe meine Stopps auf den Eröffnungskurs + 3 Pips, zum Beispiel.

Die folgende Situation ist gerade im Gange.

if(AccountInfo.OrderProfitCheck(_Symbol,ORDER_TYPE_SELL,Lot,PositionInfo.PriceOpen(),NormalizeDouble(PositionInfo.PriceOpen()-ModifyPips*_Point,_Digits)) <= PositionInfo.Profit())
        {
        if(Trade.PositionModify(_Symbol,NormalizeDouble(PositionInfo.PriceOpen()-ModifySLPips*_Point,_Digits),NormalizeDouble(PositionInfo.PriceOpen()-TP*_Point,_Digits)))
          {

Wenn der Gewinn bei einem Handel mehr oder gleich 10 Pips beträgt, ändere ich die Stopps.Der Gewinn steigt, und die Änderung geschieht immer wieder, ständig. Ich muss einen Handel einmal auf "No-Loss" verschieben und ihn dann mit ..... überspringen.

Wie werde ich sie wieder los? Oder wäre es besser, nicht <=, sondern = zu schreiben? Ist es möglich, dass, während EA diese Operation erreicht und beginnt, den Gewinn auf einen Handel zu vergleichen, wird es nicht gleich 10 Pips sein, und der Gewinn wird mehr sein, dann wird es nicht ohne Verlust schließen?

P.S.> Ich denke, wenn man eine Position nur beobachten, auf welchem Niveau aus dem Preis ist SL, wenn über den Preis dann bereits geändert...

Ich habe es so entschieden:

if(PositionInfo.Select(_Symbol))
{
   if(PositionInfo.PositionType()==POSITION_TYPE_BUY)
     {
     if(PositionInfo.StopLoss() > PositionInfo.PriceOpen())
       {
         if(AccountInfo.OrderProfitCheck(_Symbol,ORDER_TYPE_BUY,Lot,PositionInfo.PriceOpen(),NormalizeDouble(SymbolInfo.Ask()+ModifyPips*_Point,_Digits)) >= PositionInfo.Profit())
          {
             Trade.PositionModify(_Symbol,NormalizeDouble(PositionInfo.PriceOpen()+ModifySLPips*_Point,_Digits),NormalizeDouble(PositionInfo.PriceOpen()+TP*_Point,_Digits));
          }
       }
     }
   if(PositionInfo.PositionType()==POSITION_TYPE_SELL)
     {
     if(PositionInfo.StopLoss() < PositionInfo.PriceOpen())
       {
      if(AccountInfo.OrderProfitCheck(_Symbol,ORDER_TYPE_SELL,Lot,PositionInfo.PriceOpen(),NormalizeDouble(PositionInfo.PriceOpen()-ModifyPips*_Point,_Digits)) <= PositionInfo.Profit())
        {
        Trade.PositionModify(_Symbol,NormalizeDouble(PositionInfo.PriceOpen()-ModifySLPips*_Point,_Digits),NormalizeDouble(PositionInfo.PriceOpen()-TP*_Point,_Digits));
        }
       }
     }
}
 
websafe25:

P.S> Ich denke, wenn man eine Position nur schauen, welche Ebene aus dem Preis SL ist, wenn über den Preis dann bereits geändert...

Ich habe es so entschieden:

Was Sie nach P.S. geschrieben haben, ist ziemlich offensichtlich. (wenn Sie es sehr genau brauchen, bis hin zur Ermittlung des Niveaus der Hoch/Tief-Balken seit der letzten Messung.))), aber das ist unwahrscheinlich))

Es wäre nur wünschenswert, sich von dem Begriff "Gewinn" zu lösen und sich dem Begriff "Punkt" zuzuwenden.

Und es wäre schöner, nicht den Preis des letzten Geschäfts(Last) zu berücksichtigen (und im Allgemeinen diese Art von Preis zu vergessen), sondern in der vorteilhaften Variante zu fragen/bieten;))

 

Guten Abend!

Leider konnte ich keine spezifische Anleitung finden, wie man ein Signalmodul für z.B. RSI verwendet. Das heißt, es gibt einen Datensatz, wie es initialisiert wird, sind die Parameter eingestellt, aber wie man einfach überprüfen Sie die Bedingung, um von meinem EA kaufen - nein. Was nun? Wie kann ich prüfen, ob eine Kauf-/Verkaufsbedingung vorliegt?

/--- Creating signal
   CExpertSignal *signal=new CExpertSignal;
   if(signal==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating signal");
      ExtExpert.Deinit();
      return(-2);
     }
//---
   ExtExpert.InitSignal(signal);
   signal.ThresholdOpen(100);
   signal.ThresholdClose(100);
   signal.PriceLevel(0.0);
   signal.StopLevel(SL);
   signal.TakeLevel(TP);
//--- Creating filter CSignalRSI
   CSignalRSI *filter0=new CSignalRSI;
   if(filter0==NULL)
     {
      //--- failed
      printf(__FUNCTION__+": error creating filter0");
      ExtExpert.Deinit();
      return(-3);
     }
   signal.AddFilter(filter0);
//--- Set filter parameters
   filter0.PeriodRSI(PeriodRSI);
   filter0.Applied(PRICE_CLOSE);
   filter0.Weight(0.8);
 
websafe25:

Guten Abend!

Leider konnte ich keine spezifische Anleitung finden, wie man ein Signalmodul für z.B. RSI verwendet. Das heißt, es gibt einen Datensatz, wie es initialisiert wird, sind die Parameter eingestellt, aber wie man einfach überprüfen Sie die Bedingung, um von meinem EA kaufen - nein. Was nun? Wie prüfe ich, ob eine Bedingung für den Kauf/Verkauf vorliegt?

Das Signalmodul wird in der Entwurfsphase mit Ihrem Expert Advisor verbunden. Jedes Modul der Signale organisiert die Abstimmung...

Generell ist dieser Artikel eine Pflichtlektüre:

Erstellen Sie einen Handelsroboter in 6 Schritten!

Und schließlich

Generator von benutzerdefinierten Indikator-Handelssignalen

 

Übrigens - bin ich der Einzige, der es für falsch hält, das arithmetische Mittel der Signale im Abstimmungsmodul zu nehmen?

double CExpertSignal::Direction(void)
  {
   long   mask;
   double direction;
   double result=m_weight*(LongCondition()-ShortCondition());
   int    number=(result==0.0)? 0 : 1;      // number of "voted"
//---
   int    total=m_filters.Total();
//--- loop by filters
   for(int i=0;i<total;i++)
     {
      //--- mask for bit maps
      mask=((long)1)<<i;
      //--- check of the flag of ignoring the signal of filter
      if((m_ignore&mask)!=0)
         continue;
      CExpertSignal *filter=m_filters.At(i);
      //--- check pointer
      if(filter==NULL)
         continue;
      direction=filter.Direction();
      //--- the "prohibition" signal
      if(direction==EMPTY_VALUE)
         return(EMPTY_VALUE);
      //--- check of flag of inverting the signal of filter
      if((m_invert&mask)!=0)
         result-=direction;
      else
         result+=direction;
// Вот тут бы       number+=filter.Weight();

      number++;
      }
//--- normalization
   if(number!=0)
      result/=number; // Вот туточки???
//--- return the result
   return(result);
  }
 
YAndrey:

Übrigens - bin ich der Einzige, der es für falsch hält, das arithmetische Mittel der Signale im Abstimmungsmodul zu nehmen?

Alles ist logisch.

Lesen Sie mehr ArtikelMQL5 Wizard: Die neue Version und hier ist ein Stück Bild von dem Artikel:

Normalisierung

 
barabashkakvn:

Das macht alles Sinn.

Lesen Sie mehr ArtikelMQL5 Wizard: Die neue Version und hier ist ein Stück der Zeichnung aus dem Artikel:

Ist das wirklich logisch? Wenn die Gewichte 1 sind, dann ist es logisch.

Nehmen wir an, ich habe 2 Filter-Signale. Der eine ist gut, dick, dem ich vertraue und für den ich die Gewichtung 1 einstelle, der andere ist klein, ein Hilfsmittel zum Spaß, daher ist seine Gewichtung = 0,1.

Das dicke Signal gibt ein Kaufsignal in Höhe von 100, das kleine ein Kaufsignal in Höhe von 10. Wie hoch wird das Gesamtsignal sein? 50.5??? Ist es nicht seltsam, dass der kleine Mann die Situation unterschätzt?

 
YAndrey:

Ergibt das einen Sinn? Wenn die Gewichte jeweils 1 sind, dann ist es sinnvoll.

Nehmen wir an, ich habe 2 Signalfilter. Einer ist gut, dick, dem ich vertraue und für den ich die Gewichtung 1 einstelle. Ein anderer ist klein, ein Hilfsmittel zum Spaß, daher ist seine Gewichtung = 0,1.

Das dicke Signal gibt ein Kaufsignal in Höhe von 100, das kleine ein Kaufsignal in Höhe von 10. Wie hoch wird das Gesamtsignal sein? 50.5??? Ist es nicht seltsam, dass der kleine Mann die Situation so sehr unterschätzt?

1. die Gesamtzahl der Stimmen. Sein Hauptmerkmal ist die Richtung. Das zweite Merkmal ist der Endwert.
2. Wenn Ihre Strategie zwei Signale auslöst: eines mit einer Stärke von 100*1 und das zweite mit einer Stärke von 10*0,1, dann sollten Sie Ihre Strategie in Bezug auf die Signalauswahl überprüfen.
Grund der Beschwerde: