[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 240

 
Ich konnte die Seite nicht finden.
 
1Rakso писал(а) >>
Ich habe die Seite nicht gefunden.

Ich konnte es auch nicht finden. Das spielt keine Rolle.

Wenn Sie mit Eröffnungspreisen arbeiten, reicht es aus, bei der Eröffnung einer neuen Bar nachzusehen.

int start(){
  if (! NevBar()) return(0);
  
  //.......
  
  return(0);
}

bool NevBar(){
  static int prevtime=0;
  if ( prevtime==Time[0]) return(false);
  prevtime=Time[0];
  return(true);
}

Das ist ungefähr richtig. Und wenn die Eröffnung zu anderen Preisen möglich ist. Wir sollten andere Mechanismen nutzen.

Wenn nur eine Position für ein Symbol und einen Zeitrahmen eröffnet werden kann, müssen wir die Anzahl der offenen Positionen kontrollieren.

int CountOrder[6];

// Функция формирует массив с количеством открытых позиций по каждому виду ордеров.
//===============================================================================
int Order_Count_Calculate(string _Symbol, int _Magic, int _OP=-1){
   ArrayInitialize( Order_Count,0);
   for (int i = OrdersTotal() - 1;  i >= 0;  i--) {
      if (!OrderSelect( i, SELECT_BY_POS, MODE_TRADES))   continue;
      if (OrderSymbol() != _Symbol)                     continue;
      if (OrderMagicNumber() != _Magic)                   continue;
      Order_Count[OrderType()]++;
   }
   if (_OP>=0) return( Order_Count[_OP]);
   return(0);
}

Durch die Überprüfung der Werte der erforderlichen Array-Elemente wissen wir nun, wie viele Positionen dieses Typs geöffnet sind.

 
rid >> :

Zum Beispiel (Beispiel für das Setzen eines Kaufstopps) :

(Es ist keineswegs erforderlich, dass der eingestellte Preis im Kursstrom enthalten ist, um einen schwebenden Auftrag einzustellen.

Sie können mit dem aktuellen Kurs oder mit einem beliebigen Kurs gehen, solange Sie das Stopp-Niveau vom AKTUELLEN KURS ZUM STOPP-KURS einhalten)

( 'EURUSD - Trends, Prognosen und Konsequenzen' )

Anstelle von

double priceBUY=..... ....

Ihre Formel eingeben

EH...vielen Dank vor allem für den beigefügten Code! Genau das, was der Arzt verordnet hat! ))))

 
Vinin >> :

Ich konnte es auch nicht finden. Das spielt keine Rolle.

Wenn Sie mit Eröffnungspreisen arbeiten, reicht es aus, bei der Eröffnung einer neuen Bar nachzusehen.

Das ist ungefähr richtig. Und wenn die Eröffnung zu anderen Preisen möglich ist. Wir sollten andere Mechanismen nutzen.

Wenn nur eine Position für ein Symbol und einen Zeitrahmen eröffnet werden kann, müssen wir die Anzahl der offenen Positionen kontrollieren.

Durch die Überprüfung der Werte der erforderlichen Array-Elemente wissen wir nun, wie viele Positionen dieses Typs geöffnet sind.

Vinin! Vielen Dank!
 
total = OrdersTotal();
short = TRUE;
long = TRUE;
                      for (int cnt = 0; cnt < total; cnt++) {
                      OrderSelect( cnt, SELECT_BY_POS, MODE_TRADES);
                      if(OrderSymbol()==Symbol() && OrderMagicNumber()== MagicNumber){
                      if (OrderType() == OP_SELL) short = FALSE;
                      if (OrderType() == OP_BUY) long = FALSE;
                      }
                      }
                    
                     

Ich habe dies in meinem Code, ich verstehe nicht, wie es zu erkennen, dass es eine Bestellung auf dieser Bar und es geschlossen, und wir haben zu warten, bis eine neue Bar?

Wie soll ich das erklären? Vielleicht habe ich mich falsch ausgedrückt oder die Funktion missverstanden....

1) Wenn wir einen Auftrag auf dem Null-Balken öffnen und er bereits geschlossen ist, dann öffnen wir keinen weiteren Auftrag auf diesem Balken, selbst wenn es ein Signal gibt, ihn zu öffnen, weil wir bereits einen Handel auf diesem Balken hatten und er bereits geschlossen ist; wir warten einfach auf den nächsten Balken.

Auf jedem Balken darf nur ein Geschäft eröffnet werden, wenn es auf diesem Balken ein Geschäft gab, eröffnen wir den Auftrag nicht, was ist zu tun?

Menschen helfen.....))) Ich habe bereits einen Nervenzusammenbruch \\\\\\\\>>>>

 
1Rakso писал(а) >>

Ich habe dies in den Code, aber ich verstehe nicht, dieses Array, wie wird es erkennen, wenn es einen Auftrag auf dieser Bar und es geschlossen, und wir werden für eine neue Bar warten?

Wie soll ich das erklären? Vielleicht habe ich mich falsch ausgedrückt oder die Funktion missverstanden....

1) Wenn wir einen Auftrag auf dem Null-Balken öffnen und dieser bereits geschlossen ist, dann öffnen wir keinen weiteren Auftrag auf diesem Balken, selbst wenn es ein Signal gibt, ihn zu öffnen, weil wir bereits einen Handel auf diesem Balken hatten und dieser bereits geschlossen ist.

Auf jedem Balken darf nur ein Geschäft eröffnet werden, wenn es auf diesem Balken ein Geschäft gab, eröffnen wir den Auftrag nicht, was ist zu tun?

Menschen helfen.....))) Ich habe bereits einen Nervenzusammenbruch \\\\\\\\>>>>

Sehen Sie sich den Thread 'Nützliche Funktionen von KimIV' von Igor KIM an. Eine der Funktionen wird Ihre Frage beantworten

 

Ich versuche gerade, einen Ratgeber zu schreiben... Ich fange gerade erst an zu lernen... Fehler 4062 erscheint im Tester...(ERR_STRING_PARAMETER_EXPECTED - 4062 - Parameter vom Typ string wird erwartet)

Ich kann nicht herausfinden, wo ich es reparieren kann. Kann jemand vor Ort einen Blick auf den Code werfen:)

extern double Lots = 0.9;        //лот
extern double StopLoss = 70;
extern double DecreaseFactor = 80;
extern double MaximumRisk    = 0.014;
extern double MaximumLots    = 100;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double GetSizeLot() //оптимизация лотов
  {
   double Lot = Lots;
   int cycle;
   int prof = 0;
   int orders = HistoryTotal();     // history orders total
   int losses = 0;                  // number of losses orders without a break
   int vinn = 0;
   int i = orders;
//---- select lot size
  Lot = NormalizeDouble(AccountFreeMargin()* MaximumRisk / 100, 1);
//----
   if(AccountFreeMargin() <= 14) 
       DecreaseFactor = 14;
//----
   if(AccountFreeMargin() > 10000) 
       DecreaseFactor = 60;
//----
   if( DecreaseFactor > 0 && orders > DecreaseFactor)
     {
       //----
       for( cycle = 1; cycle < DecreaseFactor; cycle++)
         {
           i--;
           //----
           if(OrderSelect( i, SELECT_BY_TICKET, MODE_HISTORY) == false) 
             { 
               Print("Error in history!"); 
               break; 
             } 
           //----
           if(OrderCloseTime()>0)
             {
               prof = prof + OrderProfit(); 
               if(OrderProfit() <= 0 ) 
                   losses++;
               else 
                   vinn++;
             }
         }  
       if( prof <= 0 && losses > vinn) 
           Lot = 0.1;
       if( prof <=0 && vinn > losses) 
           Lot = Lot - (0.1* losses);
       if( prof > 0 && losses > vinn) 
         {
           Lot = Lot + (0.1*NormalizeDouble( vinn / 4, 0.1));
         }
       if( prof > 0 && losses <= vinn )
         {
           Lot = Lot + (0.1*NormalizeDouble( vinn / 2, 0.1));
         }
     } 
   if(AccountFreeMargin() < 300 || Lot < 0.1) 
       Lot = 0.1;
   if( Lot*1275 >= AccountFreeMargin()) 
       Lot = NormalizeDouble(AccountFreeMargin()* MaximumRisk / 100, 1);
   if( MaximumLots != 0 && Lot > MaximumLots) 
       Lot = MaximumLots;
   if( DecreaseFactor > orders) 
       Lot = Lots;
   return( Lot);
  }  
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+  
int start()
  {
  double glav1, sig1, glav2, sig2;
  int cnt, ticket, total;
glav1 =iCustom(NULL,0,"i_Trend",0,1);
sig1 =iCustom(NULL,0,"i_Trend",1,1); 
glav2 =iCustom(NULL,0,"i_Trend",0,2);
sig2 =iCustom(NULL,0,"i_Trend",1,2); 
   total = OrdersTotal();  // проверяем есть ли открытые позиции
   if( total < 1) 
     {
       if(AccountFreeMargin() < (500* Lots))  // проверяем денежки на счету
         {
           Print("Денег почти нет, осталось всего: ", AccountFreeMargin());
           return(0);  
         }
                  }
       // проверяем открытие позиции на покупку
       if(( glav2< sig2)  &&
          ( glav1> sig1))
         {
         OrderSend(Symbol(), OP_BUY, GetSizeLot(), Ask, 3, Ask - StopLoss*Point, "AlanMod expert", 16384, 0, Green);
          return(0); 
          }
           // проверяем возможность открытия на продажу
           if(( glav2> sig2)  &&
          ( glav1< sig1))
             {
             OrderSend(Symbol(), OP_SELL, GetSizeLot(), Bid, 3, Bid + StopLoss*Point, "AlanMod expert", 16384, 0, Red);
               return(0); 
             }
          for( cnt = 0; cnt < total; cnt++)
     {
           OrderSelect( cnt, SELECT_BY_POS, MODE_TRADES);
       if(OrderType() <= OP_SELL &&   // проверка открытой позиции 
          OrderSymbol() == Symbol())  // проверка с нашего ли она графика
         {
           if(OrderType() == OP_BUY)    // если открыта позиция на покупку
             {
                            if( glav1< sig1)// проверяем закрывать или нет?
                 {
                                    OrderClose(OrderTicket(), OrderLots(), Bid, 3, Violet); // закрыли
                   return(0);  // сваливаем
                 }
                              }
           else // если эта позиция на продажу
             {
             if( glav1> sig1)//проверяем закрывать иль нет?
         {
         OrderClose(OrderTicket(), OrderLots(), Ask, 3, Violet); // закрыли
        return(0); // сваливаем
        }
      }
    }
  }
}
 
Reys >> :

Ich versuche gerade, einen Ratgeber zu schreiben... Ich fange gerade erst an zu lernen... Fehler 4062 erscheint im Tester...(ERR_STRING_PARAMETER_EXPECTED - 4062 - Parameter vom Typ string wird erwartet)

Ich kann nicht herausfinden, wo ich es reparieren kann. Kann jemand von euch vor Ort den Code durchsehen:)

1) double NormalizeDouble( double value, int digits), und Sie haben (vinn/2, 0.1)

2) OrderSend(Symbol(), OP_BUY, GetSizeLot(), Ask, 3, Ask - StopLoss*Point,NO TAKE_profit, "AlanMod expert", 16384, 0, Green);

 
Vielen Dank, ich war gerade vor Ihnen)
 

Wie benenne ich die Puffer in den benutzerdefinierten Indikatoren?