Петля Мёбиуса - страница 873

 
mvf358 #:
Не я написал эквити монитор. Это самый лучший индикатор, который есть в мире форекса. Плохому танцору всегда что-то мешает. Какой мне прикол показывать сфальсифицированное профитное эквити? 
Лучший? Потому что показывает "сфальсифицированное профитное эквити". Говоря вашим языком "объясняю на пальцах". Вот эта функция вычисляет "экви" которое вы видите в данный момент на экране(она работает относительно правильно)
void CalculateLastBar()
  {

   if(DrawEndBar>0) return;
   if(Import_History!="") return;

   ProfitLoss=0;
   SumMargin=0;
   OrdersCount=0;
   TotalOpen=OrdersTotal();
   ArrayInitialize(SymbolLong,0);
   ArrayInitialize(SymbolShort,0);
   IndexSymbols(false);

   if(TotalOpen>0)
      for(int i=0; i<TotalOpen; i++)
        {
         if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
         if(!FilterOrder(0,true)) continue;
         ProfitLoss+=OrderProfit()+OrderSwap()+OrderCommission();
         int type=OrderType();
         if(type==OP_BUY)  SymbolLong[IndexOrderSymbol[i]]+=OrderLots();
         if(type==OP_SELL) SymbolShort[IndexOrderSymbol[i]]+=OrderLots();
         OrdersCount++;
        }

   for(int k=0; k<TotalSymbols; k++)
     {
      double hedged=MathMin(SymbolLong[k],SymbolShort[k])*2;
      double unhedged=SymbolLong[k]+SymbolShort[k]-hedged;
      SumMargin+=(hedged*SymbolHedge[k]+unhedged)*SymbolMargin[k];
     }

   if(Show_Equity)
   if(Only_Trading)  {Equity[0]=NormalizeDouble(ResultProfit+ProfitLoss,2);}
   else              {Equity[0]=NormalizeDouble(ResultBalance+ProfitLoss,2);}
   if(Show_Balance)  {Balance[0]=NormalizeDouble(Only_Trading?ResultProfit:ResultBalance,2);}
   if(Show_Margin)   {Margin[0]=NormalizeDouble(SumMargin,2);}
   if(Show_Free)     {Free[0]=NormalizeDouble(ResultBalance+ProfitLoss-SumMargin,2);}
   if(Show_Orders)   {Orders[0]=OrdersCount;}
   if(Show_Zero)     {Zero[0]=0;}
   if(Show_Info)     {GetDrawdown();}

   if(Show_Balance)
      CreateLine("Equity Level",OBJ_HLINE,1,SteelBlue,STYLE_DOT,false,"",0,Equity[0]);
   if(Show_Equity)
      CreateLine("Balance Level",OBJ_HLINE,1,Crimson,STYLE_DOT,false,"",0,Balance[0]);
   if(Show_Margin)
      CreateLine("Margin Level",OBJ_HLINE,1,Crimson,STYLE_DOT,false,"",0,Margin[0]);
   if(Show_Free)
      CreateLine("Free Level",OBJ_HLINE,1,Crimson,STYLE_DOT,false,"",0,Free[0]);
   if(Show_Orders)
      CreateLine("Orders Level",OBJ_HLINE,1,Crimson,STYLE_DOT,false,"",0,Orders[0]);

  }
А вот в этих двух кусках кода, как раз и рассчитываться "историческое экви" с "синусами", "тангенсами" и прочими "математическими функциями".
            
double ContractValue(string symbol,datetime time,int period,string currency)
  {
   double value=MarketInfo(symbol,MODE_LOTSIZE);
   string quote=SymbolInfoString(symbol,SYMBOL_CURRENCY_PROFIT);

   if(quote!="USD")
     {
      string direct=StringConcatenate(FX_prefix,quote,"USD",FX_postfix);
      if(MarketInfo(direct,MODE_POINT)!=0)
        {
         int shift=iBarShift(direct,period,time);
         double price=iClose(direct,period,shift);
         if(price>0) value*=price;
        }
      else
        {
         string indirect=FX_prefix+"USD"+quote+FX_postfix;
         int shift=iBarShift(indirect,period,time);
         double price=iClose(indirect,period,shift);
         if(price>0) value/=price;
        }
     }

   if(currency!="USD")
     {
      string direct=StringConcatenate(FX_prefix,currency,"USD",FX_postfix);
      if(MarketInfo(direct,MODE_POINT)!=0)
        {
         int shift=iBarShift(direct,period,time);
         double price=iClose(direct,period,shift);
         if(price>0) value/=price;
        }
      else
        {
         string indirect=StringConcatenate(FX_prefix,"USD",currency,FX_postfix);
         int shift=iBarShift(indirect,period,time);
         double price=iClose(indirect,period,shift);
         if(price>0) value*=price;
        }
     }

   return(value);
  }
if
(Type[k]==OP_BUY)               {                OrdersCount++;                SymbolLong[IndexOrderSymbol[k]]+=Lots[k];                LotValue=ContractValue(Instrument[k],Time[i],Period(),CalcCurrency);                ProfitLoss+=Commission[k]+CumSwap[k]+(iClose(Instrument[k],0,bar)-OpenPrice[k])*Lots[k]*LotValue;               }             if(Type[k]==OP_SELL)               {                OrdersCount++;                SymbolShort[IndexOrderSymbol[k]]+=Lots[k];                LotValue=ContractValue(Instrument[k],Time[i],Period(),CalcCurrency);                ProfitLoss+=Commission[k]+CumSwap[k]+(OpenPrice[k]-iClose(Instrument[k],0,bar)-Spread[k])*Lots[k]*LotValue;               }
 
 
AntonR85 #:
Лучший? Потому что показывает "сфальсифицированное профитное эквити". Говоря вашим языком "объясняю на пальцах". Вот эта функция вычисляет "экви" которое вы видите в данный момент на экране(она работает относительно правильно)
А вот в этих двух кусках кода, как раз и рассчитываться "историческое экви" с "синусами", "тангенсами" и прочими "математическими функциями".
 
«Эквити Монитор» я использую в реальном времени. Если на вашем счете не было ранее сделок, он вам ничего в истории не покажет. Еще брокеры могут поднасрать — обнулить историю в терминале... А то, что в коде написано, для меня темный лес. Меня устраивает, показывает тик в тик. Что эквити в терминале, то и на индикаторе. Одним словом, вы копаете не туда.
 
Maxim Kuznetsov #:

для скрина стоило вообще хотя-бы включить (робот-то отключен) :-)

да ии цифры можно было нарисовать побольше, чего стесняется. 

это вообще похоже мт4....)

 
mvf358 #:
Не я написал эквити монитор. Это самый лучший индикатор, который есть в мире форекса. Плохому танцору всегда что-то мешает. Какой мне прикол показывать сфальсифицированное профитное эквити? Да, вы совершенно правы, с кодом я совсем никак. Но зато я знаю, как грамотно иметь ПРОФИТ. Время не стоит на месте, теперь есть кому писать коды. Главный тут не кодер, главный, который излагает техзадание.

супер индик тоже курануть эту тему по индику надо!!!

 
AntonR85 #:
Лучший? Потому что показывает "сфальсифицированное профитное эквити". Говоря вашим языком "объясняю на пальцах". Вот эта функция вычисляет "экви" которое вы видите в данный момент на экране(она работает относительно правильно)
А вот в этих двух кусках кода, как раз и рассчитываться "историческое экви" с "синусами", "тангенсами" и прочими "математическими функциями".
 
У вас наверное ещё и брокер российский  и депозит рублёвый.
 
mvf358 #:
У вас наверное ещё и брокер российский  и депозит рублёвый.

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

И так как индюк для мт4, скачал демку Финама.  Так что "и брокер российский  и депозит рублёвый".

 
Да и еще. Кто будет использовать индюк, и у кого в инструментах есть "префиксы", "суффиксы" их обязательно надо вписать в параметры  "FX_prefix", "FX_postfix". Иначе будет показывать муиню как у меня, то есть "косинусы".
 
AntonR85 #:
Да и еще. Кто будет использовать индюк, и у кого в инструментах есть "префиксы", "суффиксы" их обязательно надо вписать в параметры  "FX_prefix", "FX_postfix". Иначе будет показывать муиню как у меня, то есть "косинусы".
Это же ваш косяк.а не проблема в индикаторе
 
mvf358 #:
Это же ваш косяк.а не проблема в индикаторе
Да все равно с ним что то не то. Для кросса функция ContractValue() должна возвращать другое значение, а не то которое она возвращает сейчас. 

Если найду ошибку, то напишу, но уже не сегодня.

 
AntonR85 #:
Да и еще. Кто будет использовать индюк, и у кого в инструментах есть "префиксы", "суффиксы" их обязательно надо вписать в параметры  "FX_prefix", "FX_postfix". Иначе будет показывать муиню как у меня, то есть "косинусы".

Знаете, в чём главная фишка всей этой муйни (как Вы изволили выразится)? Не в суффиксах и префиксах, а в том, что всякий индикатор, какой бы он не был навороченный, показывает уже свершившийся факт, а не будущее. Цена - вот самый настоящий и единственный источник информации, а не какой-нибудь там индикатор. Цена оставляет следы (маркеры), по которым можно ориентироваться и с достаточно высокой вероятностью прогнозировать, дальнейшее развитие событий - то бишь её дальнейшее движение. ))

Это моё личное мнение, не претендующее на истину в последней инстанции. Ещё прошу извинить за небольшой оффтоп.

С уважением, Владимир.