Hilfe bei der Codierung - Seite 658

 

Liebe mladen

Wenn ich die letzte geschlossene Orderart wissen möchte und ob sie in einem EA Gewinn gemacht hat, kann die folgende Funktion die Arbeit erledigen:

int OrdersProfit()
  {
   int Profit;
   for (int i=OrdersHistoryTotal(); i>=0; i--)
     {
      if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
      if (OrderType()==OP_BUY  && OrderProfit()> 0) Profit ="1" ;
      if (OrderType()==OP_SELL && OrderProfit()> 0) Profit ="2" ;
     }    
   return(Profit);
  }


Am besten,

 
IXI:

Liebe mladen

Wenn ich wissen möchte, welcher Auftragstyp zuletzt geschlossen wurde und ob er in einem EA Gewinn gemacht hat, kann die folgende Funktion diese Aufgabe erfüllen:


Am besten,

Nein, kann sie nicht (einfach weil die geschlossenen Orders nicht nach Geschäftsschluss geordnet sind - zumindest sagt uns das das Handbuch: keine Garantie, dass die Orders nach Geschäftsschluss geordnet sind). Es muss in etwa so gemacht werden:

int OrdersProfit()
{
   int      profit    = 0;
   datetime CloseTime = 0;
       for(int i=OrdersHistoryTotal()-1;i>=0;i--)
       {
           if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
           if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber && OrderCloseTime()>CloseTime)
           {
              CloseTime = OrderCloseTime();
              if (OrderType()==OP_BUY  && OrderProfit()> 0) Profit =1 ;
              if (OrderType()==OP_SELL && OrderProfit()> 0) Profit =2 ;
           } 
       }
       return(Profit);
}  
 

Liebe mladen

vielen Dank für Ihre perfekte Antwort.

Beste,

 

Liebe Freunde,

Könnt ihr die beigefügten Indikatoren für den neuesten Build von mt4 bitte aktualisieren?

Vor allem, "123PatternsV6" ist friert mt4 und nicht funktioniert!

 
oguz:

Liebe Freunde,

Könnt ihr die beigefügten Indikatoren für den neuesten Build von mt4 bitte aktualisieren?

Vor allem, "123PatternsV6" ist friert mt4 und nicht funktioniert!

Ich denke, 123 braucht Zickzack-Indikator für die Arbeit mit aus Einfrieren Terminal.
 
mntiwana:
Ich denke, 123 braucht Zickzack-Indikator für die Arbeit mit aus Einfrieren Terminal.

Zigzag-Indikator ist bereits verfügbar in mt4.

 
oguz:

Der Zickzack-Indikator ist bereits in mt4 verfügbar.

Der neue Zickzack-Indikator funktioniert nicht wie die vorherigen Versionen. Es wird das Terminal hängen, wenn einige Parameter von iCustom() Aufrufe verwendet werden
 

Hallo.

ich habe vor kurzem begonnen, MQL4 zu programmieren, um Erfahrungen zu sammeln, damit ich in der Lage bin, meine eigenen Ideen zu programmieren, um sie vorher zu testen.

Jetzt im struggeling mit dem Timing der Malerei.

Sagen wir, ich habe ein if-Statment für einige Stochastik und wollen warten, bis die MA geht über oder unter Preis vor Malerei, wie kann ich das tun?

Was ich versucht habe und das einzige, was mir in den Sinn kam:

if(iStochastic(NULL, PERIOD_CURRENT, _K_period, _D_period, Slowing, MODE_SMA, 0, MODE_MAIN, i) > 80
      && iStochastic(NULL, PERIOD_CURRENT, _K_period, _D_period, Slowing, MODE_SMA, 0, MODE_MAIN, i+1) < 80

 while High[i] > iMA(NULL, PERIOD_CURRENT, MAfilter, 0, MODE_EMA, PRICE_CLOSE, i+1) //Candlestick High < Moving Average
            (
               1+1
            )
       
      )

{
         Buffer1[i] = High[i]; //Set indicator value at Candlestick High
         if(i == 0 && Time[0] != time_alert) { myAlert("indicator", "Selling opportunity"); time_alert = Time[0]; } //Instant alert, only once per bar
        }
      else
        {
         Buffer1[i] = 0;

die 1+1 nur, um die while-Schleife zu füllen, was ich zu tun versuche, ist zu warten, um den Pfeil zu malen, bis das Hoch des Preises unter dem MA ist, aber dennoch möchte ich nicht, dass dies zu sein und Anweisung, da das Kreuz happend ich will nur warten, util i malen.

jedoch war dies nicht sucsessful, daher frage ich die professionelle Programmierer in der Gemeinschaft

 
NWFstudent:

Hallo.

ich habe vor kurzem begonnen, MQL4 zu programmieren, um Erfahrungen zu sammeln, damit ich in der Lage bin, meine eigenen Ideen zu programmieren, um sie vorher zu testen.

Jetzt im struggeling mit dem Timing der Malerei.

Sagen wir, ich habe ein if-Statment für einige Stochastik und wollen warten, bis die MA geht über oder unter Preis vor Malerei, wie kann ich das tun?

Was ich versucht habe und das einzige, was mir in den Sinn kam:

die 1+1 nur, um die while-Schleife zu füllen, was ich zu tun versuche, ist zu warten, um den Pfeil zu malen, bis das Hoch des Preises unter dem MA ist, aber dennoch möchte ich nicht, dass dies zu sein und Anweisung, da das Kreuz happend ich will nur warten, util i malen.

jedoch war dies nicht sucsessful, daher frage ich die professionelle Programmierer in der Gemeinschaft

Versuchen Sie, wie diese :

Buffer1[i] = 0;
if(   iStochastic(NULL, PERIOD_CURRENT, _K_period, _D_period, Slowing, MODE_SMA, 0, MODE_MAIN, i)   > 80
   && iStochastic(NULL, PERIOD_CURRENT, _K_period, _D_period, Slowing, MODE_SMA, 0, MODE_MAIN, i+1) < 80 
   && High[i] > iMA(NULL, PERIOD_CURRENT, MAfilter, 0, MODE_EMA, PRICE_CLOSE, i+1)) //Candlestick High < Moving Average
         Buffer1[i] = High[i]; //Set indicator value at Candlestick High

if(i == 0 && Time[0] != time_alert && Buffer1[i]!=0) { myAlert("indicator", "Selling opportunity"); time_alert = Time[0]; } //Instant alert, only once per bar
 
mladen:

Versuchen Sie Folgendes:

Dies wird mir das "Signal nur, wenn der Crossover occure über die MA, ich will es unter der MA, aber ich will auch das Signal, wenn ich ein Crossover über die MA und ein paar Bars später der Preis bewegt sich unter der MA.

Das ist, was ich mit der while-Schleife versucht, so dass der Code würde Schleife, bis das Argument falsch wird und proceeed, um das Signal zu malen.

Ich habe eine schematische Zeichnung gemacht, vielleicht werden Sie besser verstehen.

Trotzdem vielen Dank für Ihre Antwort

Dateien:
illust.png  24 kb