Hilfe bei der Codierung - Seite 778

 

Kann mir jemand zeigen, wie man diesen Code kürzer machen kann? Wie kann ich for cycle dafür verwenden?

extern double S1,S2,S3,S4,S5,S6,S7,S8,S9,S10,S11,S12,S13,S14,S15;
if (S1==1234) S1=DoubleToString(S1);
if (S2==1234) S2=DoubleToString(S2);
if (S3==1234) S3=DoubleToString(S3);
if (S4==1234) S4=DoubleToString(S4);
if (S5==1234) S5=DoubleToString(S5);
if (S6==1234) S6=DoubleToString(S6);
if (S7==1234) S7=DoubleToString(S7);
if (S8==1234) S8=DoubleToString(S8);
if (S9==1234) S9=DoubleToString(S9);

Ich möchte so etwas, weiß aber nicht, wie ich die Variablennamen ändern kann.

for(i=1; i<=9; i++){
if (S+i==1234) S+i=DoubleToString(S+i);
}
 
Karel Nagel:

Kann mir jemand zeigen, wie man diesen Code kürzer machen kann? Wie kann ich for cycle dafür verwenden?

Ich möchte so etwas, weiß aber nicht, wie man die Variablennamen ändert.

Aufgrund der Beschränkungen von MQL können Sie ein Array nicht mit einer Liste von Eingaben initialisieren. (Nur konstante Ausdrücke wie { 2, 5, 3.1 } sind möglich.)

Aber da Sie sowieso Doubles in Strings umwandeln müssen, können Sie StringFormat verwenden. Das Interessante an dieser Funktion ist, dass sie eine beliebige Anzahl von Argumenten akzeptiert.

Mit Hilfe von StringSplit können Sie ein Array im Handumdrehen erstellen:

string line=StringFormat("%g %g %g %g %g %g %g %g %g",S1,S2,S3,S4,S5,S6,S7,S8,S9);
string numbers[];
int count=StringSplit(line,' ',numbers);
for(int i=0; i<count; i++)
  {
   if(numbers[i]=="1234") Print(" S",i+1," == 1234");
  }
 
rsiArray[0] = iRSI(NULL,0,10,PRICE_CLOSE,1);
rsiArray[1] = iRSI(NULL,0,10,PRICE_CLOSE,2);
rsiArray[2] = iRSI(NULL,0,10,PRICE_CLOSE,3);
rsiArray[3] = iRSI(NULL,0,10,PRICE_CLOSE,4);
rsiArray[4] = iRSI(NULL,0,10,PRICE_CLOSE,5);
ArraySetAsSeries(rsiArray, true); 

upperEnv = iEnvelopesOnArray(rsiArray, 0, 5,MODE_SMA, 0, 5, MODE_UPPER, 0);
lowerEnv = iEnvelopesOnArray(rsiArray, 0, 5,MODE_SMA, 0, 5, MODE_LOWER, 0); 

Ich habe versucht, dies herauszufinden, für zu lange jetzt, ich brauche Hilfe.

Die Umschlagwerte sind nicht entsprechend mit rsiArray[0] oder zu jedem Wert, den ich auf den Charts sehen und ich kann nicht herausfinden, warum.


Irgendwelche Ideen?


Danke

EDIT: (behoben) ok, alles was ich tun musste, war mt4 neu zu starten und der Code funktionierte einwandfrei.

 

Ich habe Stunden damit verbracht, zu versuchen, einen EA / Dienstprogramm zu bekommen, um richtig zu arbeiten und mehrere Änderungen vorgenommen, bis mein Gehirn ist taub. Beigefügt ist eine vorläufige Version und ich werde es verbessern, sobald ich über die Hürde der Grundlagen richtig funktioniert, die einen Alarm ertönen, wenn ein offener Kauf / Verkauf, um hinzugefügt wird und einen anderen Alarm, wenn ein offener Auftrag kaufen / verkaufen geschlossen wird. Diese Version funktioniert manchmal und manchmal nicht so unzuverlässig an dieser Stelle.


//+------------------------------------------------------------------+
//|               myNotify.mq4                                       |
//|               Notify me by sound file of change in orders        |
//+------------------------------------------------------------------+

//---- input parameters
extern string OrderClosedWav = "OrderClosed.wav";
extern string OrderOpenedWav = "OrderOpened.wav";
string sVersion = "1.39";
int iOld, iNew = 0;
int i = 0;
uchar ii = 0;
long NewOrdersHash = 0;
long OldOrdersHash = 0;

int nOrders = 0;

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   
//----
   return(0);
  }
// +------------------------------------------------------------------+
// |  expert deinitialization function                                |
// +------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+

int start()
{ 
    nOrders = 0;
    NewOrdersHash = 0;

//First Pass
    for(i=OrdersTotal()-1;i>=0;i--)
       {
         OrderSelect(i, SELECT_BY_POS);
         if (OrderType() < 2)           // NOT "OP_BUYLIMIT" || "OP_BUYSTOP" //|| "OP_SELLLIMIT" || "OP_SELLSTOP")
         {
           NewOrdersHash = NewOrdersHash + OrderTicket();
           nOrders++;
         } 
       } 

OldOrdersHash = NewOrdersHash;
iOld =nOrders;

    Comment ("Ver ",sVersion," \n",
         iOld,"\n", iNew,"\n\n", ii,"\n\n",
         OrderOpenedWav,"\n",
         OrderClosedWav,"\n\n",
         "Old:  ",OldOrdersHash,"\n",
         "New: ",NewOrdersHash,"\n\n",
         nOrders,"\n");
// Wait
         Sleep(2000);

//Second Pass to compare after short pause
    nOrders = 0;
    NewOrdersHash = 0;
    for(i=OrdersTotal()-1;i>=0;i--)
       {
         OrderSelect(i, SELECT_BY_POS);
         if (OrderType() < 2)           // NOT "OP_BUYLIMIT" || "OP_BUYSTOP" //|| "OP_SELLLIMIT" || "OP_SELLSTOP")
         {
           NewOrdersHash = NewOrdersHash + OrderTicket();
           nOrders++;
         } 
       } 
iNew = nOrders;

    if (ii > 24) {ii = 1;} else {ii++;}
       
    Comment ("Ver ",sVersion," \n",
         iOld,"\n", iNew,"\n\n", ii,"\n\n",
         OrderOpenedWav,"\n",
         OrderClosedWav,"\n\n",
         "Old:  ",OldOrdersHash,"\n",
         "New: ",NewOrdersHash,"\n\n",
         nOrders,"\n");
    if (OldOrdersHash != NewOrdersHash)
    {
     if (iNew > iOld)
       PlaySound(OrderOpenedWav);
     else
       PlaySound(OrderClosedWav);
    }

return(0);

}  

/*
void OrdersF()
   {

    nOrders = 0;
    NewOrdersHash = 0;
    for(int i=OrdersTotal()-1;i>=0;i--)
       {
         OrderSelect(i, SELECT_BY_POS);
         if (OrderType() < 2)          
         {
           NewOrdersHash = NewOrdersHash + OrderTicket();
           nOrders++;
         } 
       } 
    iNew = nOrders;
    return;
   }
*/
//+------------------------------------------------------------------+

 

Hallo Leute, ich bin neu. Ich möchte eine sehr einfache Änderung an diesem Indikator vornehmen

Wie und wo kann ich einfach in das Beschreibungsfeld der horizontalen Linie das Wort "Alert_" eingeben?

damit es automatisch erscheint?

Ich freue mich auf Ihre Antwort



//+------------------------------------------------------------------+

//|                                              horizontal line.mq4 |
//|                                                          Wdholic |
//|                            https://www.mql5.com/en/users/wdholic |
//+------------------------------------------------------------------+
#property copyright "Wdholic"
#property link      "https://www.mql5.com/en/users/wdholic"
#property version   "1.00"
#property strict

#import "cfunctions.dll" 
int      MT4_ScreenToClient(int hWnd, int& iX[]);  
#import
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  { 
    double pmax=ChartGetDouble(0,CHART_PRICE_MAX);
    double pmin=ChartGetDouble(0,CHART_PRICE_MIN);
    double Ymax=ChartGetInteger(0,CHART_HEIGHT_IN_PIXELS)*1.0;
   //  Alert(pmin);Alert(pmax);Alert(Ymax);
   int iCoords[2] ;
    int hWin = WindowHandle( Symbol(), Period());  
   
    MT4_ScreenToClient(hWin, iCoords);    
               
    double cory=iCoords[1]*1.0;
    double range=(pmax-pmin);
    
    double XY= (cory*1.0)/Ymax;
      double P=pmax-XY*range;
     
        
   Line("test_",P,clrAqua);
   WindowRedraw();
   return;
  }
//+------------------------------------------------------------------+

void Line(string t,double P,color C )
{ int a=1;string nm;
    nm="line_"+t+string(a);
  while(ObjectFind(0,nm)==0){ a++; nm="line_"+t+string(a);}
  
if(ObjectFind(0,nm)<0){
  ObjectCreate(0,nm,OBJ_HLINE,0,0,0); 
  ObjectSet( nm,OBJPROP_COLOR,C);}
  ObjectSet( nm,OBJPROP_PRICE1,P);  
  ObjectSet( nm,OBJPROP_SELECTED,1);  
}

 

Kann mir jemand helfen, dies zu codieren. Putting Rectangle als Hoch und Tief der letzten 3 Monate wie gezeigt danke

Dateien:
INDIxxx.jpg  243 kb
 

Jemand hilft mit Stoploss auf vorherige ma Kreuz



 

Hallo,

ich habe eine Idee. Aber ich weiß nicht, mq4 Code viel.

Vorheriges Hoch ist niedriger als das 2. vorherige Hoch, dann kaufe ich eineschwebende Order zum vorherigen Hoch * 2% oder 1% und wenn der Preis der aktuellen Kerze diese Order berührt, kaufe ich.

Vorheriges Tief ist höher als das 2. vorhergehende Tief, dann verkaufe die ausstehende Order zum vorherigen Tief * -2% oder -1% und wenn der Preis der aktuellen Kerze diese Order berührt, verkaufe.

Beliebiger Zeitraum. Kein Ziel Kein Stop-Loss. Nachlaufender Stop-Loss wie gegenüber.

Dankbar an jeden, der mq4 Code machen kann. Ich brauche Hilfe. Nur MT4.

 

Hallo...

Können Sie bitte einen Experten für diese Strategie erstellen

Verstärkungs-Experte

Einstellungen:

1.Option: Nur Verkaufen / Nur Kaufen

2.TP: 50

3.Sl: 00

4.Schritt: 150

5.Start Lot: 0,1

6.Multiplikation: 1.2.4.8.16... ..

7.Aufträge insgesamt: 100

8.Magische Zahl: 111111

Die Arbeitsmethode:

1- Automatische Eröffnung einer Position zu Beginn um die angegebene Losgröße .

2- Änderung von Tp für alle Trades auf jeder Verstärkung .

Gemäß der folgenden Gleichung: Tp für die letzte Doppelposition deckt uns alle gleitenden Verluste + Gewinn der letzten Position .

3- Rückkehr zum Anfangslos .

 
BANSINO Money Maker:

Hallo ...

Können Sie bitte einen Experten für diese Strategie erstellen

Verstärkungs-Experte

Einstellungen :

1. Option: Nur Verkaufen / Nur Kaufen

2. TP: 50

3. Sl: 00

4. Schritt: 150

5. Start Lot: 0,1

6. Multiplikation: 1.2.4.8.16... ...

7. Aufträge insgesamt: 100

8. Magische Zahl: 111111

Die Arbeitsmethode :

1- Automatische Eröffnung einer Position zu Beginn um die angegebene Losgröße .

2- Änderung von Tp für alle Trades auf jeder Verstärkung .

Nach der folgenden Gleichung: Tp für die letzte Doppelposition deckt uns alle gleitenden Verluste + Gewinn der letzten Position .

3- Rückkehr zum Anfangslos .

Posten Sie es als Job in der Rubrik Freelance.