Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 229

 
splxgf:
Non vedo problemi in quest'area, se non quello di azzerare BuyCount.


Lo sto azzerando appena sopra. Non è indicato nella sezione copiata.

Ma gli EAs di tutte le coppie impilano lì i loro ordini ed elaborano la loro logica dalla quantità.

Non riesco a capire perché le mie variabili ***Count funzionano come globali.

La logica funziona nello Strategy Tester.

Funziona correttamente sulla demo. Due coppie e più e tutte insieme eseguono la stessa logica.

 
Sepulca:


Le parentesi sono mancanti....


Le staffe sembrano essere a posto.

La sezione completa si presenta così:

void FindOrders()  
{
//--------------------------Стартовые данные---------------------------------------------
//Обьемы ордеров     //Количество ордеров   //Средение цены ордеров  //Прибыль ордеров
BuyLots =0;          BuyCount = 0;          BuyAP = 0;               BuyProfit = 0;
SellLots = 0;        SellCount = 0;         SellAP = 0;              SellProfit = 0; 
SellStopLots = 0;    SellStopCount = 0;     SellStopAP = 0;          SellStopProfit = 0; 
BuyStopLots = 0;     BuyStopCount = 0;      BuyStopAP = 0;           BuyStopProfit = 0; 
SellLimitLots = 0;   SellLimitCount = 0;    SellLimitAP = 0;         SellLimitProfit = 0; 
BuyLimitLots = 0;    BuyLimitCount = 0;     BuyLimitAP = 0;          BuyLimitProfit = 0; 
LotLastBuy = 0;      LotLastSell = 0;       BuyFirst =0;             SellFirst=0;
//--------------------------Окончание блока----------------------------------------------

//--------------------------Поиск ордеров------------------------------------------------
RefreshRates();
for(int cnt = 0; cnt < OrdersTotal(); cnt ++)                  //Для всехоткрытых ордеров
 {
  OrderSelect (cnt, SELECT_BY_POS, MODE_TRADES);      // Выбираем со всего масива ордеров
  if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)//Выбирам ордера експерта
   CommonProfit += OrderProfit()+OrderSwap();              // Подсчет совокупного профита
   if(OrderType()==OP_BUY)                                              
    {
     BuyTicket = OrderTicket();                                      // Сохранение тикета
     BuyLots += OrderLots();                                  // Общий обьем Всех позиций  
     BuyAP += OrderOpenPrice()*OrderLots();          // Средневзвешаная цена всех позиций  
     BuyLow = MathMin(BuyLow,OrderOpenPrice());                             // Нижний BUY     
     BuyFirst = MathMin(BuyFirst, OrderOpenTime());          // нахождение первой позиции 
     BuyLast = MathMax(BuyLast, OrderOpenTime());        // нахождение последнего позиции      
     BuyHigh = MathMax(BuyHigh, OrderOpenPrice());                         // Верхний BUY
     BuyProfit += OrderProfit()+OrderSwap();                           // Подсчет профита
     BuyCount++;                                                    // Количество ордеров
     LotLastBuy = MathMax(LotLastBuy, OrderLots());       // Поиск наибольшего объема BUY   
    }
   if (OrderType() == OP_SELL)
    {
     SellTicket = OrderTicket();                                     // Сохранение тикета
     SellLots += OrderLots();                                           // Подсчет объема
     SellAP += OrderLots()*OrderOpenPrice();                   // Вычисление средней цены
     SellFirst = MathMin(SellFirst, OrderOpenTime());        // нахождение первой позиции 
     SellLast = MathMax(SellLast, OrderOpenTime());         // нахождение позднего ордера
     SellHigh = MathMax(SellHigh, OrderOpenPrice());                      // Верхний SELL
     SellLow = MathMin(SellLow, OrderOpenPrice());                         // Нижний SELL
     SellProfit += OrderProfit()+OrderSwap();                          // Подсчет профита
     SellCount++;                                                   // Количество ордеров
     LotLastSell = MathMax(LotLastSell, OrderLots());    // Поиск наибольшего объема SELL   
    }           
   if (OrderType() == OP_SELLSTOP)
    {
     SellStopTicket  = OrderTicket();                                // Сохранение тикета
     SellStopLots += OrderLots();                                       // Подсчет объема
     SellStopAP += OrderLots()*OrderOpenPrice();               // Вычисление средней цены
     SellStopLast = MathMax(SellStopLast,OrderOpenTime());  // нахождение позднего ордера
     SellStopHigh = MathMax(SellStopHigh,OrderOpenPrice());               // Верхний SELL
     SellStopLow = MathMin(SellStopLow,OrderOpenPrice());                  // Нижний SELL
     SellStopProfit += OrderProfit()+OrderSwap();                      // Подсчет профита
     SellStopCount++;                                               // Количество ордеров
    }             
   if (OrderType() == OP_BUYSTOP)
    {
     BuyStopTicket = OrderTicket();                                  // Сохранение тикета
     BuyStopLots += OrderLots();                                        // Подсчет объема
     BuyStopAP += OrderLots()*OrderOpenPrice();                // Вычисление средней цены
     BuyStopLast = MathMax(BuyStopLast,OrderOpenTime());     //нахождение позднего ордера
     BuyStopHigh = MathMax(BuyStopHigh,OrderOpenPrice());                  // Верхний BUY
     BuyStopLow = MathMin(BuyStopLow, OrderOpenPrice());                    // Нижний BUY
     BuyStopProfit += OrderProfit()+OrderSwap();                       // Подсчет профита
     BuyStopCount++;                                                // Количество ордеров
    }             
   if (OrderType() == OP_SELLLIMIT)
    {
     SellLimitTicket = OrderTicket();                                // Сохранение тикета
     SellLimitLots += OrderLots();                                      // Подсчет объема
     SellLimitAP += OrderLots()*OrderOpenPrice();              // Вычисление средней цены
     SellLimitLast = MathMax(SellLimitLast,OrderOpenTime()); //нахождение позднего ордера
     SellLimitHigh = MathMax(SellLimitHigh,OrderOpenPrice());             // Верхний SELL
     SellLimitLow = MathMin(SellLimitLow, OrderOpenPrice());               // Нижний SELL
     SellLimitProfit += OrderProfit()+OrderSwap();                     // Подсчет профита
     SellLimitCount++;                                              // Количество ордеров
    }             
   if (OrderType() == OP_BUYLIMIT)
    {
     BuyLimitTicket = OrderTicket();                                 // Сохранение тикета
     BuyLimitLots += OrderLots();                                       // Подсчет объема
     BuyLimitAP += OrderLots()*OrderOpenPrice();               // Вычисление средней цены
     BuyLimitLast = MathMax(SellLimitLast,OrderOpenTime());  //нахождение позднего ордера
     BuyLimitHigh = MathMax(SellLimitHigh,OrderOpenPrice());               // Верхний BUY
     BuyLimitLow = MathMin(SellLimitLow, OrderOpenPrice());                 // Нижний BUY
     BuyLimitProfit += OrderProfit()+OrderSwap();                      // Подсчет профита
     BuyLimitCount++;                                               // Количество ордеров
    }
 }
//--------------------------Окончательное вычисление средних цен-------------------------

if (BuyLots != 0)       // Если есть ордера BUY, то вычисляется их средняя цена открытия
    BuyAP /= BuyLots;      

if (SellLots != 0)     // Если есть ордера SELL, то вычисляется их средняя цена открытия
    SellAP /= SellLots;      

 if (NormalizeDouble(MathAbs(BuyLots - SellLots), 3) != 0)// Если есть совокупная позиция
   {                                          // то вычисляется ее уровень безубыточности
    APrice = (BuyAP*BuyLots - SellLots*(SellAP - Spread))/(BuyLots - SellLots);  
    if (BuyLots > SellLots)                                   // Поправка для BUY - вверх
      APrice = MathCeil(APrice/Tick)*Tick;
     else                                                     // Поправка для SELL - вниз
      APrice = MathFloor(APrice/Tick)*Tick;
    if (BuyCount == 0)       // Если присутствуют только BUY, то совокупная цена равна их
      APrice = SellAP;                                                   //  средней цене
    if (SellCount == 0)     // Если присутствуют только SELL, то совокупная цена равна их
      APrice = BuyAP;                                                    //  средней цене
   }

}
//--------------------------Окончание блока----------------------------------------------
 
Limita:


Tutto sembra essere a posto con le staffe.

La sezione completa si presenta così:

if(OrderType()==OP_BUY) l'hai fatto funzionare per gli ordini su qualsiasi personaggio e per qualsiasi mago! Ti ho detto che non ci sono abbastanza staffe!

  if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)//Выбирам ордера експерта ДЛЯ ДАННОГО IF
   CommonProfit += OrderProfit()+OrderSwap();              // Подсчет совокупного профита  СРАБАТЫВАЕТ ТОЛЬКО ЭТОТ ОПЕРАТОР
   if(OrderType()==OP_BUY)                                                              А ЭТО СРАБОТАЕТ БЕЗ УЧЁТА SYMBOL() И MAGIC



 

Grazie

Aggiustiamo il tiro

 
Buon pomeriggio. Potete consigliare qualcuno che capisce di statistica, sono confuso. Ho bisogno di convertire la serie di prezzi attuali in una scala logaritmica. Per questo ho bisogno di fare solo questo calcolo ed è tutto ?
for(int i=0; i<Bars-1; i++)
      {
      NewPrice[i]=MathLog(Close[i]);
      }
Il motivo della domanda è che ho letto ovunque - guarda il grafico del Dow Jones per tutta la storia e vedi come la vista sulla scala logaritmica differisce da quella assoluta. E con me sono visivamente quasi uguali, cioè ci sono delle differenze, certo, ma non così tanto come negli esempi.
 
Desead:
Buon pomeriggio. Per favore consigliate chi capisce di statistica perché sono confuso. Ho bisogno di convertire l'attuale serie di prezzi in scala logaritmica. Ho bisogno di fare solo questo calcolo e tutto il resto? Il motivo della domanda è che ho letto ovunque - guarda il grafico del Dow Jones per tutta la storia e vedi come la vista sulla scala logaritmica differisce da quella assoluta. E con me sono visivamente quasi uguali, cioè ci sono delle differenze, certo, ma non così tanto come negli esempi.


dal manuale - MathLog è il logaritmo naturale- ma sembra che tu abbia bisogno del decimale uno????

for(int i=0; i<Bars-1; i++)
      {
      NewPrice[i]=MathLog(Close[i])/MathLog(10);
      }
 
ALXIMIKS:


dal manuale - MathLog è il logaritmo naturale - ma avete bisogno del decimale uno????


Il decimale non aiuta. Non cambierà la vista.
 

Per favore, aiutatemi a trovare o un codice (penso di non essere il primo a porre questo problema), o un algoritmo per calcolare i seguenti parametri:

Il problema è il seguente: in Expert Advisor è necessario calcolare il livello di profitto (sia per gli ordini aperti che per quelli pendenti, che verranno aperti in seguito) a un certo livello di prezzo (per esempio, ai livelli di supporto, di resistenza), sia per un certo simbolo, che per tutte le posizioni aperte (per i tassi di cross, il profitto è previsto per essere calcolato ai prezzi correnti).

Ho affrontato i seguenti problemi:

Come si è scoperto, la dimensione del lotto è diversa per le diverse società di brokeraggio (per esempio instaforex ha 10 000 unità di valuta di base, non 100 000 come viene considerato). Da qui la domanda: come faccio a sapere la dimensione del lotto in unità di valuta.

Per questo motivo non riesco a trovare nessuna formula chiara per calcolare il valore di un pip (e il profitto di conseguenza) e per convertire il profitto dalla valuta di base (per i tassi incrociati) alla valuta di deposito.

Mi piacerebbe leggere un articolo sul calcolo del profitto e la sua previsione (mandami un link), perché sento di avere una mancanza di conoscenza in materia (la mia testa è un casino .... valore di pip... tassi incrociati... dove moltiplicare per il valore di un pip e dove dividere... brrrr... orribile)

 
non importa quale. Il logaritmo traduce valori assoluti in valori relativi, e non importa quale sia la sua base, per quanto ne so. La cosa principale è capire come farlo correttamente per vedere la variazione percentuale del prezzo nell'indicatore.
 

Oggi, usando il Fibonacci Fan, il terminale 4 si è chiuso da solo.

Nessun errore, nessun blocco, era solo il terminale - è scomparso un secondo dopo.

Domanda: come posso scoprire la causa di questo miracolo? Gli errori critici sono registrati da qualche parte?

Motivazione: