Avalanche - página 466

 
E este é um verdadeiro centro de instalação Não entendo porque meu lote depois das 6h40 foi 102h40 à noite esqueci de desligar a EA de manhã e me perdi.
 
baykanur:
E este é um verdadeiro centro de instalação não entendo porque meu lote depois das 6h40 foi 102h40 à noite esqueci de desligar o EA de manhã, drenado
Você tem que olhar o código para descobrir o motivo.
 
baykanur:
E este é um verdadeiro centro de instalação Não entendo porque tenho muito depois que 6.40 foi 102.40 durante a noite esqueci de desligar a EA na ameixa da manhã.

Tenho um mau pressentimento sobre isso. Você pode colocar um limite de tempo para o comércio no código. Você pode colocar um limite no tempo de negociação que não seria um colapso tão grande. Este é o mais fácil, na minha opinião. Uma linha de condições + int externo, ainda que apenas por horas para fazer a restrição.
 
Cmu4:

É uma vergonha. Você pode colocar um limite de tempo para o comércio no código. Você pode colocar um limite de tempo no código para que não haja tais rachaduras. Este é o mais fácil, na minha opinião. Uma linha da condição + int externo, se apenas por horas fazemos a limitação.


Há um erro no algoritmo (no código) que calcula o próximo lote. O que o limite de tempo tem a ver com isso - ele pode aparecer a qualquer momento. Não sei como é - na minha versão da Avalanche - depois de otimizar os parâmetros - quando se verificou que o "começo" - às 0 horas, "fim" - às 23 horas, ou seja, trabalho 24 horas por dia ... E de fato, há movimentos interessantes no Eurobucks durante a noite... e um apartamento pode ocorrer durante o dia... é necessária uma abordagem diferente... (ver postos acima)... Acho que a limitação (neste caso (com Avalanche)) do trabalho das corujas pelo tempo é inapropriada... IMHO, é claro.

P.S. Na imagem acima após 6,4 o volume deve ser 12,8 e não 102,4 lotes... - Isto é um erro no programa.

 
Cmu4:

É uma vergonha. Você pode colocar um limite de tempo para negociação no código. Isto não permitiria tais problemas. Este é o mais fácil, na minha opinião. Uma linha de condições + int externo, ainda que apenas por horas para fazer a restrição.

Para mim funciona melhor com a avalanche 7, mas com empresas de corretagem diferentes, é totalmente diferente se elas tiverem atrasos de execução como insta começa a funcionar mal mesmo com os mesmos corredores e com resultados diferentes

tenho um bom dia de trabalho na nord, está funcionando como um relógio

 
baykanur:

Não sei por que devo fazeralgo com a restrição, senão meu depósito ficará arruinado...

"A avalanche 7 é a melhor maneira de eu usar a avalanche e não entendo porque perdi muito depois das 6h40, mas esqueci de desligar o EA pela manhã..." Se você estiver usando dados "iniciais", este aumento no volume da próxima ordem e limitação do trabalho por tempo - são coisas que não estão relacionadas entre si de nenhuma maneira...

Avalanche 7 - é esta a opção que você tem em mente?

//+------------------------------------------------------------------+
//|                                                  avalanche 7.mq4 |
//|                                                 George Tischenko |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "George Tischenko"

extern bool Monitor=true; //в тестере при выключенной визуализации отключать (тормозит)
extern int Distance=25,   //расстояние в пунктах от цены до первого открытия позиции
           MinProfit=5,   //минимальный профит в пунктах, если открытых ордеров более 1
           Slippage=3;
extern double Lot=0.1;

int Trade=0;
double BLot,StartPrice;              
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
  StartPrice=Bid;
  BLot=MarketInfo(Symbol(),15);      // MODE_LOTSIZE размер контракта в базовой валюте инструмента
//----
  if(Monitor==true)
    {
    int a,y;
    for(a=0,y=5;a<=3;a++)
      {
      string N=DoubleToStr(a,0);
  
      ObjectCreate(N,OBJ_LABEL,0,0,0,0,0);
      ObjectSet(N,OBJPROP_CORNER,3);
      ObjectSet(N,OBJPROP_XDISTANCE,5);
      ObjectSet(N,OBJPROP_YDISTANCE,y);
      y+=20;
      }  
    }
//----
  return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
  if(Monitor==true)
    {
    for(int a=0;a<=3;a++)
      {
      string N=DoubleToStr(a,0);
      ObjectDelete(N);
      } 
    }
//----
  return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
  int i;
//---- 
  if(OrdersTotal()==0)
    {
    RefreshRates();
    if((Ask-StartPrice>=Distance*Point && Trade==0) || Trade==1) 
      {
      OrderSend(Symbol(),OP_BUY,Lot,Ask,Slippage,0,0,"",1307,0,Blue);
      }
    if((StartPrice-Bid>=Distance*Point && Trade==0) || Trade==-1)  
      {
      OrderSend(Symbol(),OP_SELL,Lot,Bid,Slippage,0,0,"",1307,0,Red);
      }
    }
  else //OrdersTotal()>0
    {//узнаем размер максимального лота, тип и цену открытия последнего активного ордера
    double lots=0, Type=-1, OpenPrice=0;
    for(i=0;i<OrdersTotal();i++)
      {//самый последний ордер имеет самый большой объем
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
        {
        if(OrderSymbol()==Symbol())
          {
          if(lots<OrderLots())
            {
            lots=OrderLots();
            Type=OrderType();
            OpenPrice=OrderOpenPrice();
            }
          }
        }
      }
      
     //возможно, ордера надо закрыть - проверим это:
    int C=0; //флаг закрытия всех позиций
    if(OrdersTotal()==1) //ЭТО ДЛЯ ПАР ТИПА XXX/USD
      {
      if(AccountProfit()>=BLot*Lot*Point*Distance) 
        {
        switch(Type)
          {
          case 0 : Trade=1; break;
          case 1 : Trade=-1;
          }
        C=1;
        }
      }
    else //OrdersTotal()>1
      {//лишь бы без убытка...
      if(AccountProfit()>=BLot*Lot*Point*MinProfit)
        {
        switch(Type)
          {
          case 0 : Trade=1; break;
          case 1 : Trade=-1;
          }
        C=1;
        }
      }
     
    switch(C)
      {
      case 0 : //закрываться рановато...
        {
        lots*=2; //опять Мартин :-(
        RefreshRates();
        switch(Type)
          {
          case 0 :
            {
            if(OpenPrice-Bid>=Point*Distance*2) 
              {if(OrderSend(Symbol(),OP_SELL,lots,Bid,Slippage,0,0,"",1307,0,Red)>0) return(0);}
            break;
            }
          case 1 :
            {
            if(Ask-OpenPrice>=Point*Distance*2)
              {if(OrderSend(Symbol(),OP_BUY,lots,Ask,Slippage,0,0,"",1307,0,Blue)>0) return(0);}
            }
          }
        break;
        }
      case 1 : //закрываем все позиции
        {
        while(OrdersTotal()>0)
          {
          int ticket_buy=0,  //тикет ордера BUY (не может быть=0)
              ticket_sell=0; //тикет ордера SELL (не может быть=0)
          for(i=0;i<OrdersTotal();i++)
            {
            if(OrderSelect(i,SELECT_BY_POS)==true)
              {
              if(OrderSymbol()==Symbol())
                {
                switch(OrderType())
                  {
                  case 0 : ticket_buy=OrderTicket(); break;
                  case 1 : ticket_sell=OrderTicket();
                  }
                }
              }
            }
          //проверка тикетов на некорректность:  
          bool OCB=ticket_buy>0 && ticket_sell>0;
          if(OCB) OrderCloseBy(ticket_buy,ticket_sell,White); // Цикл закрытия
          else
            {//закрываем оставшиеся одиночные ордера
            for(i=0;i<OrdersTotal();i++) //если total==0, цикл просто не сработает
              {//закрываем оставшиеся ордера
              if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
                {
                if(OrderSymbol()==Symbol())
                  {
                  RefreshRates();
                  switch(OrderType())
                    {
                    case 0 : 
                      {
                      while(!OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,White)) 
                        {
                        Sleep(10000);
                        RefreshRates();
                        } 
                      break;
                      }
                    case 1 : 
                      {
                      while(!OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,White)) 
                        {
                        Sleep(10000);
                        RefreshRates();
                        } 
                      }
                    }
                  }
                }
              }
            }
          }//end while 
        }
      }
    } 
//==== БЛОК МОНИТОРИНГА
  if(Monitor==true)
    {
    string str="Balance: "+DoubleToStr(AccountBalance(),2)+" $";
    ObjectSetText("0",str,10,"Arial Black",White);
    
    str="Profit: "+DoubleToStr(AccountProfit(),2)+" $";
    ObjectSetText("1",str,10,"Arial Black",Silver);
    
    str="Free Margine: "+DoubleToStr(AccountFreeMargin(),2)+" $";
    ObjectSetText("2",str,10,"Arial Black",Yellow);
    
    str="OrdersTotal: "+DoubleToStr(OrdersTotal(),0);
    ObjectSetText("3",str,10,"Arial Black",Aqua);
    }
//----
  return(0);
  }
//+------------------------------------------------------------------+

 
baykanur:

minha avalanche 7 funciona melhor...

Esta opção?

 
Roman.:

"E este é um verdadeiro centavo de instalação não entendo porque meu lote depois das 6.40 foi 102.40 à noite esqueci de desligar o Expert Advisor pela manhã desperdiçado" - com base no "inicial" de seus dados "tal" aumento de volume do próximo pedido e limitação do Forno pelo tempo - são coisas que não estão relacionadas entre si de forma alguma ...

Avalanche 7 - é esta variante à qual você se refere?

Para mim são 5 e o prazo é m1 .

acho que não tem nada a ver com limite de tempo - deve ser encontrado por sorteio, embora não tenha certeza se a DT não tem nada a ver com isso porque funcionou em outras contas

contas e dobraram em uma semana

Aqui está o relatório para a noite

 

Que tema. Lavagem cerebral.

Olá a todos.

 
baykanur:

Sim, esta variante é a única diferença em Distância para mim é agora 5 e o período de m1 e os erros aparecem na execução atrasada do DT e às custas do limite de tempo

Acho que não tem nada a ver com limite de tempo - é hora de encontrar um erro no lote, embora não tenha certeza se não tem nada a ver com os revendedores.

contas e dobraram em uma semana

Aqui está o relatório para a noite


Eu tinha um caso semelhante. A corretora abriu muito maior do que o máximo. Eu não negocio mais com aquela corretora.

Não creio que tenhamos encontrado o erro no programa, embora eu tenha uma idéia do que estava errado (os pedidos foram recalculados várias vezes devido a atrasos e o lote ficou muito grande) - a corretora era gananciosa por dinheiro.