Hilfe bei der Codierung - Seite 679

 
stevenpun:

Hallo Herr Mladen,

Ich dachte daran, einen Kommentar hinzuzufügen, wenn der Preis vom Trend abgewichen ist und "wait for buy" & "wait for sell" hat.

Das Hinzufügen der neuen Zeile auf den Kauf ist kein Problem, aber wenn es auf den Verkauf hinzufügen kann es nicht machen, es zu arbeiten.

Was sollte ich ändern müssen?

Versuchen Sie es so:

   string OPstr = "NO TRADE";;
   color  OPclr = clrYellow;
   if (buffer1[i+SignalCandle]>buffer5[i+SignalCandle]) 
      if (Bid < buffer1[i+SignalCandle] ) 
      {
         OPstr = "BUY";
         OPclr = clrGreen;
      }
      else
      {      
         OPstr = "WAIT FOR BUY";
         OPclr = clrLimeGreen;
      }       
   if (buffer1[i+SignalCandle]<buffer6[i+SignalCandle] ) 
      if (Bid > buffer1[i+SignalCandle] )
      {
         OPstr = "SELL";
         OPclr = clrRed;
      }
      else
      {
         OPstr = "WAIT FOR SELL";
         OPclr = clrOrangeRed;
      }        
 

Hallo mladen,

ich versuche, StepMA PDF und RSI wie folgt zu kombinieren. Kaufen Sie, wenn StepMA PDF ist oben, und der Preis überquert RSI 30.
Schließen Sie kaufen, wenn RSI erreicht 70 (oder kaufen SL, TS und TP) und das weiß ich nicht, wie man einfügen.
Verkaufen, wenn StepMA PDF ist oben, und der Preis kreuzt RSI 70.
Schließen Sie verkaufen, wenn RSI erreicht 30 (oder kaufen SL, TS und TP), das weiß ich nicht, wie man einfügen.

int doWhat = _doNothing;
      double hull_trend_current  = iCustom(NULL,0,"StepMA pdf 4_6",PERIOD_CURRENT,"",PdfmaLength,SensivityFactor,ConstantStepSize,PdfmaVariance,PdfmaMean,PriceToUse,PdfmaFilter,9,BarToUse);
      double hull_trend_previous = iCustom(NULL,0,"StepMA pdf 4_6",PERIOD_CURRENT,"",PdfmaLength,SensivityFactor,ConstantStepSize,PdfmaVariance,PdfmaMean,PriceToUse,PdfmaFilter,9,BarToUse+1);
      double rsicurrent=iRSI(NULL,0,rsiu,PRICE_CLOSE,0);
      double rsiprevious=iRSI(NULL,0,rsiu,PRICE_CLOSE,1);
      
         if (hull_trend_current==1 && rsiprevious<lowerband&&rsicurrent>=lowerband)
               doWhat = _doBuy;
         
         if (hull_trend_current==-1 && rsiprevious>upperband&&rsicurrent<=upperband)
               doWhat = _doSell;
         
         if (doWhat==_doNothing && !DisplayInfo) return(0);

Aber ich weiß nicht, ob es richtig ist?
Wie kann ich die Close-Bedingung sowohl für den Kauf als auch für den Verkauf erstellen?

extern int rsiu = 14; // RSI period
extern int lowerband = 30; // RSI lowerband
extern int upperband = 70; // RSI upperband
 
simon_json:

Hallo mladen,

Ich versuche, StepMA PDF und RSI wie folgt zu kombinieren. Kaufen Sie, wenn StepMA PDF ist oben, und der Preis kreuzt RSI 30.
Schließen Sie kaufen, wenn RSI erreicht 70 (oder kaufen SL, TS ad TP) und das weiß ich nicht, wie man einfügen.
Verkaufen, wenn der StepMA PDF steigt und der Kurs den RSI 70 übersteigt.
Verkaufen schließen, wenn der RSI 30 erreicht (oder SL, TS und TP kaufen).

Aber ich weiß nicht, ob es richtig ist?
Wie kann ich die Close-Bedingung sowohl für den Kauf als auch für den Verkauf setzen?

Soweit ich das sehe, ist es OK

Was die Schließungsbedingung betrifft: Warum schließen Sie nicht einfach Aufträge des entgegengesetzten Typs, wenn ein Signal zur Eröffnung eines neuen Auftrags eingeht?

 
simon_json:

Hallo mladen,

Ich versuche, StepMA PDF und RSI wie folgt zu kombinieren. Kaufen, wenn der StepMA PDF steigt und der Preis den RSI 30 überschreitet.
Schließen Sie den Kauf, wenn der RSI 70 erreicht (oder kaufen Sie SL, TS und TP), und ich weiß nicht, wie man das einfügt.
Verkaufen, wenn StepMA PDF ist oben, und der Preis kreuzt RSI 70.
Schließen Sie verkaufen, wenn RSI erreicht 30 (oder kaufen SL, TS und TP), das weiß ich nicht, wie man einfügen.

Aber ich weiß nicht, ob es richtig ist?
Wie kann ich die Close-Bedingung sowohl für den Kauf als auch für den Verkauf erstellen?

Wenn sollte auch Kauf schließen, wenn StepMA PDF von oben nach unten ändert (wenn eine Kauforder offen ist).

Und auch Verkaufen schließen, wenn StepMA PDF von unten nach oben wechselt (wenn eine Verkaufsorder offen ist).

 
mladen:

Soweit ich das sehe, ist das in Ordnung.

Was die Schließungsbedingung betrifft: Warum schließen Sie nicht einfach Aufträge des entgegengesetzten Typs, wenn ein Signal zur Eröffnung eines neuen Auftrags eingeht?

Danke für die Antwort!
Ich fürchte, ich verstehe das nicht :) Ich glaube nicht, dass es funktioniert, Aufträge zu schließen, wenn ein Signal zur Eröffnung eines neuen Auftrags eingeht.
Jetzt funktioniert es so:



Und das ist gut so.
Ich möchte auch eine Order durch zwei weitere Bedingungen als nur SL, TP schließen, so wie es jetzt funktioniert.
Und die Bedingungen sollten sein:
Wenn ein Kaufauftrag offen ist undStepMA PDF von oben nach unten wechselt, sollte der Kaufauftrag geschlossen werden.
Wenn
ein Kaufauftrag offen ist und der RSI70 erreicht (oberes Band),sollte der Kaufauftrag geschlossen werden.

Und das Gegenteil für den Verkauf:
Wenn ein Verkaufsauftrag offen ist und StepMA PDF von unten nach oben wechselt, sollte der Verkaufsauftrag geschlossen werden.
Wenn ein Verkaufsauftrag offen ist und der RSI30(unteres Band) erreicht, solltederVerkaufsauftrag geschlossen werden.

 
simon_json:

Danke für die Antwort!
Ich fürchte, ich verstehe das nicht :) Ich glaube nicht, dass es funktioniert, Aufträge zu schließen, wenn ein Signal zur Eröffnung eines neuen Auftrags eingeht.
Jetzt funktioniert es so:



Und das ist gut.
Ich möchte auch eine Bestellung durch zwei weitere Bedingungen als nur SL, TP schließen, wie es jetzt tun.
Und die Bedingungen sollten sein:
Wenn eine Kauforder offen ist undStepMA PDF von oben nach unten wechselt, sollte die Kauforder geschlossen werden.
Wenn
ein Kaufauftrag offen ist und der RSI70 erreicht (oberes Band),sollte der Kaufauftrag geschlossen werden.

Und das Gegenteil für den Verkauf:
Wenn eine Verkaufsorder offen ist und StepMA PDF von unten nach oben wechselt, sollte die Verkaufsorder geschlossen werden.
Wenn ein Verkaufsauftrag offen ist und der RSI30(unteres Band) erreicht, solltederVerkaufsauftrag geschlossen werden.

Simon

Dann müssen Sie die Schließungsbedingungen auf die gleiche Weise prüfen wie die Bedingungen für die Eröffnung

 
mladen:

Versuchen Sie es so:

Danke für den Rat, jetzt funktioniert es perfekt :D

Ändern Sie einfach die Gebotsbedingungen für Kauf und Verkauf.

 

Hallo;

Ist es möglich, die beigefügte Datei so zu kodieren, dass ich die Schriftgröße, die Schriftfarbe und die Position der Ecken im Diagramm ändern kann?

Ich bin für jede Hilfe dankbar.

Danke

Dateien:
 
speedytina:

Hallo;

Ist es möglich, die beigefügte Datei so zu kodieren, dass ich die Schriftgröße, die Schriftfarbe und die Position der Ecken im Diagramm ändern kann?

Ich bin für jede Hilfe dankbar.

Danke

Versuchen Sie etwas wie dieses (alle außer der Ecke)

#property indicator_chart_window
#property strict

extern double LotSize=1;   // Lot Size
extern int    CommentsXPos           = 50;
extern int    CommentsStartYPos      = 20;
extern int    CommentLinesIncrement  = 13;
extern string CommentFont            = "Courier new";
extern int    CommentFontSize        = 10;
extern string CommentsID             = "comment";
extern color  CommentsColorOddLines  = clrDeepSkyBlue;
extern color  CommentsColorEvenLines = clrSandyBrown;

int init()   { return(0); }
int deinit() { return(0); }

#define   NL "\n"
int start()
{
   string DepositCurrency=AccountInfoString(ACCOUNT_CURRENCY);
   double PipValue=(((MarketInfo(Symbol(),MODE_TICKVALUE)*MathPow(10,MathMod(_Digits,2)))/MarketInfo(Symbol(),MODE_TICKSIZE))*LotSize);
   double PointValue=PipValue/10;

   string CommentString="";
   CommentString+="Your deposit currency: " + DepositCurrency +NL;
   CommentString+="Lot size requested: " + DoubleToStr(LotSize,2) +NL;
   CommentString+="-----------------------------------------------------------------"+NL;
   CommentString+="Value of one point (" + Symbol() + "):  $" + DepositCurrency + " " + DoubleToStr(PointValue,3) +NL;
   CommentString+="Value of one pip   (" + Symbol() + ") : $" + DepositCurrency + " " + DoubleToStr(PipValue,3) +NL;
   CommentString+="-----------------------------------------------------------------"+NL;

   displayComment(CommentString,CommentsXPos,CommentsStartYPos,CommentLinesIncrement,CommentsID,CommentsColorOddLines,CommentsColorEvenLines);                 
   return(0);
}


//-------------------------------------------------------------------
//
//-------------------------------------------------------------------
//
//
//
//
//

#include <ChartObjects\ChartObjectsTxtControls.mqh> 
CChartObjectLabel  commentLabels[];

//
//
//
//
//

void displayComment(string comment, int xpos, int ypos, int increment, string id, color commentColorOdd, color commentColorEven)
{
   string lines[];
   int    linesNo = 0;
   int    s =  0;
   int    i =  StringFind(comment,NL,s);
      while (i > 0)
      {
         string current = StringSubstr(comment,s,i-s);
         ArrayResize(lines,linesNo+1); 
                     lines[linesNo] = current; linesNo++;
               s = i + 1;
               i = StringFind(comment,NL,s);
      }
      for (i=ArraySize(commentLabels)-1; i>=0; i--) commentLabels[i].Delete(); ArrayResize(commentLabels,linesNo);
      for (i=0; i<linesNo; i++)
         if (MathMod(i,2)==0)
               LabelCreate(commentLabels[i],id+":"+(string)i,StringSubstr(lines[i],0,StringLen(lines[i])-1),commentColorOdd ,xpos,ypos+i*increment,CommentFontSize,CommentFont);
         else  LabelCreate(commentLabels[i],id+":"+(string)i,StringSubstr(lines[i],0,StringLen(lines[i])-1),commentColorEven,xpos,ypos+i*increment,CommentFontSize,CommentFont);
}
bool LabelCreate(CChartObjectLabel &lbl,const string name,const string text, const color clr,const int x,const int y, int fontSize=10, string font="Courier new") 
{ 
   if (!lbl.Create(0,name,0,x,y)) return(false); 
   if (!lbl.Description(text))    return(false); 
   if (!lbl.FontSize(fontSize))   return(false); 
   if (!lbl.Color(clr))           return(false); 
   if (!lbl.Font(font))           return(false); 
   return(true); 
} 
 

Mladen ich kann es nicht schaffen, es zum Laufen zu bringen. Es aktualisiert sich nicht und zeigt keine Warnungen an. Können Sie mir bitte helfen?

#property version   "1.00"
#property strict


#property indicator_chart_window
#property indicator_buffers    4
#property  indicator_color1     Gold
#property  indicator_color2     DodgerBlue
#property  indicator_color3     LimeGreen
#property  indicator_color4     Crimson

#property  indicator_width1     2
#property  indicator_width2     2
#property  indicator_width3     2
#property  indicator_width4     2

extern string                NOTE1           = "SELECT PARAMETERS OF THE INDICATOR"; //SPAN MA CROSS PARAMS
extern int                   SpanPeriod      = 1;            // Period of Span
extern int                   SpanShift       = -26;          // Shift of Span
extern ENUM_MA_METHOD        SpanMode        = 1;            // Mode of Span
extern ENUM_APPLIED_PRICE    SpanPrice       = 0;            // Applied price of Span
extern int                   MaPeriod        = 55;           // Period of Moving average
extern int                   MaShift         = 0;            // Shift of Moving average
extern ENUM_MA_METHOD        MaMode          = 1;            // Mode of Moving average
extern ENUM_APPLIED_PRICE    MaPrice         = 0;            // Applied price of Moving average

extern string                NOTE2           = "SELECT COLORS/STYLES OF THE INDICATOR"; //SPAN MA CROSS COLORS/STYLES
extern color                 SpanClr         = Gold;         // Span color
extern int                   SpanWdt         = 2;            // Span width
extern ENUM_LINE_STYLE       SpanStl         = 0;            // Span line style
extern color                 MaClr           = DodgerBlue;   // Moving average color
extern int                   MaWdt           = 2;            // Moving average width
extern ENUM_LINE_STYLE       MaStl           = 0;            // Moving average line style

extern string                NOTE3           = "SELECT PARAMETERS OF THE SIGNAL ARROWS"; //SPAN MA CROSS PARAMETERS OF THE SIGNAL ARROWS
extern bool                  DrawArrows      = true;         // Draw signal arrows?
extern bool                  DrawMaLines     = true;         // Draw lines?
extern color                 UpArrowClr      = LimeGreen;    // Up arrow color
extern int                   UpArrowWdt      = 2;            // Up arrow width
extern color                 DnArrowClr      = Crimson;      // Down arrow color
extern int                   DnArrowWdt      = 2;            // Down arrow width
extern int                   ArrowsDistance  = 2;            // Arrows distance from candle
extern int                   ArrowHshift     = 0;            // Shift for arrows from cross signal

extern string                NOTE4           = "SELECT PARAMETERS OF THE ALERT"; //SPAN MA CROSS PARAMETERS OF THE ALERT
extern bool                  AlertsOn        = true;         // Active alert?
extern bool                  AlertsOnCurrent = true;         // Alert on current unclosed bar
extern bool                  AlertsMessage   = true;         // Alert message
extern bool                  AlertsSound     = true;         // Alert sound
extern bool                  AlertsEmail     = false;        // Alert e-mail
extern string                SoundFile       = "alert2.wav"; // Filename of sound alert

string                       IndicatorFileName;
int                          WhichBar;
double                       Gap;


double   SpanBuffer[];     // Buffer of the Span
double   MaBuffer[];       // Buffer of the Moving average
double   CrossUpBuffer[];  // Up arrow buffer
double   CrossDnBuffer[];  // Down arrow buffer
double   TrendBuffer[];    // Span/Ma cross buffer


int init()
  {
   IndicatorFileName = WindowExpertName();
   IndicatorBuffers(5);
   
   
   SetIndexBuffer(0, SpanBuffer);
   SetIndexBuffer(1, MaBuffer);
   SetIndexBuffer(2, CrossUpBuffer);
   SetIndexBuffer(3, CrossDnBuffer);
   SetIndexBuffer(4, TrendBuffer);
   
   if (DrawMaLines) {   
   SetIndexStyle (0, DRAW_LINE, SpanStl, SpanWdt, SpanClr);  
   SetIndexStyle (1, DRAW_LINE, MaStl, MaWdt, MaClr);}
        
   else { 
   SetIndexStyle(0, DRAW_NONE); 
   SetIndexStyle(1, DRAW_NONE);} 
     
   if (DrawArrows) {
   SetIndexStyle (2, DRAW_ARROW, 0, UpArrowWdt, UpArrowClr); SetIndexArrow(2, 233);
   SetIndexStyle (3, DRAW_ARROW, 0, DnArrowWdt, DnArrowClr); SetIndexArrow(3, 234);}
   
   else { 
   SetIndexStyle(2, DRAW_NONE); 
   SetIndexStyle(3, DRAW_NONE);} 
   
   SetIndexShift(2,ArrowHshift);
   SetIndexShift(3,ArrowHshift);
   
return(0);}
  
int deinit() {  return(0); }

int start() {
   int counted_bars = IndicatorCounted();
   int i, limit;

   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
         limit = MathMin(Bars-counted_bars, Bars-1);
         
         
  for(i=limit; i>=0; i--){   
      SpanBuffer[i]  = iMA(NULL, 0, SpanPeriod, SpanShift, SpanMode, SpanPrice, i);
      MaBuffer[i]    = iMA(NULL, 0, MaPeriod, MaShift, MaMode, MaPrice, i);
      Gap = iATR(NULL,0,20,i);
      
      if (i<Bars-1) TrendBuffer[i] = TrendBuffer[i+1];
         if (SpanBuffer[i] > MaBuffer[i]) TrendBuffer[i] = 1;
         if (SpanBuffer[i] < MaBuffer[i]) TrendBuffer[i] =-1;
         
      
         CrossUpBuffer[i] = EMPTY_VALUE;
         CrossDnBuffer[i] = EMPTY_VALUE;
         if (i<Bars-1 && TrendBuffer[i]!= TrendBuffer[i+1])
         if (TrendBuffer[i] == 1)
               CrossUpBuffer[i] = Low[i]  - ArrowsDistance * Gap;
         else  CrossDnBuffer[i] = High[i] + ArrowsDistance * Gap; 
         }
         
         if (AlertsOn)
         {
         if (AlertsOnCurrent)
                  WhichBar = 0;
         else     WhichBar = 1;      
      
         if (TrendBuffer[WhichBar] != TrendBuffer[WhichBar+1])
         if (TrendBuffer[WhichBar] == 1)
               doAlert("uptrend");
         else  doAlert("downtrend");       
   }
   
   return(0);
}


// CUSTOM FUNCTIONS -------------------------

 void doAlert(string doWhat)
{
   static string   previousAlert="nothing";
   static datetime previousTime;
   string message;
   
      if (previousAlert != doWhat || previousTime != Time[0]) {
          previousAlert  = doWhat;
          previousTime   = Time[0];

          message =  StringConcatenate(Symbol()," at ",TimeToStr(TimeLocal(),TIME_SECONDS)," Span ma cross ", doWhat);
             if (AlertsMessage) Alert(message);
             if (AlertsEmail)   SendMail(StringConcatenate(Symbol()," Span ma cross "), message);
             if (AlertsSound)   PlaySound(SoundFile);
      }
      }