Советники: Топор

 

Топор :

Мой первый грааль (скальпинг ).

Author: Абдурахман

 

и правда топор)))

 

вы не указали на каком периоде работает и с каким инструментом но запустил на 4 часовом фунт доллар картинка примерно такая но с меньшим количеством зубцов . с первого января до сегодня.

если программа не удваивает и не известно почему. я обычно после нужного мне действия для отладки пишу команду "print "где в скобках указываю параметры которые нужно посмотреть . и так перемещая команду принт по телу программы нахожу где работает не правильно . Очень часто ошибки бывают если забываешь что есть величины "инт" и Double и нужно учитывать и переходить от одной к другой . еще можно использовать для отладки в реальном времени команду "алерт " и тогда можно проследить где собака зарыта

 

примерно опишите что в каком блоке происходит где должно быть удваивание ? блок обработки ордеров у нас похожий видимо одинаково мыслим

 

Предлагаю автору посмотреть советник Франк_уд, он есть на этом сайте. В этом советнике ордера тоже удваиваются по принципу Мартингейла. Возможно это Вам поможет решить проблему. Юпитер.

 
alexi72:

вы не указали на каком периоде работает и с каким инструментом но запустил на 4 часовом фунт доллар картинка примерно такая но с меньшим количеством зубцов . с первого января до сегодня.

если программа не удваивает и не известно почему. я обычно после нужного мне действия для отладки пишу команду "print "где в скобках указываю параметры которые нужно посмотреть . и так перемещая команду принт по телу программы нахожу где работает не правильно . Очень часто ошибки бывают если забываешь что есть величины "инт" и Double и нужно учитывать и переходить от одной к другой . еще можно использовать для отладки в реальном времени команду "алерт " и тогда можно проследить где собака зарыта


Период и инструмент указан в zip папке.

А идея с командой "алерт "  не плахая надо попробовать .

 
на скальпинг это не похоже, скорее сетка с усреднением.
 
abic:
alexi72:

вы не указали на каком периоде работает и с каким инструментом но запустил на 4 часовом фунт доллар картинка примерно такая но с меньшим количеством зубцов . с первого января до сегодня.

если программа не удваивает и не известно почему. я обычно после нужного мне действия для отладки пишу команду "print "где в скобках указываю параметры которые нужно посмотреть . и так перемещая команду принт по телу программы нахожу где работает не правильно . Очень часто ошибки бывают если забываешь что есть величины "инт" и Double и нужно учитывать и переходить от одной к другой . еще можно использовать для отладки в реальном времени команду "алерт " и тогда можно проследить где собака зарыта


Период и инструмент указан в zip папке.

А идея с командой "алерт " не плахая надо попробовать .

я всегда так отлаживаю алерт или принт чтобы посмотреть что твориться в черном ящике
 

посмотрел код . мне кажется вы злоупотребляете переменными . сначала заполняете переменную потом проверяете условие а можно же сразу действие и проверка действия . например в "отрытии ордера" переменная тотал сначала где то заводится потом мравнивается с нулем . конечно наглядно но разве вы пишите для других для наглядности а не для извлечения прибыли.? работа программы замедляется особенно на тестировании . информация в ваших ячейках может устареть и отличаться от реальной.

 

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

 

Возможно лоты не удваиваются потому, что у вас функция OrderProfit() идёт впереди функции OrderSelect.

Вот этот фрагмент.

 double Profit=OrderProfit(); //значение чистой прибыли
   // double  Lot_1;
    bool Select=true;
    for(int i=0; i<=OrdersHistoryTotal(); i++)//Щитаем ордера из истории
     {
        if(Select==OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==true //Берём ордер из истории
        && OrderSymbol()==Symb&& OrderMagicNumber() == MagicNumber)
          { 
          if(OrdersHistoryTotal()==0)
            Lots= Lots;
          if(Profit<0) 
              Lots=Lot_2*умжить_на;
          if(Profit>0)
              Lots=StarLots;
           if(Lots>MaxLots)
              Lots=StarLots;
          }
           return(Lots);                  

В итоге ордер не выбран и профит по нему определится равным нулю. Тогда условие после в котором происходит умножение не сработает. Попробуйте переопределить профит после функции OrderSelect().

Причина обращения: