Forumu kirletmemek için herhangi bir acemi sorusu. Profesyonel, kaçırmayın. Sensiz, hiçbir yerde - 6. - sayfa 229

 
splxgf :
Bu bölümde BuyCount'u sıfırlamak dışında herhangi bir sorun görmüyorum gibi görünüyor.


Biraz daha yükseğe sıfırladım. Bu, kopyalanan bölümde belirtilmemiştir.

Ancak tüm çiftlerden danışmanlar siparişlerini oraya ekler ve mantıklarını miktardan çıkarır.

***Count değişkenlerinin neden benim için global değişkenler olarak çalıştığını anlayamıyorum.

Test cihazında mantık yürütülür.

Demo da yapılır. İki veya daha fazla çift ve hepsi birlikte aynı mantığı yürütür.

 
Sepulca :


Parantezler eksikti....


parantez ile her şey uğultu gibi.

Tam bölüm şöyle görünür:

 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 :


parantez ile her şey uğultu gibi.

Tam bölüm şöyle görünür:

if(OrderType()==OP_BUY) herhangi bir sembol üzerindeki siparişler ve herhangi bir sihir için sizin için çalışacaktır! Parantezler eksik diyorum!

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

teşekkürler

düzelteceğiz

 
Tünaydın. Bana istatistikleri kimin anladığını söyle, ama bir şey karıştı. Mevcut fiyat serisini logaritmik ölçeğe çevirmem gerekiyor. Bunu yapmak için sadece bu hesaplamayı yapmam gerekiyor ve bu kadar mı?
 for ( int i= 0 ; i< Bars - 1 ; i++)
      {
      NewPrice[i]= MathLog (Close[i]);
      }
Soru, her yerde okuduğum için ortaya çıktı - tüm tarih için Dowjones grafiğine bakın ve logaritmik ölçekteki görüşün mutlak olandan nasıl farklı olduğunu görün. Ve benim için görsel olarak neredeyse aynılar, yani. Elbette farklılıklar var ama örneklerdekiyle aynı olmaktan uzak.
 
Desead :
Tünaydın. Bana istatistikleri kimin anladığını söyle, ama bir şey karıştı. Mevcut fiyat serisini logaritmik bir ölçeğe çevirmem gerekiyor. Bunu yapmak için sadece bu hesaplamayı yapmam gerekiyor ve bu kadar mı? Soru, her yerde okuduğum için ortaya çıktı - tüm tarih için Dowjones grafiğine bakın ve logaritmik ölçekteki görüşün mutlak olandan nasıl farklı olduğunu görün. Ve benim için görsel olarak neredeyse aynılar, yani. Elbette farklılıklar var ama örneklerdekiyle aynı olmaktan uzak.


referans kitabından - MathLog doğal bir logaritmadır - ve yol boyunca bir ondalık sayıya ihtiyacınız var mı????

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


referans kitabından - MathLog doğal bir logaritmadır - ve yol boyunca bir ondalık sayıya ihtiyacınız var mı????


Ondalık yardımcı olmaz. Görünüm değişmeyecek.
 

Lütfen ya kodu (bu tür sorunları ilk soran ben değildim) ya da aşağıdaki parametreleri hesaplama algoritmasını bulmama yardım edin:

Görev şu şekildedir: EA'da, belirli bir fiyat seviyesinde (örneğin, destek, direnç seviyelerinde) kar seviyesini (daha sonra açılacak hem açık hem de bekleyen emirler ) hesaplamak gerekir. belirli bir sembolde ve tüm açık pozisyonlarda (çapraz oranlarda kârın cari fiyatlarla hesaplanması planlanmaktadır).

Aşağıdaki sorunlarla karşılaştı:

Anlaşıldığı üzere, lot büyüklüğü farklı DC'ler için farklıdır (örneğin, instaforex'in temel para birimi 10.000 birimdir ve yaygın olarak inanıldığı gibi 100.000 değil). Dolayısıyla soru şudur: Parti büyüklüğünü para birimi cinsinden programlı olarak nasıl bulacağız.

ek olarak, tüm DC'lerin yazdığı gibi, bir puanın (ve ondan sırasıyla kârın) maliyetini hesaplamak için açık bir formül ve temel para biriminden (çapraz oranlarda) karı mevduat para birimine yeniden hesaplamak için bir formül bulamadım. farklı.

Kar hesaplaması ve tahmini (bir bağlantı atın) konusunda bazı makaleleri okumayı çok isterim çünkü. Bu konudaki bilgilerimde bir boşluk hissediyorum (doğruyu söylemek gerekirse kafamda tam bir karışıklık ... bir pip maliyeti ... çapraz oranlar ... bir pip maliyeti ile nerede çarpılır ve nereye bölünür ... brrrrr ... korku)

 
ne olursa olsun. Logaritma mutlak değerleri göreceli değerlere dönüştürür ve anladığım kadarıyla hangi tabana sahip olduğu önemli değil. Benim için en önemli şey, göstergedeki fiyattaki yüzde değişimini görmek için nasıl doğru yapılacağını anlamak.
 

Bugün, Fibonacci Fanı kullanılırken terminal 4-ki kendini kapattı.

Hata yok, donma yok, sadece bir terminal - bir sonraki saniyede kayboldu.

Soru, bu mucizenin nedenini nasıl bulacağımızdır? Kritik hatalar bir yere kaydediliyor ???