Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1594

 
законопослушный гражданин:

obrigado

Mas nesta função: duplo GetProfitFromStart()

amarelo é apenas o nome da função, estou certo?

e, em princípio, pode ser qualquer coisa?

Sim, eu o chamei assim para deixar bem claro Get Profit FromStart
 
MakarFX:
Sim, eu o nomeei dessa forma para deixar bem claro Obtenha lucros do início

Obrigado.

Na função de carrapato de especialista

void OnTick() - acontece que a linha de código : if(CountOrders()==0&ObjectGetInteger(0, "lab_Button",OBJPROP_STATE)) não é apenas o gatilho da primeira ordem quando a EA é inicialmente iniciada

mas também cada uma delas corre após o fechamento do pedido, de acordo com uma condição:

if(GetProfitFromStart()>CountProfit || GetProfitFromStart()<CountLoss*-1)
     {
      if (IsTesting())
        {
         CloseOrder(); ObjectSetInteger(0,"lab_Button",OBJPROP_STATE,false);
        }
      else
        {
         CloseOrder();
}
}

eu o entendo corretamente?

 
MakarFX:

a quantidade de perdas em todos os pedidos perdidos

Devo ter entendido mal novamente

ou a quantidade de perda em cada ordem de perda

ou a perda acumulada em todas as ordens perdidas...


Se você só precisa de uma única impressão, é melhor fazer isso como um roteiro

Você não precisa, você pode fazer isso assim

Seu código ajudou, agora as mesmas mensagens não são mostradas 100 vezes, mas apenas 4-10 vezes. Talvez o outro operador devesse ser adicionado.
 
Petronet:
Seu código ajudou, agora as mesmas mensagens não são mostradas 100 vezes, mas apenas 4-10 vezes. Talvez o outro operador precise ser adicionado.
Como e onde o código está escrito?
 
законопослушный гражданин:

Obrigado.

Na função de carrapato de especialista

void OnTick() - acontece que a linha de código : if(CountOrders()==0&ObjectGetInteger (0, "lab_Button",OBJPROP_STATE)) não é apenas o gatilho da primeira ordem quando a EA é inicialmente iniciada

mas também cada uma delas corre após o fechamento do pedido, de acordo com uma condição:

Eu entendi corretamente?

Estas são as condições para executar o EA, se( se) (CountOrders()==0( sem ordem )&&ObjectGetInteger(0, "lab_Button",OBJPROP_STATE))( e o botão é pressionado), então podemos negociar

 
MakarFX:
Como e onde o código está escrito?
O código é inserido no corpo da função int start() da EA. Acrescentei um outro operador, que aparafusa uma variável vazia, a duplicação de dados parou, mas quando duas vezes consecutivas menos os lucros, a duplicação de dados ocorre em 10 e 2-3 vezes. Comentei meu loop original, que deu as mesmas informações 100 vezes. Seu trabalho.
int start()
  {
  
  //for (int trade = OrdersHistoryTotal() - 1; trade >= 0; trade--) 
  //{
     //if ( OrderSelect(trade, SELECT_BY_POS,MODE_HISTORY)) 
     //{
         //old_order_type = OrderType();
         //if ( OrderProfit()<0 ) //последний закрытый советником ордер был убыточным, значит, следующий ордер открываем в направлении, противоположном закрытому с убытком
         //{
                //Print("Закрылись с минусом:", OrderProfit());
                //break; //прекращаем поиск
         //}
         
     //}
     //break;
  //}
  
  for(int pos=0; pos<OrdersHistoryTotal(); pos++)
     {
      if(OrderSelect(pos, SELECT_BY_POS, MODE_HISTORY))
        {
         if(OrderSymbol()==_Symbol)
           {
            if(OrderCloseTime()>=TimeStart)
              {
               if(OrderProfit()<0) {cnt=OrderProfit();
               Print("ордера с минусом", cnt); TimeStart=TimeCurrent(); cnt=0;}
               else gg=gg+1;
              }
           }
        }
     }
 
Petronet:
O código é inserido no corpo da função int start() da EA. Acrescentei outro operador, que parafusa a variável vazia, a duplicação de dados parou, mas quando duas perdas consecutivas de lucros, a duplicação de dados ocorre 10 e 2-3 vezes. Comentei meu loop original, que deu as mesmas informações 100 vezes. Seu trabalho.
// это в глобальные переменные
datetime TimeStart; 

// это в init()

TimeStart=Time[0];

Irá imprimir uma vez quando um comércio não lucrativo aparecer

 
Olá a todos, inseri uma função para fechar posições na sexta-feira às 20:30h

Mas o conselheiro não vê que é sexta-feira e fecha posições todos os dias

parece ser assim

input bool     UseTimeLimitClose           = true;     // -- Funktion ein/ausschalten --
enum daysOfWeek 
   { 
     Monday = 1, 
     Tuesday = 2, 
     Wednesday = 3, 
     Thursday = 4, 
     Friday = 5
   };
input  daysOfWeek closday          =    5;            // -- Handel bis Tag --
input int    Close_Hour            =   20;            // -- Handel bis Uhrzeit Std.--
input int    Close_min             =   30;



void OnTick() 

 if(UseTimeLimitClose)
     {
      MqlDateTime TimeNow;
      TimeToStruct(TimeCurrent(),TimeNow);
      if  ( TimeNow.day_of_week >= closday  && TimeNow.hour >= Close_Hour && TimeNow.min >= Close_min  ) 
       {
          CloseAllPositions();
       }     

 
Eugen8519:
Olá a todos, inseri uma função para fechar posições na sexta-feira às 20:30h

Mas o conselheiro não vê que é sexta-feira e fecha posições todos os dias

fica assim

void OnTick() 

 if(UseTimeLimitClose)
     {
      if  (TimeDayOfWeek(TimeCurrent())==closday  && TimeHour(TimeCurrent())>= Close_Hour && TimeMinute(TimeCurrent()) >= Close_min  ) 
       {
          CloseAllPositions();
       }     
 

Por favor, me diga como emitir isto para uma variável externa

double levelss[7] = {0,0.236,0.382,0.5,0.618,1,1.618}; // Уровни Fibo