Скачать MetaTrader 5

Как можно передать значение переменной из одного испольнения советника в другое?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Есть возможность протестировать программу перед покупкой. Узнай как!
Forex Trader
114255
Forex Trader 2006.09.29 06:50 
Я хочу чтобы мой советник открывал позицию только если один и тот же торговый сигнал был им выдан за два бара подряд. Вместо того чтобы внутри советника вычислять торговый сигнал за оба бара (текущий и предыдущий), я хотел бы ускорить его таким образом чтобы он вычислял этот торговый сигнал только для текущего бара и сохранял это значение в памяти (например, 1 покупай, -1 продавай, 0 никаких действий). Эта память проверялась бы на каждом баре и если торговый сигнал текущего бара совпадал со значением в памяти, то советник открывал бы соответствующую позицию и выставлял 0 в память. Надеюсь логика понятна. Только если я буду делать через обычную переменную, то её значения теряется при появлении нового бара. Например, мой код выглядит что-то в следующем роде

int PreviousBarSignal;
<Calculate PresentBarSignal>
if (PreviousBarSignal==1 && PresentBarSignal==1)
{"Buy";PreviousBarSignal=0;}
esle if (PreviousBarSignal==-1 && PresentBarSignal==-1)
{"Sell";PreviousBarSignal=0;}
esle {PreviousBarSignal=PresentBarSignal;}
return(0)

Значение PreviousBarSignal, рассчитанное для предыдущего бара, не сохраняется тестером. В результате чего, PreviousBarSignal всегда 0 в начале программы. Конечно можно записать значение PreviousBarSignal в файл и потом прочитать его, но хотелось бы иметь возможность передавать значение торгового сигнала от одного рана к другому без внешних файлов. Если такая возможность?
Forex Trader
114255
Forex Trader 2006.09.29 11:35  
попробуйте объявить переменную PreviousBarSigna на глобальном уровне, то есть вне всех функций
Forex Trader
114255
Forex Trader 2006.10.03 06:45  
Спасибо за совет, Slawa. Всё заработало.
Forex Trader
114255
Forex Trader 2006.10.03 18:29  
Чисто профессиональный вопрос - а чем это лучше тупового вычисления двух баров? На первый взгляд, это намного проще.
Спасибо.
Forex Trader
114255
Forex Trader 2006.10.03 19:57  
Вопрос не тупой и я его предвидел и пытался ответить в своем первом сообщении. Если советник очень медленный, то лучше вычислять один бар, то есть при появлении нового бара, только новый бар разсчитывается а значение предыдущего бара уже должно быть вычислено и сохранено в памяти. Если разсчитывать два бара (новый и предыдущий), то советник будет в два раза медленнее т.к. предыдущий бар будет разсчитываться два раза: когда он был новым и когда он стал предыдущим.
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий