Последняя попытка решить проблему эксперта.

 
Последняя попытка решить проблему эксперта.
Проблема. Мозги сломал, а вопрос чувствую плевый.
Пару попыток обращения в форум не продвинули дело.
Пробую третий раз.
Условие: Если последняя сделка была положительной то по наступлению очередного сигнала (условия) сделку пропустить, а через пару часов переменные выставить в состояние готовности к торговле и при наступлении такого сигнала снова совершать сделки.
Не получилось вымутить ни с balance ни c false и true, чего-то не догоняю, а чего не пойму.
Как обозначить баланс до сделки и после сделки?
Может профит или лосс последней сделки.
 
Разработчикам.
В тестовом отчете фигурируют понятия "Winning trades" и
"Losing trades".
Может ли последняя сделка принимать то или иное значение?, чтобы в дальнейшем производить проверку на положптельность или отрицательность сделки.
 
это действительно не совсем тривиальная задача
чтобы однозначно её решить, у Вас должен торговать только один эксперт! одновременно открыта может быть только одна позиция.
перед совершением сделки сохраните текущее значение баланса в переменной, скажем PrevBalance. После того, как Вы определите, что TotalTrades = 0, опять спросите значение баланса и сравните его с запомненным PrevBalance.
кроме того Вы должны завести несколько булевых переменных, чтобы обозначать своё состояние и не делать лишних (ложных) проверок баланса.
 
к сожалению, после того, как сделка закрыта, информация о ней недоступна эксперту.
мы будем исправлять эту ситуацию в 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
 
А в файлик инфу записать, а потом из него считывать... Как такой вариант?
Причина обращения: