BE dla kilku pozycji

O jezykach programowania w platformach i nie tylko.
Awatar użytkownika
Mustafa
Pasjonat
Pasjonat
Posty: 777
Rejestracja: 20 lip 2010, 10:54

BE dla kilku pozycji

Nieprzeczytany post autor: Mustafa »

Witam, nie mogę rozkminić kodu, który policzy BE dla kilku pozycji o różnym wolumenie. Może ktoś ma coś podobnego lub wie jak to zrobić. Z góry dzięki za pomoc.
Nie chodzi o to czy masz rację czy nie, tylko o to, co robisz kiedy masz rację lub jak się zachowujesz jeżeli racji nie masz.

Awatar użytkownika
Esco
Przyjaciel Forum
Przyjaciel Forum
Posty: 2603
Rejestracja: 11 kwie 2010, 20:56

Re: BE dla kilku pozycji

Nieprzeczytany post autor: Esco »

Fragment wskaźnika ConPos

Kod: Zaznacz cały

   for(i=0;i<OrdersTotal();i++)
   {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if(OrderSymbol()==Symbol() && OrderComment()==Order_Comment && OrderMagicNumber()==Order_Magic_Number)
      {
         if(OrderType()==OP_BUY)
         {
            Total_Buy_Price += OrderOpenPrice()*OrderLots();
            Total_Buy_Size += OrderLots();
            Long_Profit += OrderProfit() + OrderSwap() + OrderCommission();
            
            if(Bid != OrderOpenPrice())
            {
               Long_Locked += ((OrderStopLoss()-OrderOpenPrice())/(Bid-OrderOpenPrice()))*OrderProfit();
            }
         }
         if(OrderType()==OP_SELL)
         {
            Total_Sell_Price += OrderOpenPrice()*OrderLots();
            Total_Sell_Size += OrderLots();
            Short_Profit += OrderProfit() + OrderSwap() + (OrderCommission()*2);
            if(Ask != OrderOpenPrice())
            {
               Short_Locked += ((OrderOpenPrice()-OrderStopLoss())/(OrderOpenPrice()-Ask))*OrderProfit();
            }
         }
      }   

   if(Total_Buy_Price>0)
   {
      Total_Buy_Price /= Total_Buy_Size;
      ObjectCreate("Average_Buy_Line",OBJ_HLINE,0,0,Total_Buy_Price);
      ObjectSet("Average_Buy_Line",OBJPROP_COLOR,Lime);
   }
   if(Total_Sell_Price>0)
   {
      Total_Sell_Price /= Total_Sell_Size;
      ObjectCreate("Average_Sell_Line",OBJ_HLINE,0,0,Total_Sell_Price);
      ObjectSet("Average_Sell_Line",OBJPROP_COLOR,Red);
   }
   }
W Total Sell Price i Total Buy Price na końcu masz średnie ceny shorta i longa.
Nie masz wymaganych uprawnień, aby zobaczyć pliki załączone do tego posta.

knx
Stały bywalec
Stały bywalec
Posty: 67
Rejestracja: 22 gru 2009, 14:01

Re: BE dla kilku pozycji

Nieprzeczytany post autor: knx »

Mustafa pisze:Witam, nie mogę rozkminić kodu, który policzy BE dla kilku pozycji o różnym wolumenie. Może ktoś ma coś podobnego lub wie jak to zrobić. Z góry dzięki za pomoc.
Liczysz sumę wolumen * cena otwarcia dla wszystkich pozycji i dzielisz przez sumę wolumenów wszystkich pozycji. Prosta średnia ważone, nic skomplikowanego.

JAREK67
Maniak
Maniak
Posty: 2143
Rejestracja: 13 lip 2006, 11:21

Re: BE dla kilku pozycji

Nieprzeczytany post autor: JAREK67 »

to jest fragment kodu Luktoma.
level to jest poziom, którego szukasz.

Kod: Zaznacz cały

 double lots=0;
    double price=0;
   
    for(int i=0;i<OrdersTotal();i++) {
     if(OrderSelect(i,SELECT_BY_POS)) {
      if(OrderSymbol()==Symbol()) {
       if(OrderType()==OP_BUY) {
        price=price+OrderOpenPrice()*OrderLots();
        lots=lots+OrderLots();
       }
       if(OrderType()==OP_SELL) {
        price=price-OrderOpenPrice()*OrderLots();
        lots=lots-OrderLots();
       }  
      }
     }
    }
    
    double level=0;
   
    if(lots!=0) {
     level=price/lots; 

ODPOWIEDZ