[ARCHIV]Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Ohne dich kann ich nirgendwo hingehen - 5. - Seite 148

 
Konstebl:

Bitte sagen Sie mir, warum der EA keine Trades öffnet Fehler 130.Stop Loss = 55 Pips (4 Stellen der Notierungen)


Ich habe Ihren EA ein wenig modifiziert. Ich habe einen Schutz vor falschen Eröffnungskursen.

 extern int PeriodLWMA=14;
 extern int tp=55;
 extern int sl=55;
 extern double MaxRisk=10;
 extern double Lot=0.1;
 bool NewBar()
  {
       static datetime lastbar = 0;
       datetime curbar = iTime(Symbol(), 0, 0);
       if(lastbar!=curbar)
       {
             lastbar=curbar;
             return (true);
       }
       return(false);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
    int ticket;
    double price,takeprofit,stoploss,Lots;
//----
    double frUP = iFractals(NULL,0,MODE_UPPER,3);
    double frLOW = iFractals(NULL,0,MODE_LOWER,3);
    double lwma = iMA(NULL,0,PeriodLWMA,0,MODE_LWMA,PRICE_CLOSE,0);
    frUP = iFractals(NULL,0,MODE_UPPER,3);
    frLOW = iFractals(NULL,0,MODE_LOWER,3);
       double MaxLot = MarketInfo(Symbol(),MODE_MAXLOT);
       double MinLot = MarketInfo(Symbol(),MODE_MINLOT);
       Lots = NormalizeDouble(AccountFreeMargin()/10*MaxRisk/1000,2);
    if(Lots>MaxLot)
       Lots = MaxLot;
    else Lots=Lot;
    if(Lots<MinLot)
       Lots = Lot;
//----
    static bool flag = true;
    if(NewBar())
      flag = true;
      if(Ask>lwma && frUP>Ask && frUP != EMPTY_VALUE && flag)
         {
         price = NormalizeDouble(frUP+(Ask-Bid)+30*Point,Digits);
         takeprofit = NormalizeDouble(price+tp*Point,Digits); 
         stoploss = NormalizeDouble(price-sl*Point,Digits);
         ticket = OrderSend(Symbol(),OP_BUYSTOP,Lots,price,5,stoploss,takeprofit,"Fractal",123,0,Blue);
         if(ticket>0 && GetLastError()==0)
            flag = false;
// Печатаем ошибку только в том случае, если она действительно случилась
         else Print("Ошибка № ",GetLastError()," OP_BUYSTOP Ask=",DoubleToStr(Ask,8)," Bid=",DoubleToStr(Bid,8)," OpenPrice=",DoubleToStr(price,8)," sl=",DoubleToStr(stoploss,8)," tp=",DoubleToStr(takeprofit,8));
            return(ticket);
         }
//-------------------------------------------------------------------
    if(NewBar())
      flag = true;
      if(Bid<lwma && frLOW<Bid && frLOW>0 && frLOW!=EMPTY_VALUE && flag)
         {
         price = NormalizeDouble(frLOW-30*Point,Digits);
         takeprofit = NormalizeDouble(price-tp*Point,Digits);
         stoploss = NormalizeDouble(price+sl*Point,Digits);
         ticket = OrderSend(Symbol(),OP_SELLSTOP,Lots,price,5,stoploss,takeprofit,"Fractal",123,0,Red);
         if(ticket>0 && GetLastError()==0)
            flag = false;
// Печатаем ошибку только в том случае, если она действительно случилась
          else Print("Ошибка № ",GetLastError()," OP_SELLSTOP Ask=",DoubleToStr(Ask,8)," Bid=",DoubleToStr(Bid,8)," OpenPrice=",DoubleToStr(price,8)," sl=",DoubleToStr(stoploss,8)," tp=",DoubleToStr(takeprofit,8));
            return(ticket);
         }
  }
 
Vinin:

Und diese Option ist nicht geeignet. Es ist nicht das Beste.


Ich habe es nachgeschlagen, aber leider ist es nicht das richtige. Ich möchte die Kerze genau so malen, wie sie ist.
 
Ich danke Ihnen!
 
Vinin:

Es wird funktionieren, aber das Ergebnis wird ein anderes sein. Nicht das, was du erwartest.

Können Sie mir sagen, was los ist? Es fällt mir immer noch schwer, mich in diesem Programm mit seinen ungewohnten Funktionen zurechtzufinden.


Vielen Dank im Voraus!

 
arabon:

Können Sie mir sagen, was los ist? Es fällt mir immer noch schwer, mich in diesem Programm mit seinen ungewohnten Funktionen zurechtzufinden.


Vielen Dank im Voraus!


double CalculateProfit_last() {//прибыль от последенй сделки
   double Profit = 0;
   int cnt;
   if(OrdersTotal()!=0)
   {
     cnt = OrdersTotal() - 1;
        OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
        if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
           if (OrderType() == OP_BUY || OrderType() == OP_SELL) Profit = OrderProfit();
   }
   Profit=0.0;  // Зачем вести расчеты, если потом их обнулить
   Print(Profit);
   return (Profit);
}
Und von welcher Reihenfolge ist die Rede? Es handelt sich um den letzten offenen oder den letzten geschlossenen Auftrag. Wenn es die einzige ist, verschwindet die Frage.
 
Vinin:

Und von welcher Reihenfolge ist die Rede? Der letzte offene Auftrag oder der letzte geschlossene Auftrag. Wenn es die einzige ist, dann erübrigt sich die Frage.

Ich muss den Gewinn des letzten abgeschlossenen Auftrags berechnen, natürlich ist das nicht der einzige.


P.S. Ich weiß nicht einmal, warum ich das so herausposaunt habe =)

   }
   Profit=0.0;  // Зачем вести расчеты, если потом их обнулить
   Print(Profit);
   return (Profit);
}
 


Hallo. Dieser Code ist ein Testcode. Die erste Frage lautet: Wie wird die Zeilennummerierung angezeigt?

Und noch etwas: Im obigen Code"ca[1]=Low[100]; Nur diese Variante wird neu zugewiesen" werden dieDaten imArray nur innerhalb der Schleife neu zugewiesen.Wenn ein Array zur Anzeige von Diagrammdaten zugewiesen wird, kann es vielleicht nur einmal neu zugewiesen werden?

int start(){
int i=0 ;int k=0 ;
 while(i<=5000) 
   { 
  k=0 ;
  ca[i]=0;
 volume[i]=0;
 while(k<=10)
 {ca[i]= ca[i]+Volume[i+k]*(High[i+k]+Low[i+k])/2;
  volume[i]=volume[i]+Volume[i+k];
   k=k+1; } ca[i]=ca[i]/volume[i];
    i=i+1;//ca[1]=Low[100]; Переобозначение происходит только в этом варианте  
  }
  ca[1]=Low[100];//Переобозначение не происходит программа не видит  
  int a1=1;
  while(a1==1)//Переобозначение не происходит программа не видит
  {ca[1]=Low[100];
  a1=a1+1;}
  return(0);
  }
 
So funktioniert es. Offenbar habe ich meine eigene Frage beantwortet.
int start(){
int i=0 ;int k=0 ;
 while(i<=500) 
   { 
  k=0 ;
  ca1[i]=0;
 volume[i]=0;
 while(k<=10)
 {ca1[i]= ca1[i]+Volume[i+k]*(High[i+k]+Low[i+k])/2;
  volume[i]=volume[i]+Volume[i+k];
   k=k+1; } ca1[i]=ca1[i]/volume[i];
    i=i+1;
  }
 ca1[0]=Low[100];//Переобозначение  происходит программа  Видит
  //Цикл заполнения массива для отображения значений функции 
   i=0;
    while(i<=500)//Переобозначение происходит программа  Видит
     {ca[i]=ca1[i];
      i=i+1;}
  return(0);
  }
 
T-G:
Können Sie mir sagen, wie Mittel (AccountEquity() ) und Sicherheiten (AccountMargin() ) für Kauf- und Verkaufspositionen getrennt werden?

Sehen Sie nach, ob Sie diese Angaben in I. Kims benutzerdefinierten Angaben finden können: https://www.mql5.com/ru/forum/131859

С

 
Entschuldigung.
leonid553:

Sehen Sie nach, ob Sie diese Angaben in I. Kims benutzerdefinierten Angaben finden können: https://www.mql5.com/ru/forum/131859

С


Leider konnte ich keine finden.