Разработчикам.
В тестовом отчете фигурируют понятия "Winning trades" и
"Losing trades".
Может ли последняя сделка принимать то или иное значение?, чтобы в дальнейшем производить проверку на положптельность или отрицательность сделки.
В тестовом отчете фигурируют понятия "Winning trades" и
"Losing trades".
Может ли последняя сделка принимать то или иное значение?, чтобы в дальнейшем производить проверку на положптельность или отрицательность сделки.
это действительно не совсем тривиальная задача
чтобы однозначно её решить, у Вас должен торговать только один эксперт! одновременно открыта может быть только одна позиция.
перед совершением сделки сохраните текущее значение баланса в переменной, скажем PrevBalance. После того, как Вы определите, что TotalTrades = 0, опять спросите значение баланса и сравните его с запомненным PrevBalance.
кроме того Вы должны завести несколько булевых переменных, чтобы обозначать своё состояние и не делать лишних (ложных) проверок баланса.
чтобы однозначно её решить, у Вас должен торговать только один эксперт! одновременно открыта может быть только одна позиция.
перед совершением сделки сохраните текущее значение баланса в переменной, скажем PrevBalance. После того, как Вы определите, что TotalTrades = 0, опять спросите значение баланса и сравните его с запомненным PrevBalance.
кроме того Вы должны завести несколько булевых переменных, чтобы обозначать своё состояние и не делать лишних (ложных) проверок баланса.
к сожалению, после того, как сделка закрыта, информация о ней недоступна эксперту.
мы будем исправлять эту ситуацию в MT4
мы будем исправлять эту ситуацию в MT4
Ну не смог удержаться
Задача нормальная,
попробуйте использовать такую функцию
/*[[
Name := accinf
Author := Copyright © 2003, Micky Mogol
]]*/
vars:cnt(0);
vars:sym(""),ctt(0);
vars:anam(""),anum(0);
vars:c_tt(0),c_ln(0),c_sh(0);
vars:o_tc(0),o_ty(0),o_sy(""),o_ot(0),o_op(0),o_lt(0),o_sl(0),o_tp(0),o_pr(0);
anum=Accnum;
sym=Symbol; ctt=TotalTrades;
If IsGlobalVariable(sym+NumberToStr(anum,0))=False Then Begin
SetGlobalVariable(sym+NumberToStr(anum,0),0);
SetGlobalVariable(sym+"sh"+NumberToStr(anum,0),0);
SetGlobalVariable(sym+"ln"+NumberToStr(anum,0),0);
end;
c_tt=0;c_ln=0;c_sh=0;
o_tc=0; o_ty=0; o_ot=0; o_op=0; o_lt=0; o_sl=0; o_tp=0; o_pr=0; o_sy="";
for cnt=ctt downto 1 Begin
o_sy=Ord(cnt,VAL_SYMBOL);
o_tc=Ord(cnt,VAL_TICKET); // 1
o_ty=Ord(cnt,VAL_TYPE); // 2
o_ot=Ord(cnt,VAL_OPENTIME); // 3
o_op=Ord(cnt,VAL_OPENPRICE); // 4
o_lt=Ord(cnt,VAL_LOTS); // 5
o_sl=Ord(cnt,VAL_STOPLOSS); // 6
o_tp=Ord(cnt,VAL_TAKEPROFIT); // 7
o_pr=Ord(cnt,VAL_PROFIT); // 8
if o_sy=sym then begin
c_tt=c_tt+1;
if o_ty=OP_SELL then begin
c_sh=c_sh+1;
end;
if o_ty=OP_BUY then begin
c_ln=c_ln+1;
end;
SetGlobalVariable(o_sy+NumberToStr(c_tt,0)+NumberToStr(1,0)+NumberToStr(anum,0),o_tc);
SetGlobalVariable(o_sy+NumberToStr(c_tt,0)+NumberToStr(2,0)+NumberToStr(anum,0),o_ty);
SetGlobalVariable(o_sy+NumberToStr(c_tt,0)+NumberToStr(3,0)+NumberToStr(anum,0),o_ot);
SetGlobalVariable(o_sy+NumberToStr(c_tt,0)+NumberToStr(4,0)+NumberToStr(anum,0),o_op);
SetGlobalVariable(o_sy+NumberToStr(c_tt,0)+NumberToStr(5,0)+NumberToStr(anum,0),o_lt);
SetGlobalVariable(o_sy+NumberToStr(c_tt,0)+NumberToStr(6,0)+NumberToStr(anum,0),o_sl);
SetGlobalVariable(o_sy+NumberToStr(c_tt,0)+NumberToStr(7,0)+NumberToStr(anum,0),o_tp);
SetGlobalVariable(o_sy+NumberToStr(c_tt,0)+NumberToStr(8,0)+NumberToStr(anum,0),o_pr);
end;
end;
SetGlobalVariable(sym+NumberToStr(anum,0),c_tt);
SetGlobalVariable(sym+"sh"+NumberToStr(anum,0),c_sh);
SetGlobalVariable(sym+"ln"+NumberToStr(anum,0),c_ln);
Return(c_tt);
функция собирает на каждом тике инфу(в глобальные переменные) по счету, а уж как сравнивать изменение глобальных переменных решайте сами.
Всех благ,
Micky Mogol
Задача нормальная,
попробуйте использовать такую функцию
/*[[
Name := accinf
Author := Copyright © 2003, Micky Mogol
]]*/
vars:cnt(0);
vars:sym(""),ctt(0);
vars:anam(""),anum(0);
vars:c_tt(0),c_ln(0),c_sh(0);
vars:o_tc(0),o_ty(0),o_sy(""),o_ot(0),o_op(0),o_lt(0),o_sl(0),o_tp(0),o_pr(0);
anum=Accnum;
sym=Symbol; ctt=TotalTrades;
If IsGlobalVariable(sym+NumberToStr(anum,0))=False Then Begin
SetGlobalVariable(sym+NumberToStr(anum,0),0);
SetGlobalVariable(sym+"sh"+NumberToStr(anum,0),0);
SetGlobalVariable(sym+"ln"+NumberToStr(anum,0),0);
end;
c_tt=0;c_ln=0;c_sh=0;
o_tc=0; o_ty=0; o_ot=0; o_op=0; o_lt=0; o_sl=0; o_tp=0; o_pr=0; o_sy="";
for cnt=ctt downto 1 Begin
o_sy=Ord(cnt,VAL_SYMBOL);
o_tc=Ord(cnt,VAL_TICKET); // 1
o_ty=Ord(cnt,VAL_TYPE); // 2
o_ot=Ord(cnt,VAL_OPENTIME); // 3
o_op=Ord(cnt,VAL_OPENPRICE); // 4
o_lt=Ord(cnt,VAL_LOTS); // 5
o_sl=Ord(cnt,VAL_STOPLOSS); // 6
o_tp=Ord(cnt,VAL_TAKEPROFIT); // 7
o_pr=Ord(cnt,VAL_PROFIT); // 8
if o_sy=sym then begin
c_tt=c_tt+1;
if o_ty=OP_SELL then begin
c_sh=c_sh+1;
end;
if o_ty=OP_BUY then begin
c_ln=c_ln+1;
end;
SetGlobalVariable(o_sy+NumberToStr(c_tt,0)+NumberToStr(1,0)+NumberToStr(anum,0),o_tc);
SetGlobalVariable(o_sy+NumberToStr(c_tt,0)+NumberToStr(2,0)+NumberToStr(anum,0),o_ty);
SetGlobalVariable(o_sy+NumberToStr(c_tt,0)+NumberToStr(3,0)+NumberToStr(anum,0),o_ot);
SetGlobalVariable(o_sy+NumberToStr(c_tt,0)+NumberToStr(4,0)+NumberToStr(anum,0),o_op);
SetGlobalVariable(o_sy+NumberToStr(c_tt,0)+NumberToStr(5,0)+NumberToStr(anum,0),o_lt);
SetGlobalVariable(o_sy+NumberToStr(c_tt,0)+NumberToStr(6,0)+NumberToStr(anum,0),o_sl);
SetGlobalVariable(o_sy+NumberToStr(c_tt,0)+NumberToStr(7,0)+NumberToStr(anum,0),o_tp);
SetGlobalVariable(o_sy+NumberToStr(c_tt,0)+NumberToStr(8,0)+NumberToStr(anum,0),o_pr);
end;
end;
SetGlobalVariable(sym+NumberToStr(anum,0),c_tt);
SetGlobalVariable(sym+"sh"+NumberToStr(anum,0),c_sh);
SetGlobalVariable(sym+"ln"+NumberToStr(anum,0),c_ln);
Return(c_tt);
функция собирает на каждом тике инфу(в глобальные переменные) по счету, а уж как сравнивать изменение глобальных переменных решайте сами.
Всех благ,
Micky Mogol
А в файлик инфу записать, а потом из него считывать... Как такой вариант?
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Проблема. Мозги сломал, а вопрос чувствую плевый.
Пару попыток обращения в форум не продвинули дело.
Пробую третий раз.
Условие: Если последняя сделка была положительной то по наступлению очередного сигнала (условия) сделку пропустить, а через пару часов переменные выставить в состояние готовности к торговле и при наступлении такого сигнала снова совершать сделки.
Не получилось вымутить ни с balance ни c false и true, чего-то не догоняю, а чего не пойму.
Как обозначить баланс до сделки и после сделки?
Может профит или лосс последней сделки.