[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 55

 
Cercando un UMPC da usare nel mio lavoro diurno, potresti per favore dirmi se MT4 funzionerà su un netbook come questo http://cgi.ebay.com/4-8-TOUCH-LCD-BenQ-S6-HSDPA-UMPC-3G-NETBOOK-XP-/190490113552?pt=Laptops_Nov05&hash=item2c5a187610#ht_15003wt_1139 È troppo da fotografare, così ho fornito un link.
 
afirius:
Alla ricerca di un UMPC da utilizzare nel mio lavoro di giorno, potrebbe dirmi se MT4 funzionerà su questo netbook 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 Immagine troppo, così ho fornito un link.

 
Sergstuddek:
Salve. Si prega di scrivere il codice per aprire un ordine pendente (stop) relativo a un ordine già aperto (ultimo).


Beh, questo è un classico. :)

Il codice dovrebbe assomigliare a questo:

Se c'è un ordine aperto, calcoliamo il suo prezzo di impostazione. Poi dovremmo aggiungere una certa distanza a questo prezzo (può essere negativo) - otteniamo il livello in cui l'ordine pendente sarà impostato. Poi controlliamo se non c'è un ordine pendente e se la distanza dall'ordine pendente è maggiore o uguale al livello minimo ammissibile, piazziamo l'ordine pendente su questo livello. Questo è quanto. Il codice dovrebbe assomigliare a questo.

La sua richiesta è soddisfatta?

 
È possibile inserire i parametri di ottimizzazione desiderati nel tester MT4 tramite testo o altro file?
 
Sergey_Rogozin:
È possibile inserire i parametri di ottimizzazione desiderati nel tester MT4 con un file di testo o altro?
Cercare un auto-ottimizzatore nel codebase
 

Conosciuto questo articolo, ho provato ad eseguire l'auto-ottimizzatore, ma non ha funzionato per me.

Non ho abbastanza conoscenze.

Ho bisogno di qualcosa di più semplice.

Tuttavia, grazie.

 
drknn:


È un classico. :)

Il codice di programmazione dovrebbe assomigliare a questo:

Se c'è un ordine aperto, calcola il suo prezzo di impostazione. Poi dobbiamo aggiungere una certa distanza a questo prezzo (può essere negativo) - otteniamo il livello al quale è impostato l'ordine pendente. Poi controlliamo se non c'è un ordine pendente e se la distanza dall'ordine pendente è maggiore o uguale al livello minimo ammissibile, allora su questo livello, piazziamo l'ordine pendente. Questo è quanto. Il codice dovrebbe assomigliare a questo.

Soddisfatto?

+10 Buona canna da pesca... :)

Ora ci sono due possibili sviluppi - la persona scriverà del codice usando questo algoritmo, facendo domande sul caso, o farà notare che non è un codice, ma un algoritmo e aspetterà una soluzione pronta... :)

 
sergeev:

Avete bisogno di un ordine pendente di bystop/slestop

O avete bisogno di uno stop loss in un ordine esistente?


Prima opzione: un ordine pendente bystop/sllestop.

Per favore, scrivete del codice di base come template in modo che io possa guardarlo e capirlo.

 
drknn:


Questo è un classico. :)

Il codice di programmazione dovrebbe assomigliare a questo:

Se c'è un ordine aperto, calcola il suo prezzo di impostazione. Poi dobbiamo aggiungere una certa distanza a questo prezzo (può essere negativo) - otteniamo il livello al quale è impostato l'ordine pendente. Poi controlliamo se non c'è un ordine pendente e se la distanza dall'ordine pendente è maggiore o uguale al livello minimo ammissibile, piazziamo l'ordine pendente su questo livello. Questo è quanto. Il codice dovrebbe assomigliare a questo.

La sua richiesta è soddisfatta?


La classe è buona, ma c'è ancora un problema)))

In teoria, lo capisco, ma in pratica, non posso farlo. Forse potete dare un'occhiata al mio codice e dirmi cosa c'è di sbagliato.

#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);
Capisco che è un semplice EA, ma ho appena iniziato il mio viaggio)))) e ho già un problema
 

Domanda sull'indicatore.

L'indicatore è un indicatore a croce. Tira molte frecce da una parte, poi molte dall'altra. Come rendere solo i primi ad essere disegnati. Ho provato nel modo indicato nel codice, ma cambia quando cambio la cornice.

Per favore, consigliatemi come farlo correttamente.

 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;}
   }