どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 229

 
splxgf:
このあたりは、BuyCountを0に戻す以外は問題ないと思います。


すぐ上でゼロにしています。コピーされた部分には表示されていません。

しかし、どのペアのEAもそこに注文を積み、その金額からロジックを組み立てるのです。

私の***Count変数がなぜグローバルとして動作するのか理解できません。

ロジックはStrategy Testerで正しく動作しています。

デモでは正常に動作しています。2組以上、全部合わせても同じロジックを実行します。

 
Sepulca:


ブラケットがない...。


のブラケットは問題ないようです。

全項目はこのようになっています。

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:


ブラケットで全てOKのようです。

全項目はこのようになっています。

if(OrderType()==OP_BUY) で、どのキャラクター、どのマジシャンのオーダーにも対応します。ブラケットが足りないって言ったでしょ!?

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



 

ありがとうございました。

修正しよう

 
こんにちは。統計学がわかる人にアドバイスしてもらえないか、混乱している。現在の価格 シリーズを対数スケールに変換する必要があります。このために必要なのは、この計算だけなのでしょうか?
for(int i=0; i<Bars-1; i++)
      {
      NewPrice[i]=MathLog(Close[i]);
      }
質問の理由は、あちこちに書いてあるのですが、全歴史のダウ・ジョーンズのチャートを見て、対数目盛りの見方と絶対目盛りの見方がどう違うのかを見てください。そして、私の場合、それらは視覚的にほとんど同じです。つまり、もちろん違いはありますが、例にあるほどではありません。
 
Desead:
こんにちは。統計学がわかる方、迷っているのでアドバイスお願いします。現在の価格シリーズを対数スケールに変換する必要があります。この計算だけを行いたいのですが?質問の理由は、あちこちに書いてあるのですが、全歴史のダウ・ジョーンズのチャートを見て、対数目盛りの見方と絶対目盛りの見方がどう違うかを見てくださいということです。そして、私の場合、それらは視覚的にほとんど同じです。つまり、もちろん違いはありますが、例にあるほどではありません。


ハンドブックより -MathLogは自然対数 です - しかし、あなたは小数点のものが必要なようですね?

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


ハンドブックより -MathLogは自然対数ですが、小数点以下が必要なのでしょうか?


Decimalは役に立ちません。景色が変わることはありません。
 

以下のパラメータを計算するためのコード(この問題を質問するのは私が初めてではないと思います)またはアルゴリズムのいずれかを見つけるのを助けてください。

問題は以下の通りです。Expert Advisorでは、特定の価格レベル(例えば、サポート、レジスタンスレベル)で、特定のシンボルで、すべてのオープンポジションの利益レベル(オープン、保留注文の 両方、後で開かれる)を計算する必要があります(クロスレートでは、利益は現在の価格で計算される予定です)。

以下のような問題に直面しました。

結論から言うと、ロットサイズは証券会社によって異なる(例えば、instaforexは基本通貨単位が10,000であり、考えられている100,000ではない)。それゆえ、通貨単位でロットサイズを知るにはどうしたらいいかという疑問があります。

そのため、1pipの値(とそれに応じた利益)を計算したり、利益を基準通貨(クロスレート)から預金通貨に変換するための明確な計算式が見つからない。

利益計算とその予測に関する記事(リンクを送ってください)を読みたいのですが、私はこのテーマについて知識が不足していると感じているので(私の頭は混乱しています.ピップバリュー...クロスレート...ピップの値をどこで掛けて、どこで割るか...。ブルブル酷い)

 
どれでもいいんです。対数は絶対値を 相対値に変換するものであり、その根拠は問わないと私は理解しています。インジケータで価格の変化率を見るためには、正しい方法を理解することがポイントです。
 

本日、フィボナッチファンを使用したところ、ターミナル4が自ら閉じました。

エラーもなく、ハングアップもなく、ただ端末があるだけで、次の瞬間には消えていました。

質問、このミラクルの原因はどうすればわかるのでしょうか?致命的なエラーは どこかに記録されていますか?