Hilfe bei der Codierung - Seite 722

 
Tigra:


In diesem Indikator gibt es einige Probleme bei der Verwendung der 4-stelligen Zitate. Aber es ist nicht kritisch, das Problem ist die Skala auf 4 Ziffer auf das Niveau von 100, versucht, die Bilder zu zeigen, Blick auf die richtige Zeit ist sehr anstrengend Ihre Augen (nach ein paar Tagen, ob als ein Thread, um die Skala auf das Niveau von 40 zu ändern - es wäre besser zu sehen, Histogramme und rechte Ecke des Textes, die den aktuellen Wert anzeigen würde?

Оставлю оригинальный текст на русском, тк возможны искажения при переводе(

У этого индикатора есть некоторые проблемы при использовании 4 значных котировок. Но это не критично, самая проблемы это масштабирование на 4 значном до уровня 100, постарался показать на картинках, разглядывать нужный момент весьма напрягает глаза( после нескольких дней, можно ли как нить поменять масштаб до уровня 40 - что бы лучше было видно гистограммы и в правом углу текстом что бы обозначалось текущеее значение? Еще не могу понять почему появляються черные гистограммы поверх при увеличении (

Ist das nicht der Repainter?
 

Mladen,

Ich arbeite mit MT5.

Ich habe diese "einfache Trailing-Funktion", die ich in "Trailing mit Schritt" umwandeln muss, könnten Sie einen Tipp geben?

In dem EA habe ich
===================
Eingabe "Trailing" (nach Punkten)

=> Beispiel:
Trailing: 4000 (4 Punkte)
(alte Methode) wenn sich der Kurs um 4 Punkte bewegt, verschiebt sich der Stoploss um 4 Punkte

aber ich muss ändern in

===================
Eingabe "Trailing (Abstand) in Punkten"
Eingabe "Trailing (Schritt) in Punkten"

=> Beispiel:
Schleppabstand: 4000 (4 Punkte)
Nachlaufschritt: 1500 (1,5 Punkte)

(neue Methode) wenn sich der Kurs um 4 Punkte bewegt, verschiebe ich den Stoploss um 1,5 Punkte

//+------------------------------------------------------------------+
//| Simple Trailing function                                         |
//+------------------------------------------------------------------+
void fSimpleTrailing(){
   if(Trailing<=0){
      return;
   }        
   if(!Pos.Select(_Symbol)){
      return;
   }        
   if(!Sym.RefreshRates()){
      return;  
   }  
   double nsl,tmsl,psl;  
   switch(Pos.PositionType()){
      case POSITION_TYPE_BUY:
         nsl=Sym.NormalizePrice(Sym.Bid()-_Point*Trailing);
            if(nsl>=Sym.NormalizePrice(Pos.PriceOpen())){
               if(nsl>Sym.NormalizePrice(Pos.StopLoss())){
                  tmsl=Sym.NormalizePrice(Sym.Bid()-_Point*Sym.StopsLevel());
                     if(nsl<tmsl){
                        Trade.PositionModify(_Symbol,nsl,Pos.TakeProfit());
                     }
               }
            }
      break;
      case POSITION_TYPE_SELL:
         nsl=Sym.NormalizePrice(Sym.Ask()+_Point*Trailing);
            if(nsl<=Sym.NormalizePrice(Pos.PriceOpen())){
               psl=Sym.NormalizePrice(Pos.StopLoss());
                  if(nsl<psl || psl==0){
                     tmsl=Sym.NormalizePrice(Sym.Ask()+_Point*Sym.StopsLevel());
                        if(nsl>tmsl){
                           Trade.PositionModify(_Symbol,nsl,Pos.TakeProfit());
                        }
                  }
            }      
      break;
   }
}
 
nbtrading:
Ist das nicht der Repainter?

Ja, er erzählt, aber die Farbe ist nicht wichtig in diesem Indikator, für mich ist es sehr gut zeigt aus.
 
baraozemo:

Mladen,

Ich arbeite mit MT5.

Ich habe diese "einfache Trailing-Funktion", die ich in "Trailing mit Schritt" umwandeln muss, könnten Sie einen Tipp geben?

In dem EA habe ich
===================
Eingabe "Trailing" (nach Punkten)

=> Beispiel:
Trailing: 4000 (4 Punkte)
(alte Methode) wenn sich der Kurs um 4 Punkte bewegt, verschiebt sich der Stoploss um 4 Punkte

aber ich muss ändern in

===================
Eingabe "Trailing (Abstand) in Punkten"
Eingabe "Trailing (Schritt) in Punkten"

=> Beispiel:
Schleppabstand: 4000 (4 Punkte)
Nachlaufschritt: 1500 (1,5 Punkte)

(neue Methode) wenn sich der Kurs um 4 Punkte bewegt, verschiebe ich den Stoploss um 1,5 Punkte

//+------------------------------------------------------------------+
//| Simple Trailing function                                         |
//+------------------------------------------------------------------+
void fSimpleTrailing(){
   if(Trailing<=0){
      return;
   }        
   if(!Pos.Select(_Symbol)){
      return;
   }        
   if(!Sym.RefreshRates()){
      return;  
   }  
   double nsl,tmsl,psl;  
   switch(Pos.PositionType()){
      case POSITION_TYPE_BUY:
         nsl=Sym.NormalizePrice(Sym.Bid()-_Point*Trailing);
            if(nsl>=Sym.NormalizePrice(Pos.PriceOpen())){
               if(nsl>Sym.NormalizePrice(Pos.StopLoss())){
                  tmsl=Sym.NormalizePrice(Sym.Bid()-_Point*Sym.StopsLevel());
                     if(nsl<tmsl){
                        Trade.PositionModify(_Symbol,nsl,Pos.TakeProfit());
                     }
               }
            }
      break;
      case POSITION_TYPE_SELL:
         nsl=Sym.NormalizePrice(Sym.Ask()+_Point*Trailing);
            if(nsl<=Sym.NormalizePrice(Pos.PriceOpen())){
               psl=Sym.NormalizePrice(Pos.StopLoss());
                  if(nsl<psl || psl==0){
                     tmsl=Sym.NormalizePrice(Sym.Ask()+_Point*Sym.StopsLevel());
                        if(nsl>tmsl){
                           Trade.PositionModify(_Symbol,nsl,Pos.TakeProfit());
                        }
                  }
            }      
      break;
   }
}
Wenn der Kurs sich bewegt hat im Vergleich zu: was?
 
mladen:
Wenn der Preis sich bewegt hat im Vergleich zu: was?

Bevor Sie die Funktion aufrufen, müssen Sie

Wenn der Kurs "steigt", überprüfen Sie den "Abstand" in Punkten. Wenn er mit dem "Abstand" übereinstimmt, verschieben Sie den Stoploss mit Hilfe eines Schrittes (in Punkten).

Beispiel:

Stoploss =8000
Trailing-Abstand = 4000
Trailing-Schritt = 2000

Sie kaufen zum Preis von 10000

jetzt ist der Kurs 14000 (Trailing-Distanz Ziel erreicht=4000), jetzt müssen Sie den Stoploss auf 6000 (8000 - Trailing-Schritt) verschieben

Jetzt ist der Kurs 18000 (Trailing-Distanz Ziel erreicht=4000 ), jetzt müssen Sie den Stoploss auf 2000 (6000 - Trailing-Schritt) setzen

Jetzt ist der Preis 22000 (Trailing-Distanzziel erreicht=4000), jetzt müssen Sie den Stoploss auf "Eingang" + 2000 (2000 - Trailing-Schritt =-2000) verschieben

jetzt ist der Preis 24000 (trailing distance target reached=4000), jetzt müssen Sie den Stoploss auf "entrance" + 6000 (-2000 - trailing step =-6000) verschieben

 
baraozemo:

Bevor Sie die Funktion aufrufen, müssen Sie

Wenn der Kurs "steigt", überprüfen Sie den "Abstand" in Punkten. Wenn er mit dem "Abstand" übereinstimmt, verschieben Sie den Stoploss mit Hilfe eines Schrittes (in Punkten).

Beispiel:

stoploss =8000
trailing distance = 4000
trailing step = 2000

Sie kaufen zum Preis von 10000

jetzt ist der Preis 14000 (Trailing-Distanzziel erreicht=4000), jetzt müssen Sie den Stoploss auf 6000 (8000 - Trailing-Schritt) verschieben

jetzt ist der Preis 18000 (Trailing-Distanzziel erreicht=4000 ), jetzt müssen Sie den Stoploss auf 2000 (6000 - Trailing-Schritt) verschieben

jetzt ist der Preis 22000 (Trailing-Distanzziel erreicht=4000), jetzt müssen Sie den Stoploss auf "Eingang" + 2000 (2000 - Trailing-Schritt =-2000) verschieben

der Kurs ist jetzt 24000 (Trailing-Distanzziel erreicht=4000), jetzt müssen Sie den Stoploss auf "Eingang" + 6000 (-2000 - Trailing-Schritt =-6000) verschieben

Ja, aber wenn Sie das nicht aufgezeichnet haben (wie es in der Regel bei Stop-Loss- oder Take-Profit-Kursen der Fall ist: wenn sie geändert werden, beginnen sie ein Kriterium für eine weitere Änderung zu sein), sind Sie gezwungen, das in Variablen festzuhalten, und das ist alles andere als fehlerfrei. Was Sie versuchen, ist mit dem Code nicht wiederholbar, oder Sie müssen diese Stopps für jeden einzelnen Fall hart kodieren, was es für jeden offenen Preis unbrauchbar macht, der nicht genau mit den hart kodierten Preisen übereinstimmt.
 

Hallo,

Ich würde gerne eine Funktion schreiben, die einen Pfeil zeichnet. Ich möchte, dass der Pfeil schwebt. Irgendeine Idee? :)

void DrawArrow(string name, int IdSymbol, int x, int y, int width, int corner, color clr)
{
   ObjectCreate(0,name,OBJ_ARROW,0,0,0,0,0);
      ObjectSetInteger(0,name,OBJPROP_ARROWCODE,IdSymbol);
      ObjectSetInteger(0,name,OBJPROP_CORNER,corner);
      ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
      ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
      ObjectSetInteger(0, name, OBJPROP_COLOR, clr);
      ObjectSetInteger(0,name,OBJPROP_WIDTH,width);
      ChartRedraw(0);
}

 
mladen:
Ja, aber wenn Sie es nicht aufgezeichnet haben (wie es normalerweise bei den Stop-Loss- oder Take-Profit-Kursen der Fall ist: wenn sie geändert werden, beginnen sie ein Kriterium für eine weitere Änderung zu sein), sind Sie gezwungen, das in Variablen zu haben, und das ist alles andere als fehlerfrei. Was Sie versuchen, ist mit dem Code nicht wiederholbar, oder Sie müssen diese Stopps für jeden einzelnen Fall hart kodieren, was es für jeden offenen Preis unbrauchbar macht, der nicht genau mit den hart kodierten Preisen übereinstimmt.

Hallo mladen,

hier ist das Beispiel-ea

Dateien:
sample-ea.mq5  36 kb
 
Tartut:

Hallo,

Ich würde gerne eine Funktion schreiben, die einen Pfeil zeichnet. Ich möchte, dass der Pfeil schwebt. Irgendeine Idee? :)

void DrawArrow(string name, int IdSymbol, int x, int y, int width, int corner, color clr)
{
   ObjectCreate(0,name,OBJ_ARROW,0,0,0,0,0);
      ObjectSetInteger(0,name,OBJPROP_ARROWCODE,IdSymbol);
      ObjectSetInteger(0,name,OBJPROP_CORNER,corner);
      ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
      ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
      ObjectSetInteger(0, name, OBJPROP_COLOR, clr);
      ObjectSetInteger(0,name,OBJPROP_WIDTH,width);
      ChartRedraw(0);
}

Was bedeutet der "schwebende" Pfeil?

PS: Pfeilobjekte verwenden keine x- und y-Koordinaten oder die Ecke. Sie verwenden Zeit und Preis

 

Hallo Herr mladen

bitte machen Sie MTF dazu

siehe

Dateien: