[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 673

 
artmedia70:
Isto é, preciso adicionar uma chamada para exibir informações na janela indicadora no init()?


tente escrever no init()

int init()
{
Alert("Não encontro sua caixa, estou fora daqui, embora tenha sido chamado na seção init()");
return(0);
}

 
IgorM:


Bem, tente escrever no init()

int init()
{
Alerta("Não consigo encontrar sua caixa, estou fora daqui, embora tenha sido chamado na seção init()");
retorno(0);
}

:) Você está plagiando? :)
 

Ajude-me a lidar com este problema! Se eu tiver um negócio perdido, eu preciso mudar o lote, se não - não. Eu faço isso ......

//====================================================
// Расчет размера позиции
//====================================================
double CalculateLots(){
   double Res=dLots;
   bool bProfit=true;
   int PrevTime=-1;
   double tmpLots;
   for (int i=0;i<OrdersHistoryTotal();i++){
      if (!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)) continue;
      if (OrderSymbol()!=Symbol())                    continue;
      if (OrderMagicNumber()!=MAGIC)                  continue;
      if (OrderCloseTime()<PrevTime)                  continue;
      PrevTime=OrderCloseTime();
      if (OrderProfit()>0) bProfit=true; else bProfit=false;
      tmpLots=OrderLots();
   }
   double Lots_Step=MarketInfo(Symbol(), MODE_LOTSTEP);
   if (!bProfit) Res=tmpLots+Lots_Step;
   return(Res);
}

Eu tenho que mudar o lote se eu quiser mudá-lo, mas não vou mudar. O problema é que quando mudo de lote já tenho um pedido pendente (com outros lotes). Eu preciso apagar estas ordens e mudar o número de lotes nelas (para um novo), mas os parâmetros permanecem os mesmos !


 


Caros programadores,
Por favor, responda a seguinte pergunta:

Você pode me dizer por que os dados de um fio não são inseridos corretamente na matriz?

extern string Sessions_begin="15:31;14:11";
extern string Sessions_end="22:32;18:12"; 

int mas_time_begin[10][2], mas_time_end[10][2];  //первый - № сессии,
            // второй время[][1]-первый элемень время(часы), [][2]-минуты.

//
str_len_begin=StringLen(Sessions_begin)

Print("Длина str_len_begin="+str_len_begin);
  for (n=1,i=0; i<=str_len_begin; i+=6,n++)
  {
   mas_time_begin[n][1]=StrToInteger(StringSubstr(Sessions_begin,i,2));
   mas_time_begin[n][2]=StrToInteger(StringSubstr(Sessions_begin,i+3,2));
   mas_time_end[n][1]=StrToInteger(StringSubstr(Sessions_end,i,2));
   mas_time_end[n][2]=StrToInteger(StringSubstr(Sessions_end,i+3,2));
  Print("n= "+n);
  Print("i= "+i);

  Print("Начало сессии "+n+" в(вывод через Print) "+StringSubstr(Sessions_begin,i,2)+":"+StringSubstr(Sessions_begin,i+3,2)); 
  Print("Конец сессии "+n+" в (вывод через Print) "+StringSubstr(Sessions_end,i,2)+":"+StringSubstr(Sessions_end,i+3,2));
  Print("Начало сессии "+n+" в(вывод через Массив) "+mas_time_begin[n][1]+":"+mas_time_begin[n][2]);
  Print("Конец сессии "+n+" в(вывод через Массив) "+mas_time_end[n][1]+":"+mas_time_end[n][2]);
  }

Aqui está o que eu tenho agora:

http://savepic.ru/1410881.gif

 

Господа, не подскажете ли? Есть проблема в сортировке ордеров при включении или (наложении) отремонтированного советника на имеющиеся уже, выставленные отложки. Я тут пытался соорудить коды для поиска, распознавания и переприсвоения имеющихся номеров ордеров, чтоб советник воспринимал их как свои, но результат какой-то неопределённый. Советник при включении начинает лупить некоторые отложки в тоже место с теми же параметрами.....Может у кого есть коды или мысли по этой теме, для многих ордеров?

Obrigado a todos os que responderam.

 
Hedin:


Caros programadores,
por favor, respondam a seguinte pergunta:

Você pode me dizer por que os dados da string não são inseridos corretamente na matriz?

Isto é o que eu recebo agora:


http://savepic.ru/1410881.gif http://savepic.ru/1410881.gif

O tamanho da matriz na segunda dimensão não está definido corretamente:

int mas_time_begin[10][2], mas_time_end[10][2];  //первый - № сессии,

Os elementos da matriz começam com 0, e você está nestas entradas

mas_time_begin[n][2]=StrToInteger(StringSubstr(Sessions_begin,i+3,2));
mas_time_end[n][2]=StrToInteger(StringSubstr(Sessions_end,i+3,2));
querem escrever dados na célula 3 (0, 1, 2), embora a segunda dimensão seja definida com duas (somente os índices 0, 1 podem ser usados).

Solução: Ou ampliar a matriz na segunda dimensão

int mas_time_begin[10][3], mas_time_end[10][3];  //первый - № сессии,

ou reescrever os índices ao escrever os valores

mas_time_begin[n][0]=StrToInteger(StringSubstr(Sessions_begin,i,2));
mas_time_begin[n][1]=StrToInteger(StringSubstr(Sessions_begin,i+3,2));
mas_time_end[n][0]=StrToInteger(StringSubstr(Sessions_end,i,2));
mas_time_end[n][1]=StrToInteger(StringSubstr(Sessions_end,i+3,2));
 
rosomah:

Cavalheiros, podem aconselhar? Tenho um problema com a classificação das ordens quando habilito ou (sobreponho) uma EA reparada em ordens já colocadas pendentes. Tentei construir códigos para procurar e reatribuir os números de pedidos disponíveis para que a EA os reconheça como seus próprios números, mas o resultado é indefinido. Quando eu a habilito, a EA começa a colocar alguns pedidos pendentes no mesmo lugar com os mesmos parâmetros..... - Alguém tem algum código ou sugestão sobre este tópico para muitos pedidos?

Obrigado por seu feedback.

Depende de como a EA define "coruja - estrangeiro", se estiver usando um número mágico, então não há nada que você possa fazer com ordens pendentes já definidas, pois este parâmetro não pode ser alterado para uma ordem já definida.
Se ele armazena bilhetes, vamos supor, em variáveis globais, então já é mais fácil, os bilhetes já existentes podem ser "adicionados à base". Portanto, esta é a principal questão para você nesta fase. Como isso determina?
 
ToLik_SRGV:

Depende de como o EA define "coruja - estrangeiro". Se for definido por número mágico, então não há nada a ver com pedidos já feitos pendentes, pois este parâmetro não pode ser alterado para um pedido já feito.

Sim, e se houver uma grade de diferentes ordens pendentes, com furos formados porque algumas ordens pendentes foram acionadas, algumas movidas, etc. Eles precisam ser reconhecidos, renumerados e preenchidos por um "novo" Expert Advisor. É claro que podemos fazer isso manualmente, mas... Então por que se preocupar com a MTS? Para um pedido, podemos ao menos obtê-lo de N.Morzhov:

int poisk;

if(poisk==0)

{ int k;

for(k=0; k<OrderTotal();k++)

{ if(OrderSelect(k,SELECT_BY_POS,MODE_TRADES)==falso)break;

if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=Magic)cjntinue

ticket_buy1=OrderTicket();

poisk=1; }}}}

mas como lidar com um conjunto de ordens?

 
Quem sabe quando o tutorial do mql5 está programado para sair?
 
Abzasc:
Quem sabe quando o tutorial do mql5 está programado para sair?

https://www.mql5.com/ru/forum/491