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

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

Tenho um tipster montado e trabalhando.


   input int HourPause  = 1;        // Пауза в часах
   datetime  Start      = 0;
//----------------------------------------------------
   // выключаем торговлю
   if (OrderLots()>=Lotcontrol)
     {
      Start=TimeCurrent()+(HourPause*60*60));
     }
// Если нет открытых ордеров, то входим в условие
      if(CountOrders()==0&&Start<=TimeCurrent())
 

Tretyakov Rostyslav #:

Obrigado.

Eu comecei a pensar assim:

Se (TimeCurrent() >=(OrderCloseTime() + (Pausa*60*60)))

isto está errado?

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

Obrigado.

Eu comecei a pensar assim:

Se (TimeCurrent() >=(OrderCloseTime() + (Pausa*60*60)))

isto está errado?

Você também pode fazer isso.
 
Tretyakov Rostyslav #:
Isto também é possível

Mas primeiro você tem que selecionar o último pedido via if(OrderSelect()-right?

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

Mas primeiro você tem que selecionar o último pedido via if(OrderSelect()-right?

sim
 

Você pode me dizer se há alguma solução pronta para o fechamento do FIFO? Encontrei apenas para o MT5.

Para o MT4 Tempo Aberto pendente é igual ao seu tempo de ativação ou tempo de ajuste?

 
leonerd #:

Você pode me dizer se há alguma solução pronta para o fechamento do FIFO? Encontrei apenas para o MT5.

Para o MT4 Tempo Aberto pendente é igual ao seu tempo de ativação ou instalação?

Não está pendente após a ativação.

O que é FIFO?

 
Tretyakov Rostyslav #:

Uma vez ativado, ele não está mais pendente.

O que é FIFO?

FIFO = Punho de entrada Punho de saída - primeiro a entrar primeiro a sair na mesma ordem em que entra = fila

FILO = Fist Input Fist Output Last - First In Last Out Exit em ordem inversa = Stack

 
a007 #:

FIFO = Punho de entrada Punho de saída - primeiro a entrar primeiro a sair na mesma ordem em que entra = fila

FILO = Fist Input Fist Output Last - First In Last Out Exit em ordem inversa = Stack

Ainda nem sequer ouvi falar...
 
Tretyakov Rostyslav #:
// Параметры советника
input string  sParametersEA = "";     // Параметры советника
input double  Lot           = 0.01;   // Количество лотов
input double  Lotcontrol    = 0.08;   // -----  
input int     StopLoss      = 30;     // Стоп (SL)
input int     TakeProfit    = 30;     // Тейк (TP)
input int     HourPause     = 1;      // Пауза в часах
input int     Slippage      = 3;      // Проскальзование (в пунктах)
input int     Magic         = 1;      // Индентификатор советника
input double  K_Martin1     = 0.01;   // Множитель мартин 1
input double  K_Martin2     = 1.9;    // Множитель мартин 2
input double  K_Martin3     = 1.4;    // Множитель мартин 3
input int     OrdersClose   = 3;      // Ограничение лотности мартин1
input int     OrdersClose2  = 5;      // Ограничение лотности мартин2
input int     DigitsLot     = 2;      // Точность лотности
// Параметры индикатора
input string  sParametersMA = "";     // Параметры индикатора
input int     PeriodMA      = 14;     // Период мувинга
input int     MovingShift   = 1;      // Сдвиг мувинга
// Глобальные переменные
datetime Start=0,newbar;
double dMA;
double MaxMartinLot;
double MaxMartinLot2;
//+-----------------------------------------------------------------------------------------------+
int OnInit()
  {
Start          = TimeCurrent();
MaxMartinLot   = Lot*MathPow(1.4,OrdersClose);
MaxMartinLot2  = Lot*MathPow(K_Martin2,OrdersClose2);
int Y          = 15;
DrawLABEL("nextlot",1,5,Y,clrLime,""); 
Y += 20;
DrawLABEL("currentlot",1,5,Y,clrLime,"");
Y += 30;
return(INIT_SUCCEEDED);
  }
//+-----------------------------------------------------------------------------------------------+
void OnDeinit(const int reason)
  {

  }
//+-----------------------------------------------------------------------------------------------+
void OnTick()
  {
// Получим значение индикатора
   dMA = iMA(Symbol(), 0,PeriodMA, MovingShift, MODE_SMA, PRICE_CLOSE, 0); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0.
// выключаем торговлю      
      if (OrderLots()>=Lotcontrol)
     {
      Start=TimeCurrent()+(HourPause*60*60);
     }
// Если нет открытых ордеров, то входим в условие
      if((CountOrders()==0)&& Start<=TimeCurrent())
     {
// Если появился сигнал на покупку, то откроем ордер на покупку
      if(bSignalBuy() == true)
         vOrderOpenBuy();

// Если появился сигнал на продажу, то откроем ордер на продажу
      if(bSignalSell() == true)
         vOrderOpenSell();
     }
// Пишем какой лот текущий и какой следующий
      DrawLABEL("nextlot",1,5,0,Color1(),StringConcatenate("CURRENT LOT: ",DoubleToStr(LOT(),2)));
      DrawLABEL("currentlot",1,5,0,Color2(),StringConcatenate("NEXT LOT: ",DoubleToStr(LOT(),2))); 
 
  }

parece ter sido montado, mas só funciona uma vez no testador

Se eu fizer mais um teste, ele não abre nenhum negócio

Quando eu faço o primeiro teste, o intervalo é definido, mas se o lote for reiniciado para o lote inicial, ele não abre mais nenhuma negociação.

Onde eu errei?

Razão: