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

 

Sagen Sie mir, ob ich ein Programmierer bin, der nicht viel vom Programmieren versteht.

Wird bei der Eröffnung einer Bestellung die Historie berücksichtigt oder nicht?

extern int dDay;
//extern bool fl;

int init()
  {
      return(0);
  }

int deinit()
  {
      return(0);
  }

int start()
  {
      double MA2,MA3;
      double Fr,Fr1;
      double SAR;
      double prof;
      int total,cnt;
      
      MA2 = iMA(NULL,0,2,0,MODE_SMA,PRICE_CLOSE,0);
      MA3 = iMA(NULL,0,5,0,MODE_SMA,PRICE_CLOSE,0);
      Fr = iForce(NULL,0,2,MODE_SMA,PRICE_CLOSE,0);
      Fr1 = iForce(NULL,0,2,MODE_SMA,PRICE_CLOSE,1);
      
      //SAR = iSAR(NULL,0,0.2,2,0);
      
      if((Hour() == 22) && (OrdersTotal() == 0) && (dDay != Day()))
      {
         //if(Open[0] > MA) // BUY
         if(MA3 < MA2)
         //if(SAR < Open[0])
         {
            OrderSend(Symbol(),OP_BUY,1,Ask,3,0,Ask+0.0010,"",2,0,Blue);
            //fl = true;
         }
         //if(Open[0] < MA) // SELL
         if(MA3 > MA2)
         //if(SAR > Open[0])
         {
            OrderSend(Symbol(),OP_SELL,1,Bid,3,0,Bid-0.0010,"",1,0,Red);
            //fl = true;
         }
      
         dDay = Day();
      }
      
      /*if((Hour() == 8) && (OrdersTotal() == 1) && fl)
      {
         fl = false;
         if(OrdersTotal() != 0)
         {
            total = OrdersTotal();
            for(cnt=0;cnt<total;cnt++)
            {  
               OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);         
               prof = OrderProfit() / 10;
               if(prof <= -10)
               {
                  if(OrderType()==OP_BUY)
                  {
                     OrderClose(OrderTicket(), OrderLots(), Bid, 3, Yellow);   
                     OrderSend(Symbol(),OP_SELL,1,Bid,3,0,Bid-0.0010,"",1,0,Red);
                  }
                  if(OrderType()==OP_SELL)
                  {
                     OrderClose(OrderTicket(), OrderLots(), Ask, 3, Red);
                     OrderSend(Symbol(),OP_BUY,1,Ask,3,0,Ask+0.0010,"",2,0,Blue);
                  }
               }
            }
         }
      }*/
  
      
      if(OrdersTotal() != 0)
      {
         total = OrdersTotal();
         for(cnt=0;cnt<total;cnt++)
         {  
            OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);                     
            prof = OrderProfit() / 10;
            if(prof >= 4)
            {
               if(OrderType()==OP_BUY)
               {
                  OrderClose(OrderTicket(), OrderLots(), Bid, 3, Yellow);   
               }
               if(OrderType()==OP_SELL)
               {
                  OrderClose(OrderTicket(), OrderLots(), Ask, 3, Red);
               }
            }
         }
      }

      return(0);
  }
 
baykanur:

Sag mir, wenn ich nicht gut programmieren kann.

Wird dies bei der Eröffnung einer Bestellung in der Historie angezeigt oder nicht?



1) Verwenden Sie den SRC-Tag beim Einfügen von Code

2) löschen Sie das Auskommentierte.

3) Sagen Sie uns, was Sie sehen wollen und was die Diskrepanz ist

 
ilunga:

1) Verwenden Sie den SRC-Tag beim Einfügen von Code

2) Entfernen Sie das, was auskommentiert ist

3) Sagen Sie mir, was Sie sehen wollen und worin die Diskrepanz besteht.

src eingefügt

Was wird auskommentiert?

es gibt eine Diskrepanz in der Anzahl der profitablen Geschäfte im Tester, deshalb habe ich gefragt

 

Ich möchte lernen, wie man Levels auf dem Chart in Abhängigkeit von den Indikatorwerten in einem separaten Fenster zeichnen kann. Wenn der MACD beispielsweise die Stufe 0 von unten nach oben kreuzt, wird eine Linie auf dem Diagramm gezeichnet, die dem Tiefpunkt des Balkens entspricht, an dem die Kreuzung stattfindet. Wenn der MACD von oben nach unten gekreuzt wird, wird die Linie auf High entsprechend eingezeichnet. Ich habe etwas geschrieben, es wird ohne Fehler kompiliert, aber es passiert nichts. Können Sie mir bitte helfen?

#property  indicator_chart_window
#property  indicator_buffers 1
#property  indicator_color1  Blue

double    Buffer[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- drawing settings
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,Buffer);

   return(0);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int start()
  {
   int limit;
   double level;
   int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
   for(int i=0; i<limit; i++)
      
      double    macd = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i);
      double    macd1 = iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i+1);
      
      if (macd > 0 && macd1 < 0)
      {
      level = iLow("EURUSD",PERIOD_M1,i); //Почему выскакивает ощибка если написать просто iLow[i]?
      Buffer[i]=level;
      }
      else if (macd < 0 && macd1 > 0)
      {
      level = iHigh("EURUSD",PERIOD_M1,i); //Почему выскакивает ощибка если написать просто iHigh[i]?
      Buffer[i]=level;
      }
   return(0);
  }
 
baykanur:

src eingefügt

Ich weiß nicht, was kommentiert wurde

es gibt eine Diskrepanz in der Anzahl der profitablen Geschäfte im Tester

Es sind immer 2 Objekte im Spiel, die verglichen werden.

Stimmt der Tester nicht mit der Demo im gleichen Zeitraum überein? Zum Beispiel, weil die Streuung im Testgerät anders ist

 
Ichimo:

Ich möchte lernen, wie man Levels auf dem Chart in Abhängigkeit von den Indikatorwerten in einem separaten Fenster zeichnen kann. Wenn der MACD beispielsweise die Stufe 0 von unten nach oben kreuzt, wird eine Linie auf dem Diagramm gezeichnet, die dem Tiefpunkt des Balkens entspricht, an dem die Kreuzung stattfindet. Wenn der MACD von oben nach unten gekreuzt wird, wird die Linie auf High entsprechend eingezeichnet. Ich habe etwas geschrieben, es wird ohne Fehler kompiliert, aber es passiert nichts. Bitte um Hilfe.

Linie ist mindestens 2 Punkte ;)

Buffer[i]=level;

es ist ein Punkt, die angrenzenden Punkte sind wahrscheinlich Null. deshalb kann die Linie nirgendwo gezogen werden

 //Почему выскакивает ощибка если написать просто iLow[i]?
weil Low[i] kein "i" am Anfang hat
 
Vinin:

Wo ist der Korb?
Ich kann Sie zu Ihrem Warenkorb führen... :)
 
Gibt es eine Möglichkeit, den Abstand zwischen den beiden Preisen in 3-4 Teile zu teilen, nicht nur zu teilen, sondern auch den Preis jedes der resultierenden Teile zu kennen?
 
sss2019:
Gibt es eine Möglichkeit, den Abstand zwischen den beiden Preisen in 3-4 Teile zu teilen, nicht nur zu teilen, sondern auch den Preis jedes der resultierenden Teile zu kennen?
double price1;

double price2;

...

if (price1 > price2)
{
   double delta = price1 - price2;
   double level1 = price2 + delta*0.25;
   double level2 = price2 + delta*0.5;
   double level3 = price2 + delta*0.75;
}
=)
 
ilunga:

eine Linie besteht aus mindestens 2 Punkten ;)

dies ist ein Punkt, die benachbarten Punkte sind wahrscheinlich Null. daher kann man nirgendwo eine Linie ziehen

weil Low[i] kein "i" am Anfang hat



Ich muss also entweder einen früheren Punkt erstellen oder einen Pfeil anstelle einer Linie zeichnen. Danke, ich werde mir weiter den Kopf zerbrechen.