[Archiv!] Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Könnte nirgendwo ohne dich hingehen - 2. - Seite 55

 
Ich suche einen UMPC für meine tägliche Arbeit. Könnten Sie mir bitte sagen, ob MT4 auf einem Netbook wie diesem funktioniert http://cgi.ebay.com/4-8-TOUCH-LCD-BenQ-S6-HSDPA-UMPC-3G-NETBOOK-XP-/190490113552?pt=Laptops_Nov05&hash=item2c5a187610#ht_15003wt_1139 Es ist zu viel zum Fotografieren, deshalb habe ich einen Link angegeben.
 
afirius:
Auf der Suche nach einem UMPC für meine tägliche Arbeit, könnten Sie mir sagen, ob MT4 auf diesem Netbook funktioniert https://www.mql5.com/go?link=https://www.ebay.com/itm/4-8-TOUCH-LCD-BenQ-S6-HSDPA-UMPC-3G-NETBOOK-XP-/190490113552?hash=item2c5a187610&pt=Laptops_Nov05[hash]ht_15003wt_1139 Bild zu viel, so habe ich einen Link zur Verfügung gestellt.

Ja
 
Sergstuddek:
Hallo. Bitte schreiben Sie den Code für die Eröffnung einer schwebenden (Stop-)Order relativ zu einer bereits geöffneten (letzten) Order.


Nun, das ist ein Klassiker. :)

Der Code sollte wie folgt aussehen:

Liegt ein offener Auftrag vor, wird der Preis für den Auftrag berechnet. Dann sollten wir zu diesem Preis einen gewissen Abstand hinzufügen (er kann negativ sein) - so erhalten wir das Niveau, auf dem die Pending Order gesetzt wird. Dann prüfen wir, ob es keinen schwebenden Auftrag gibt, und wenn der Abstand zum schwebenden Auftrag größer oder gleich dem minimal zulässigen Niveau ist, platzieren wir den schwebenden Auftrag auf diesem Niveau. Das ist es. Der Code sollte wie folgt aussehen.

Ist Ihr Wunsch erfüllt?

 
Ist es möglich, die gewünschten Optimierungsparameter per Text- oder anderer Datei in den MT4-Tester einzugeben?
 
Sergey_Rogozin:
Ist es möglich, die gewünschten Optimierungsparameter mit einer Text- oder anderen Datei in den MT4-Tester einzugeben?
Suche nach einem Auto-Optimierer in der Codebasis
 

Ich bin mit diesem Artikel vertraut und habe versucht, den Auto-Optimierer auszuführen, aber er hat bei mir nicht funktioniert.

Ich habe nicht genug Wissen.

Ich brauche etwas Einfacheres.

Trotzdem danke ich Ihnen.

 
drknn:


Es ist ein Klassiker. :)

Der Programmiercode sollte wie folgt aussehen:

Wenn ein offener Auftrag vorliegt, berechnen Sie den Preis, zu dem er eingestellt wird. Dann müssen wir zu diesem Preis einen bestimmten Abstand addieren (er kann negativ sein) - so erhalten wir das Niveau, bei dem die Pending Order gesetzt wird. Dann prüfen wir, ob es keinen schwebenden Auftrag gibt, und wenn der Abstand zum schwebenden Auftrag größer oder gleich dem minimal zulässigen Niveau ist, dann platzieren wir auf diesem Niveau den schwebenden Auftrag. Das ist es. Der Code sollte wie folgt aussehen.

Zufrieden?

+10 Gute Angelrute... :)

Nun gibt es zwei mögliche Entwicklungen - die Person wird einen Code schreiben, der diesen Algorithmus verwendet, und Fragen zu dem Fall stellen, oder sie wird darauf hinweisen, dass es sich nicht um einen Code, sondern um einen Algorithmus handelt, und auf eine fertige Lösung warten... :)

 
sergeev:

Sie benötigen einen schwebenden Bystop/Slestop-Auftrag

Oder benötigen Sie einen Stop-Loss in einem bestehenden Auftrag?


Erste Möglichkeit: ein schwebender bystop/sllestop-Auftrag.

Bitte schreiben Sie einige grundlegende Code wie Vorlage für mich zu sehen und zu verstehen.

 
drknn:


Dies ist ein Klassiker. :)

Der Programmiercode sollte wie folgt aussehen:

Wenn ein offener Auftrag vorliegt, berechnen Sie den Preis, zu dem er eingestellt wird. Dann müssen wir zu diesem Preis einen bestimmten Abstand addieren (er kann negativ sein) - so erhalten wir das Niveau, bei dem die Pending Order gesetzt wird. Dann prüfen wir, ob es keinen schwebenden Auftrag gibt, und wenn der Abstand zum schwebenden Auftrag größer oder gleich dem minimal zulässigen Niveau ist, platzieren wir den schwebenden Auftrag auf diesem Niveau. Das ist es. Der Code sollte wie folgt aussehen.

Ist Ihr Anliegen erfüllt?


Stilvoll ist gut, aber es gibt immer noch ein Problem)))

In der Theorie verstehe ich es, aber in der Praxis kann ich es nicht. Vielleicht können Sie sich meinen Code ansehen und mir sagen, was falsch ist.

#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
// Суть советника в том что сначала он открывает первый ордер на покупку
// затем выставляет стопы в две стороны
// в одну сторону как продолжене уже открытого ордера
// в другую в два раза больше в случае разворота графика
// стопы выставляются по отношению к последнему открытому советником ордеру
// с каждым новым открытием нового отложеного ордера, все старые удаляються
// а ноые отложеные стопы уже открываются относительно нового открытого ордера.
#define MAGIC  20101012
extern double Lot=1;            // Размер лота
extern int TP=0;                // Тейкпрофит
extern int SL=0;                // СтопЛосс
extern int DS=0;                // Дистанция  для открытия ордера в противоположну сторону
int buys=0,sells=0;
int i=0;
//-----------------------------------------------------
void DeleteStopOrders()
{
  int res;
  for(int i=0;i<OrdersTotal();i++)
  {
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
    if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
    {
      if(OrderType()==OP_SELLSTOP)
        res=OrderDelete(OrderTicket());
      if(OrderType()==OP_BUYSTOP)
        res=OrderDelete(OrderTicket());
     }
  }
}
        
void OpenBuy()
    
   {
   int tickbuy2  =OrderSend(Symbol (), OP_BUY, Lot,  NormalizeDouble(Ask,Digits), 5, Ask-SL*Point,Ask+TP*Point, NULL, MAGIC, 0, Green); // покупка первого ордера при запуске советника
   }
//+------------------------------------------------------------------+
//| считаем количество открытых ордеров                              |
//+------------------------------------------------------------------+
int CalculateCurrentOrders1(string symbol)
{
   int buys=0,sells=0;
//----
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
        {
         if(OrderType()==OP_BUY)  buys++;
         if(OrderType()==OP_SELL) sells++;
        }
     }
//---- return orders volume
   return(buys+sells);   
}
//+------------------------------------------------------------------+
//| считаем количество отложеных ордеров                              |
//+------------------------------------------------------------------+
int CalculateCurrentOrders2(string symbol)
{
   int buys=0,sells=0;
//----
   for(int i=0;i<OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGIC)
        {
         if(OrderType()==OP_BUYSTOP)  buys++;
         if(OrderType()==OP_SELLSTOP) sells++;
        }
     }
//---- return orders volume
   return(buys+sells);   
}

int OpenStops()

{for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true && OrderType()==OP_BUY)   // Проверка на то что открытый ордер на покупку
int ticket;
double LotSize=OrderLots();                                                                                 // Размер лота открытого ордера
double OpenPrice=OrderOpenPrice();                                                                          // Цена открытия открытого ордера
ticket=OrderSend(Symbol(),OP_SELLSTOP,LotSize*2,OpenPrice-DS*Point,0,SL*Point,TP*Point,"",MAGIC,0,Red);            // Открытие отложки на продажу в противополжну сторону до открытого ордера   
ticket=OrderSend(Symbol(),OP_BUYSTOP,Lot,OpenPrice+TP*Point,0,SL*Point,TP*Point,"",MAGIC,0,Blue);                  // Открытие отложки на покупку в сторону продолжения до открытого ордера

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true && OrderType()==OP_SELL)  // Проверка на то что открытый ордер на продажу
ticket=OrderSend(Symbol(),OP_SELLSTOP,Lot,OpenPrice-TP*Point,0,SL*Point,TP*Point,"",MAGIC,0,Red);                  // Открытие отложки на покупку в сторону продолжения до открытого ордера
ticket=OrderSend(Symbol(),OP_BUYSTOP,LotSize*2,OpenPrice+DS*Point,0,SL*Point,TP*Point,"",MAGIC,0,Blue);            // Открытие отложки на покупку в противополжну сторону до открытого ордера
}
}
  
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
  if (CalculateCurrentOrders1(Symbol())==0)
   OpenBuy();
  if (CalculateCurrentOrders2(Symbol())<=1)
  DeleteStopOrders();
  if (CalculateCurrentOrders2(Symbol())<=1)
   OpenStops();
//----
   return(0);
Ich verstehe, es ist eine einfache EA, aber ich bin gerade erst meine Reise)))) und haben bereits ein Problem
 

Frage zum Indikator.

Der Indikator ist ein Kreuzindikator. Zieht eine Menge Pfeile auf die eine Seite, dann eine Menge auf die andere. So werden nur die ersten gezogen. Ich habe es auf die im Code angegebene Weise versucht, aber es ändert sich, wenn ich den Rahmen wechsle.

Bitte beraten Sie mich, wie ich es richtig mache.

 for(int i=limit-1;i>=0;i--)
   {      
         if ( s == 0 &&    условие продажи)
               {Продажа[i] = High[i]+point*Point;            
                s=1; b=0;}               
      
         if (b == 0 &&     условие покупки)
        
          
              {Покупка[i] = Low[i]-point*Point; 
               s=0; b=1;}
   }