Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 206

 
mikhail12:

Mas se você reabrir, a posição é cortada pela quantidade do spread.

Bem, isso seria uma perversão particularmente limpa. Acho que não.
 
tara:

Bem, isso seria uma perversão particularmente elegante. Acho que não.

Sim, eu já verifiquei, acho... se não fosse, você poderia manter uma venda autsraelense em uma conta islâmica, e uma compra em uma conta de spread. Haveria lucros estáveis... mais do que no banco
 

1. Situação de fechamento parcial de um pedido - o bilhete é alterado e escrito no comentário ao novo pedido, é claro, ele pode ser retirado.
2.A situação de alguns corretores ao transferir uma posição durante a noite/fim de semana, eles fecham a posição e a abrem novamente no início do dia, como se comporta o bilhete neste caso? O antigo bilhete está escrito no comentário do novo cargo, nada acontece? Quais são as formas de acompanhar os pedidos, se houver mais de 4-8 deles?

 
Vladislav: você deveria ter apagado o post, imho.
 
artmedia70:


data/hora é a mesma que a int



Me fez pensar - eu tinha certeza de que a data era uma int sem assinatura, eu verifiquei e você estava certo. Acontece que o MT4 não viverá mais do que 2038 ;). Ainda há tempo )))))))))))))))))))))))).
 
tara:
Vladislav: você não deveria ter apagado o post, imho.


Não é por nada, IMHO, é claro: a data é realmente intrigante. Embora, em geral, tudo escrito esteja correto, mas não neste caso. Aqui eu não consigo entender a lógica dos desenvolvedores da ICL (((((((((((((. Talvez o corrijam em uma nova versão do idioma.

HH o significado do post eliminado era que os tipos deveriam ser usados como pretendido, caso contrário você pode se deparar com erros de tempo de execução. Neste caso para data é melhor datar, não int, porque há uma esperança de que o descasamento de tipos seja corrigido.

 
VladislavVG:


Não por nada, IMHO, é claro: a data é realmente intrigante. Embora, tudo o que foi escrito esteja correto em geral, mas não neste caso. Não consigo entender a lógica dos desenvolvedores da ICL aqui (((((((((((((. Talvez o corrijam em uma nova versão do idioma.

HH o significado do post eliminado era que os tipos deveriam ser usados como pretendido, caso contrário, você pode se deparar com erros de tempo de execução. Neste caso, para a data é melhor data, mas não int, porque há esperança de que o descasamento de tipos seja corrigido.


Concordo, não devemos usar int em vez de data, ou cor. nem mesmo por causa de erros de execução, mas pelo que vai acontecer quando os desenvolvedores colocarem as coisas em ordem.
 
VladislavVG:


Não por nada, IMHO, é claro: a data é realmente intrigante. Embora, tudo o que foi escrito esteja correto em geral, mas não neste caso. Não consigo entender a lógica dos desenvolvedores da ICL aqui (((((((((((((. Talvez o corrijam em uma nova versão do idioma.

SZ o significado do post eliminado era que os tipos deveriam ser usados como pretendido, caso contrário, você pode se deparar com erros de tempo de execução. Neste caso, para a data é melhor data, mas não int, porque há esperança de que o descasamento de tipos seja corrigido.

Sim. Eles prometeram 8 bytes como na MQL5. Acho que será do tipo __time64_t (UNIXTIME64).
 
solnce600:

Cavalheiros profissionais.... Estou confuso

TarasBY eartmedia70 dizem que meu erro está relacionado com o valor da variável que armazena o número mágico da ordem


Vinin diz quenão se trata de número mágico, mas de lógica errada......... artmedia70 argumenta com ele

.

Se os profissionais não têm um consenso sobre meu problema, o que devo fazer como iniciante para resolver meu problema ?


O erro com o mágico faz com que sua EA não veja que sua posição é fechada em uma parada ao fechar em uma parada. Por quê? A resposta é que você abre uma posição com Magic 123 e envia a variável Magic para a função que verifica o fechamento da posição na parada. O que você acha que é igual durante a inicialização implícita? Zero. A função é naturalmente procurar posições com o número mágico 0 e é igual a 123 em suas posições. E nós não estamos discutindo, apenas... ...raciocínio... Verifique a reação de fechamento na parada:


double   Lot;
int      Magic=123;

int start() {

   double Price=iOpen(Symbol (),0,0);
          
   int last_order_bar=0; 
   int ot=OrdersTotal();
   if (ot>0) {
      if (OrderSelect(ot-1,SELECT_BY_POS))
         if (OrderType()==OP_BUY || OrderType()==OP_SELL) last_order_bar=iBarShift(Symbol(),0,OrderOpenTime()); 
      }                                    

   int last_hist_order_bar=0;   
   int oht=OrdersHistoryTotal(); 

   if (oht>0) { 
      if (OrderSelect(oht-1,SELECT_BY_POS, MODE_HISTORY))    
         if (OrderType()==OP_BUY || OrderType()==OP_SELL) last_hist_order_bar=iBarShift(Symbol(),0,OrderOpenTime());
      }

   if (ot==0)
      if (Bid==Price)
  //=============================================================== 
         if(((Open[1]-Close[1])>100*Point)&&((Open[1]-Close[1])<120*Point))
            if(((High[1]-Open[1])>40*Point)&&((High[1]-Open[1])<60*Point))
               if(((Close[1]-Low[1])>40*Point)&&((Close[1]-Low[1])<60*Point))
  //============================================================
                  Lot=MarketInfo(Symbol(), MODE_MINLOT);   
                  if (isCloseLastPosByStop(Symbol(), OP_BUY, Magic, Lot)) {
                     Lot=Lot*2;
                     OrderSend(Symbol(),OP_SELL,Lot,Bid,1,Ask+1500*Point,Ask-300*Point,"jfh",123 );
                     }
                  else {
                     Lot=0.1;        
                     OrderSend(Symbol(),OP_SELL,1,Bid,Lot,Ask+1500*Point,Ask-300*Point,"jfh",123 );
                     }
   return(0);
}
//+----------------------------------------------------------------------------+
bool isCloseLastPosByStop(string sy, int op, int mn, double &ll) {
   double   pt;
   int      dg, i, j=-1, k=OrdersHistoryTotal()-1;
   datetime t=0;                                   // во избежание возможных ошибок после возможных будущих улучшений
   for (i=k; i>=0; i--) {
     if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
         if (OrderMagicNumber()!=mn)   continue;   // если магик не тот, переходим к следующему
         if (OrderSymbol()!=sy)        continue;   // если символ не тот, переходим к следующему
         if (OrderType()!=op)          continue;   // если тип не тот, переходим к следующему
         if (t<OrderCloseTime()) {
            t=OrderCloseTime();
            j=i;
            }
         }
      }
   if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
      dg=MarketInfo(OrderSymbol(), MODE_DIGITS);      // количество знаков в цене символа ордера
      pt=MarketInfo(OrderSymbol(), MODE_POINT);       // размер пункта инструмента в валюте котировки ордера
      if (MathAbs(OrderClosePrice()-OrderStopLoss())<0.5*pt) { // Если закрыт по стопу
         ll=OrderLots();                              // записываем количество лотов в ордере, закрытом по стопу
         return(true);                                // возвращаем истину
         }
      }
   return(False);                                     // возвращаем ложь (позиции нету, либо не по стопу)
}
//+----------------------------------------------------------------------------+

Eu não olhei para o resto de sua lógica EA "morta" - eu estava ajudando você a descobrir a função para verificar o fechamento na parada...

 
tara:

Seja bem-vindo. Boa sorte!

Alexei! Boa tarde!

Nossa comunicação não sai da minha cabeça...... e aqui está o porquê.....

Em relação à minha codificação, tenho ouvido repetidamente comentários sobre a falta de lógica.

Ontem você me explicou a álgebra booleana, é um assunto amplo e profundo.

O fato é que não sou um matemático e certamente não sou uma mente algébrica.

Algumas coisas matemáticas não muito difíceis eu entendo.... mas não de uma só vez, e coisas complexas que meu cérebro não percebe de forma alguma.

Há mais de seis meses, antes de começar a estudar o manual de programação MCL, eu estava me perguntando

se eu poderia entendê-lo sem capacidade matemática.

Mas o Sr. Kozlov, no prefácio de seu livro didático, disse que na verdade é muito mais simples do que parece à primeira vista.

à primeira vista.

E de fato 60-70% de seu tutorial eu acho que agora sou capaz de entender (provavelmente não é a primeira vez) e como resultado eu já posso codificar algo.

Até ontem me parecia que todos os cálculos matemáticos complexos (que eu não consigo entender) fazem o programa, e eu só preciso saber as regras pelas quais

o programa funciona e faz os cálculos.

Mas nossa conversa de ontem me levou à idéia de que se eu não aprender álgebra booleana, meus códigos estarão ausentes da lógica.

Se meus códigos não tiverem lógica booleana, meus programas não funcionarão corretamente, ou não funcionarão em absoluto.

Mas ontem dei uma olhada na Wikipédia e percebi - álgebra booleana e provavelmente lógica - não é para minha mente!

Ontem você rapidamente deduziu de um olhar superficial a um fragmento do meu código que lhe falta lógica booleana.

Se você não se importa, poderia explicar um curso de seu raciocínio, que precedeu sua conclusão sobre a ausência de lógica neste fragmento.

Se eu entender, eu seguirei em frente. Se eu não entender....., provavelmente concluirei que a programação é algo que excede em muito minhas habilidades.

Obrigado.

se (ot==0)
se (Bid==Preço)
if(((Open[1]-Close[1])>100*Point)&&((Open[1]-Close[1])<120*Point))
if(((High[1]-Open[1])>40*Point)&&((High[1]-Open[1])<60*Point))
if(((Close[1]-Low[1])>40*Point)&&((Close[1]-Low[1])<60*Point))

Razão: