[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 328

 
Wenn es keinen Parametersatz von ФВ > 30 gibt, dann ist der Expert Advisor nutzlos.

Wie viele EAs haben Sie mit diesem PV und gleichzeitig beträgt die Anzahl der Trades mindestens 200 (100 auf Buy und 100 auf Sell)?

Wenn Sie nicht nur den Parameter "Nettogewinn", sondern auch den "Erholungsfaktor" oder den maximalen Drawdown einstellen - und von diesen Positionen aus betrachten.

In MT5 ist so etwas bereits vorhanden, sehr bequem und übersichtlich, aber man kann keine "Schnitte" wie in diesem Programm machen. Vielleicht sollten Sie die Entwickler fragen und sie werden es tun...
 
FelixFX:

Hallo!

Ich kann nicht herausfinden, wie man eine benutzerdefinierte Funktion mehrere Werte zurückgeben lässt? Können Sie mir einen Tipp geben?



Dies ist nicht Pascal - es gibt keine Prozeduren...:-) Eine Funktion - ein Wert...:-)

Siehe die Funktion GetMarketInfo des Skripts zum Schließen aller Aufträge - die Verwendung von Arrays ist möglich.

//+------------------------------------------------------------------+
//|                                               CloseAllOrders.mq4 |
//|                       Copyright © 2008, PRMQuotes Software Corp. |
//|                                           Jedimedic77@gmail.com  |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, PRMQuotes Software Corp."
#property link      ""
//+------------------------------------------------------------------+
//| EX4 imports                                                      |
//+------------------------------------------------------------------+
#include <stdlib.mqh>
//+------------------------------------------------------------------+
//| global variables to program:                                     |
//+------------------------------------------------------------------+
double Price[2];
int    giSlippage;
bool   CloseOpenOrders = true;
//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
void start() {
  int iOrders=OrdersTotal()-1, i;
  
  if(CloseOpenOrders) {
    for(i=iOrders; i>=0; i--) {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && (OrderType()<=OP_SELL) && GetMarketInfo() && !OrderClose(OrderTicket(),OrderLots(),Price[1-OrderType()],giSlippage)) Print(OrderError());
    }
  }
}
//+------------------------------------------------------------------+
//| Function..: OrderError                                           |
//+------------------------------------------------------------------+
string OrderError() {
  int iError=GetLastError();
  return(StringConcatenate("Order:",OrderTicket()," GetLastError()=",iError," ",ErrorDescription(iError)));
}
//+------------------------------------------------------------------+
//| Function..: GetMarketInfo                                        |
//+------------------------------------------------------------------+
bool GetMarketInfo() {
  RefreshRates();
  Price[0]=MarketInfo(OrderSymbol(),MODE_ASK);
  Price[1]=MarketInfo(OrderSymbol(),MODE_BID);
  double dPoint=MarketInfo(OrderSymbol(),MODE_POINT);
  if(dPoint==0) return(false);
  giSlippage=(Price[0]-Price[1])/dPoint;
  return(Price[0]>0.0 && Price[1]>0.0);
}
//+------------------------------------------------------------------+
 
Diubakin:

Wie viele EAs haben Sie mit diesem PV und gleichzeitig haben Sie mindestens 200 Trades (100 für Kauf und 100 für Verkauf)?

...

Das ist genug. FS = 34. Und eigentlich ist das nicht die Frage, die Sie mir gestellt haben...:-) Vor allem, wenn Sie diese Zweige lesen - der Autor hat dort deutlich geschrieben, dass diese Zahlen

30 für TC und 100 für das Portfolio - sein IMHO.... "Nimm kein Blatt vor den Mund, bitte. Ich habe nicht behauptet, dass es so sein sollte. 30 ist meine persönliche Marotte. Nicht mehr als das... "

 

Roman

...

Entschuldigung, ich habe nicht bemerkt, dass Sie jemand anderen zitiert haben, aber der Bericht ist beeindruckend.

 
Diubakin:

Entschuldigung, ich habe nicht bemerkt, dass Sie jemand anderen zitiert haben, aber der Bericht ist beeindruckend.


:-) Weiter geht's...
 
                           ticket=OrderSend(Symbol(),OP_BUYSTOP ,0.01,Ask+q*Point,5,0,Ask+50*Point,"Aw",MN,0,CLR_NONE);
                           ticket=OrderSend(Symbol(),OP_SELLSTOP,0.01,Bid-q*Point,5,0,Bid-50*Point,"Aw",MN,0,CLR_NONE);
                           if (!ticket) Print(GetLastError());

                        ticket=OrderTicket();                           
                        for (i=OrdersTotal(); i>0;  i--)
                        {
                           if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
                           {
                              if (OrderComment()=="Aw")
                              {
                                 if (OrderType()==OP_BUYSTOP)
                                 {
                                    t=OrderModify(OrderTicket(),pb,0,TPb,0,CLR_NONE);
                                    if (!t) Print("BUY О Ш И Б К А = ",GetLastError());
                                 }
                                    
                                 if (OrderType()==OP_SELLSTOP)
                                 {
                                    t=OrderModify(OrderTicket(),ps,0,TPs,0,CLR_NONE);
                                    if (!t) Print("SELL О Ш Ы Б К А = ",GetLastError());
                                 }
                              }
                           }
                        }

Bitte helfen Sie!

Der Code öffnet zwei schwebende Aufträge und sollte beide ändern...

Es verändert aber nur das anstehende Salz.

q=20;

pb=Ask+20*Punkt;

ps=Gebot+20*Punkt;

Tb=Ask+50*Punkt;

Ts=Bid+50*Pointl;

 
smartemiy:

Bitte helfen Sie!

Der Code öffnet zwei schwebende Aufträge und sollte beide ändern...

Es verändert aber nur das anstehende Salz.

q=20;

pb=Ask+20*Punkt;

ps=Gebot+20*Punkt;

Tb=Ask+50*Punkt;

Ts=Gebot+50*Punkt;

Schauen Sie sich die Zahlen an, um zu sehen, was Sie bekommen

if (OrderType()==OP_BUYSTOP)
{
 t=OrderModify(OrderTicket(),pb,0,TPb,0,CLR_NONE);
 if (!t) Print("BUY О Ш И Б К А = ",GetLastError());
}
                                    
if (OrderType()==OP_SELLSTOP)
{
  t=OrderModify(OrderTicket(),ps,0,TPs,0,CLR_NONE);
 if (!t) Print("SELL О Ш Ы Б К А = ",GetLastError());
 }

Sie wollen sowohl einen Kauf- als auch einen Verkaufsstopp 20 Punkte über dem aktuellen Kurs setzen

 
ilunga:

mal sehen, was du mit den Zahlen hast.

Sie möchten, dass sowohl der Kauf- als auch der Verkaufsstopp 20 Punkte über dem aktuellen Kurs liegen.

Ich habe es von Hand eingetippt...

Im Code sieht das so aus:

pb=Ask+20*Punkt;

ps=Gebot-20*Punkt;

Tb=Ask+50*Punkt;

Ts=Gebot+50*Punkt;

 
extern int variable = 0;
extern int shift = 0.0000;
extern int shift2 = 0.0000;
int init()
{
//----

//----
zurück(0);
}
//+------------------------------------------------------------------+
//| Experten-Deinitialisierungsfunktion |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
zurück(0);
}
//+------------------------------------------------------------------+
//| Expertenstartfunktion |
//+------------------------------------------------------------------+
int start()
{
//----
SetLabel("MA_LABEL",DoubleToStr(iMA(Symbol(),15,variable,0,MODE_SMA,PRICE_CLOSE,0),shift,2),Bisque,735,277,0,14);
SetLabel("MA_LABEL2",DoubleToStr(iMA(Symbol(),15,variable,0,MODE_SMA,PRICE_CLOSE,0),shift2,2),Bisque,680,27 7,0,14)
//----
zurück(0);
}
//+------------------------------------------------------------------+


void SetLabel(string nm, string tx, color cl, int xd, int yd, int cr=0, int fs=9) {
if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_LABEL, 0, 0,0);
ObjectSetText(nm, tx, fs);
ObjectSet(nm, OBJPROP_COLOR, cl);
ObjectSet(nm, OBJPROP_XDISTANCE, xd);
ObjectSet(nm, OBJPROP_YDISTANCE, yd);
ObjectSet(nm, OBJPROP_CORNER, cr);
ObjectSet(nm, OBJPROP_FONTSIZE, fs);
}



mehr Tipps, bitte.
Ich kann die vertikale Verschiebung nach oben und shift2 nach unten nicht aus dem Handgelenk bekommen.
Dieser Parameter sollte für jedes Diagramm anders gesetzt werden.
Ich erhalte einen Kompilierfehler
 
smartemiy:

Ich habe es von Hand eingetippt...

Im Code sieht das so aus:

pb=Ask+20*Punkt;

ps=Gebot-20*Punkt;

Tb=Ask+50*Punkt;

Ts=Gebot+50*Punkt;

Tb und Ts im Sinne von TPb und TPs? dann wieder ging in eine Richtung, aber die Aufträge sind unterschiedlich

Nehmen Sie alle Werte heraus und sehen Sie, was Sie erhalten

Grund der Beschwerde: