[Arquivo!] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por ela. Não poderia ir a lugar algum sem você - 2. - página 55

 
Procurando por um UMPC para usar em meu trabalho diário, você poderia me dizer se o MT4 irá trabalhar em um netbook como este http://cgi.ebay.com/4-8-TOUCH-LCD-BenQ-S6-HSDPA-UMPC-3G-NETBOOK-XP-/190490113552?pt=Laptops_Nov05&hash=item2c5a187610#ht_15003wt_1139. É muito para fotografar, então eu forneci um link.
 
afirius:
Procurando um UMPC para usar em meu trabalho diário, você poderia me dizer se o MT4 trabalhará neste 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 Imagem demais, então eu forneci um link.

Sim
 
Sergstuddek:
Olá. Favor escrever o código para abrir uma ordem pendente (stop) relativa a uma (última) ordem já aberta.


Bem, isso é um clássico. :)

O código deve ser parecido com este:

Se houver uma ordem em aberto, calculamos seu preço de fixação. Então devemos acrescentar alguma distância a este preço (pode ser negativo) - obtemos o nível onde a ordem pendente será estabelecida. Então verificamos se não há ordem pendente e se a distância até a ordem pendente é maior ou igual ao nível mínimo permitido, então, neste nível, colocamos a ordem pendente. É isso mesmo. O código deve ser parecido com este.

Seu pedido está satisfeito?

 
É possível inserir os parâmetros de otimização desejados no testador MT4 por texto ou outro arquivo?
 
Sergey_Rogozin:
É possível inserir os parâmetros de otimização desejados no testador MT4 com um texto ou outro arquivo?
Procure um auto-optimizador na base de código
 

Familiarizado com este artigo, tentou executar o auto-optimizador, mas não funcionou para mim.

Eu não tenho conhecimentos suficientes.

Eu preciso de algo mais simples.

No entanto, obrigado.

 
drknn:


É um clássico. :)

O código de programação deve ter este aspecto:

Se houver uma ordem em aberto, calcular seu preço de fixação. Então devemos acrescentar uma certa distância a este preço (pode ser negativo) - obtemos o nível em que a ordem pendente é estabelecida. Então verificamos se não há ordem pendente e se a distância até a ordem pendente é maior ou igual ao nível mínimo permitido, então, neste nível, colocamos a ordem pendente. É isso mesmo. O código deve ser parecido com este.

Satisfeito?

+10 Boa cana de pesca... :)

Agora há dois desenvolvimentos possíveis - a pessoa escreverá o código usando este algoritmo, fazendo perguntas sobre o caso, ou ele apontará que não é um código, mas um algoritmo e esperará por uma solução pronta... :)

 
sergeev:

Você precisa de um pedido bystop/slestop pendente

Ou você precisa de uma parada de perda em uma ordem existente?


Primeira opção: uma ordem bystop/sllestop pendente.

Por favor, escreva algum código básico como modelo para que eu possa ver e entender.

 
drknn:


Este é um clássico. :)

O código de programação deve ter este aspecto:

Se houver uma ordem em aberto, calcular seu preço de fixação. Então devemos acrescentar uma certa distância a este preço (pode ser negativo) - obtemos o nível em que a ordem pendente é estabelecida. Então verificamos se não há ordem pendente e se a distância até a ordem pendente é maior ou igual ao nível mínimo admissível, colocamos a ordem pendente neste nível. É isso mesmo. O código deve ser parecido com este.

Seu pedido está satisfeito?


Classe é bom, mas ainda há um problema))))

Em teoria, eu o entendo, mas na prática, não posso fazê-lo. Talvez você possa olhar para meu código e me dizer o que está errado.

#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);
Entendo que é uma simples EA, mas estou apenas começando minha jornada)))) e já tenho um problema
 

Pergunta sobre o indicador.

O indicador é um indicador cruzado. Desloca muitas flechas para um lado, depois muitas para o outro. Como fazer apenas os primeiros a serem sorteados. Eu tentei da maneira dada no código, mas ele muda quando eu troco o frame.

Por favor, aconselhe como fazer isso corretamente.

 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;}
   }
Razão: