Визуализация Баланса, нужна помощь в реализации.

 

Вот в процессе размышлений пришли к такому коду.

// ~~~~~~~~~~~~~~~~~~~ Curent Frame ~~~~~~~~~~~~~~~~~~~~~~~~~~

for (int RxIndex=CalcCount-1;RxIndex>=0;RxIndex--){
int RxTotal=OrdersHistoryTotal();
datetime RxTime=Time[RxIndex];
double RxPriceBuy=0;
double RxPriceSell=0;
for (RxOrder=0;RxOrder<RxTotal;RxOrder++){
if (OrderSelect(RxOrder,SELECT_BY_POS,MODE_HISTORY)==true){
if ((OrderOpenTime()<=RxTime)&&(OrderCloseTime()>=RxTime)){
if (OrderType()==OP_BUY) RxPriceBuy=RxPriceBuy+(iClose(OrderSymbol(),0,RxIndex)-OrderOpenPrice())/MarketInfo(OrderSymbol(),MODE_POINT);
if (OrderType()==OP_SELL) RxPriceSell=RxPriceSell+(OrderOpenPrice()-iClose(OrderSymbol(),0,RxIndex))/MarketInfo(OrderSymbol(),MODE_POINT);
}
}
}
for (RxOrder=0;RxOrder<RxTotal;RxOrder++){
if (OrderSelect(RxOrder,SELECT_BY_POS,MODE_TRADES)==true){
if ((OrderOpenTime()<=RxTime)){
if (RxIndex>0) {
if (OrderType()==OP_BUY) RxPriceBuy=RxPriceBuy+(iClose(OrderSymbol(),0,RxIndex)-OrderOpenPrice())/MarketInfo(OrderSymbol(),MODE_POINT);
if (OrderType()==OP_SELL) RxPriceSell=RxPriceSell+(OrderOpenPrice()-iClose(OrderSymbol(),0,RxIndex))/MarketInfo(OrderSymbol(),MODE_POINT);
}
else {
if (OrderType()==OP_BUY) RxPriceBuy=RxPriceBuy+(MarketInfo(OrderSymbol(),Bid)-OrderOpenPrice())/MarketInfo(OrderSymbol(),MODE_POINT);
if (OrderType()==OP_SELL) RxPriceSell=RxPriceSell+(OrderOpenPrice()-MarketInfo(OrderSymbol(),Ask))/MarketInfo(OrderSymbol(),MODE_POINT);
}
}
}
}
TimeBuf1[RxIndex]=RxPriceBuy;
TimeBuf2[RxIndex]=RxPriceSell;
TimeBuf3[RxIndex]=RxPriceBuy+RxPriceSell;
}
ArrayCopy(FxView1,TimeBuf1,0,0,CalcCount);
ArrayCopy(FxView2,TimeBuf2,0,0,CalcCount);

ArrayCopy(FxView3,TimeBuf3,0,0,CalcCount);

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

 

Как-то давно Игорь (Хирург) подсказал для визуализации простое решение. Там четыре строки кода и простой индикатор. Посмотрите в ветке его.

 

Вот это в советник:

if (IsVisualMode())
     {
      GlobalVariableSet("Balance",AccountBalance());
      GlobalVariableSet("Equity",AccountEquity());
      GlobalVariableSet("Margin",AccountMargin());
      GlobalVariableSet("Free",AccountFreeMargin());
     }

а на график индикатор в приложении.

ЗЫ: киньте на график индикатор и сохраните как шаблон для тестера.

Вроде все.

Файлы:
 
alexx_v:

Как-то давно Игорь (Хирург) подсказал для визуализации простое решение. Там четыре строки кода и простой индикатор. Посмотрите в ветке его.



т.е. по сути в этом коде с моей стороны нет смысла? Иными словами путь неверный?
 
alexx_v:

Вот это в советник:

а на график индикатор в приложении.

ЗЫ: киньте на график индикатор и сохраните как шаблон для тестера.

Вроде все.


ну да смотрится проще, спасибо, будем кумекать
 

Тип того, излишества.

Кстати вот ссылка, где Игорь это говорил.

 
EricGR:

ну да смотрится проще, спасибо, будем кумекать
И работает в визуальном режиме прекрасно.
 
alexx_v:

Как-то давно Игорь (Хирург) подсказал для визуализации простое решение. Там четыре строки кода и простой индикатор. Посмотрите в ветке его.



Автор: Игорь (Хирург) - https://www.mql5.com/ru/code/8454
 
alexx_v:
И работает в визуальном режиме прекрасно.

ну мне преимущественно над посмотреть сделать вывод а потом забрать данные для других решений советника, с этим разберемся, еще раз благодарю.
 
Roman.:

Автор: Игорь (Хирург) - https://www.mql5.com/ru/code/8454
Это немного не то, что нужно было топикстартеру. Хотя индикатор замечательный и востребованный :)
 
alexx_v:
Это немного не то, что нужно было топикстартеру. Хотя индикатор замечательный и востребованный :)

первый вариант подходит, так все проще, а мой путь получился тернистым и в другую строну аж))
Причина обращения: