Советники: Zamok v1.4.1

 

Zamok v1.4.1:

Доработал по вашей просьбе

Author: Basic1975

 

2012.11.13 11:13:17    Zamok v1.4.1 EURUSD,M15: zero divide

Такое сообщение если не указать вторую пару. Может как то сделать, чтобы советник не делился на 0, а сообщал: "Типа вы не указали вторую пару". ))

 
Доливки нужны как воздух с переменными : расстояние в пунктах и множитель.
 

2012.11.19 12:15:01 '19015794': order sell 0.10 GBPUSD opening at 1.59148 sl: 0.00000 tp: 0.00000 failed [Not enough money]

 

а на счету бабло есть. Счет демо денех 3000 нач лот 0.1 

 

Вообще не шевелится вторые сутки, Норд 4-знак, демо 5000 денег, не пишет ошибок в журнал, не совершает действий, просто висит в памяти и всё...

Может я в настройках накосячил, как понял из описания так и настроил:

2012.11.21 20:37:44    Zamok v1.4.1 AUDUSD,H1 inputs: Magic=777; C_валютой="NZDUSD"; Обратная_корреляция=false; Оптимизировать='2012.11.01 00:00'; Оптимизировать_каждые=30; ma_method=1; applied_price=5; Lot=0.1; Профит="50$"; Минимум=10; Стоп="50$";

 

Всем привет. Хочу пока по мелочи автору предложить коррективы. В прошлой теме уже поднималась тема об ошибке закрытия ордеров, в этой версии исправления я так и не заметил - по прежнему Invalid Ticket. Корректно было бы переписать функцию так:

void CLOSEORDER()
{
  for (int i=0; i<OrdersTotal(); i++)
  {
    if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true)
    {
      if (Magic == OrderMagicNumber())
      {
        if (OrderType() == OP_BUY)
          OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),3,CLR_NONE);
        if (OrderType() == OP_SELL)
          OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),3,CLR_NONE);
      }
    }
  }
  closs = 1;
}

 Теперь более важное. Автоматическая оптимизация абсолютно неверно реализована.

if (Seconds() == 30) time = time+1;

 В исходной версии предлагается отсчитывать интервал оптимизации по 30-й секунде каждой минуты. Это неправильно, так как не всегда тик приходит именно в 30-ю секунду, я уже не говорю про 4-х знаки. Поэтому зачастую автоматическая оптимизация у многих и не работает. Предлагаю реализовать так, это исправляем

int start()
{
  osnval = Symbol();
  Бары_оптимизации = iBarShift(osnval,0,Оптимизировать,FALSE);
  if (Seconds() == 30) time = time+1;
  if (time >= Оптимизировать_каждые && C_валютой != "Валюта" && vkl == 0)
  {
    opt = 0;
    time = 0;
  }
  for (int k=0; k<ObjectsTotal(); k++)
  {
    if (ObjectGet(ObjectName(k),OBJPROP_ARROWCODE) == SYMBOL_THUMBSDOWN) ploho = true; 
    if (ObjectGet(ObjectName(k),OBJPROP_ARROWCODE) == SYMBOL_STOPSIGN) sstop = true;
  }
  if (((ploho == true && sstop == true) || opt == 0) && C_валютой != "Валюта")
  {
    rek_period = 0;
    punn = 0;
    optimizator();
    ObjectsDeleteAll(EMPTY, OBJ_ARROW);
    ploho = FALSE;
    sstop = FALSE;
    opt = 1;
  }
на это:
int start()
{
  osnval = Symbol();
  Бары_оптимизации = iBarShift(osnval,0,Оптимизировать,FALSE);
  if ((TimeCurrent()-time)/60 >= Оптимизировать_каждые && C_валютой != "Валюта" && vkl == 0)
  {
    time = TimeCurrent();
    rek_period = 0;
    punn = 0;
    optimizator();
    opt = 1;
  }
Теперь полностью отпадает необходимость в ручной оптимизации, поэтому я ее убрал.
 
Я смотрю, тема умерла полностью. Что ж, жаль....
 
pretorian:
Я смотрю, тема умерла полностью. Что ж, жаль....

Вероятно народ ещё тестит и пока нечего сказать им. Или у всех данный советник прекрасно работает и они просто молча зарабатывают :)

В предыдущем ответе я жаловался что советник у меня не работает, потом открыл демо-счёт в другом ДЦ, где мин. лот 0,01 с шагом 0,01 и советник у меня заработал, неполадки возникали из-за расчёта лота слишком мелким шагом, начальный лот например 0,1 а советник для второй валюты пытался открыть позицию лотом 0,12 не проверяя, а допускает ли этот ДЦ такой размер лота и какой у него минимальный лот, да и в журнал ничего не писал (просто предполагаю, может и по другим причинам не работал, факт что сейчас на пятизнаке с минимальными значениями 0,01 движение есть).

Теперь другая неполадка, в общем она и в прошлой версии была, в чём причина, не знаю: открывает две позиции, по основной паре и по дополнительной, а закрывает только вторую, да и ту в убыток, а по основной паре позиция остаётя, пока руками не закрою. Может это только у меня такой "баг"?

 
evillive:

Теперь другая неполадка, в общем она и в прошлой версии была, в чём причина, не знаю: открывает две позиции, по основной паре и по дополнительной, а закрывает только вторую, да и ту в убыток, а по основной паре позиция остаётя, пока руками не закрою. Может это только у меня такой "баг"?


Нужно удалить строки:

   if(vkl!=0 && (Стоп=="0$" || Стоп=="0%") )
     { 
   if(ma_osnval>MarketInfo(osnval,MODE_ASK) && ma_C_валютой<MarketInfo(C_валютой,MODE_BID) && var==2)
     {CLOSEORDER();}
   if(ma_osnval<MarketInfo(osnval,MODE_BID) && ma_C_валютой>MarketInfo(C_валютой,MODE_ASK) && var==1)
     {CLOSEORDER();}
     }
и
if(vkl!=0 && (Стоп=="0$" || Стоп=="0%"))
     { 
   if(ma_osnval>MarketInfo(osnval,MODE_ASK) && ma_C_валютой>MarketInfo(C_валютой,MODE_ASK) && var==2)
     {CLOSEORDER();}
   if(ma_osnval<MarketInfo(osnval,MODE_BID) && ma_C_валютой<MarketInfo(C_валютой,MODE_BID) && var==1)
     {CLOSEORDER();}
     }

 

 

vicmos:

Нужно удалить строки:


Это если стопов не ставить, я ставлю и TP, и SL,  вариант с $, не удалять же условия выхода полностью, тогда вообще закрывать ничего не будет :)
 
evillive:

Теперь другая неполадка, в общем она и в прошлой версии была, в чём причина, не знаю: открывает две позиции, по основной паре и по дополнительной, а закрывает только вторую, да и ту в убыток, а по основной паре позиция остаётя, пока руками не закрою. Может это только у меня такой "баг"?

evillive:

vicmos:

Нужно удалить строки:


Это если стопов не ставить, я ставлю и TP, и SL,  вариант с $, не удалять же условия выхода полностью, тогда вообще закрывать ничего не будет :)

У меня ни разу такой ошибки не было, закрывало все нормально, и стопов я не ставил, закрытие у меня по сигналу. В своей версии я те строки со стопами и тралами позже убрал, по наблюдениям закрытие по сигналу намного эффективней.
Причина обращения: