専門家集団 - ページ 10

 
私は次のトピックを議論することをお勧めします:
1 Expert Advisor内の複数のシンボルおよび/またはタイムフレームの取引はどのように関連していますか?

私は現在座って考えている - シンボル_libとExpert Advisorテンプレートを投稿すべき、まさにこの目的のために設計された =)
と私はその必要はありませんと思います...異なる口座で取引する場合でも、複数のターミナルを起動 する必要がありますし、1つの口座で取引する場合でも、複数のウィンドウを開くだけです。そして、混乱も少なくなると思われる...。

それに対する意見や反論を聞くのも面白いかもしれませんね;)
 
トレーリングストップについては、次のようにするとよいでしょう。
int CurPrice_p=Bid/Point; //текущая цена в пунктах
int CurSLoss=OrderStopLoss( )/Point; //текущий стоплосс в пунктах
int TS=40; //значение трейлингстопа в пунктах
if(TS>=5)
{
    int TStep=2; //минимальный шаг трейлинг стопа
    if(TStep<1) TStep=1; //проверка шага трейлинга
    {
        if(MathAbs(CurPrice_p-CurSLOss)>=TS+TStep)
        {
            if(CurPrice_p>CurSLOss)
            {
                double NewSLoss=(CurPrice_p-TS)*Point;
                изменить уровень стоплосс ордера на новый
            }
            if(CurPrice_p>CurSLOss)
            {
                NewSLoss=(CurPrice_p+TS)*Point;
                изменить уровень стоплосс ордера на новый
            }
        }
    }
}
 
トレーリングストップについては、以下のようにすればいいのかもしれません。

というわけで.それは思考以上のものであり、それはアイデアである ))
翌日はExpert Advisorが収集したエラーに目を通し、取引機能の実装を考える。来週にでもご紹介します;)


次のようなテーマで議論することを提案します。
同じExpert Advisorで複数のSealやTimeframeで取引することは、どのように関連するのでしょうか?


投票の結果(反対1名(komposter)、賛成0名、残り棄権)、このスレッドにマルチシンボル取引のゴミを投稿しないことにしました =)。
もし、興味がある人がいたら、私に連絡してください。
 
このトピックはhttp://forum.viac.ru/viewtopic.php?t=2973 に移動しました。
 
ここでは、バックテスト実行後のポジションを視覚的に分析するための、小さな、そして私の意見では便利なユーティリティを紹介します。このアイデアをさらに発展させて、オンラインで取引履歴を 分析したり、他人の発言を解析したりすることができるようになるかもしれませんね。
使用すること。
1.このファイルを拡張子mqhでTracert.mqhとして expertsinclude フォルダーに書き込む
2.行を追加#include <Tracert.mqh>
#property copyright "Rosh, conversed only" #property link
"http://*********"
#include <stdlib.mqh> #include <Tracert.mqh> extern double TakeProfit = 200; extern double Lots = 0.1; extern double TrailingStop = 0; extern double StopLoss = 65;



3.start() ブロックの一番最初に関数SetTrace() を挿入;

int start() { int ticket, total,totalExpert; //-------------------------------------- //コードの簡略化と高速化のために、必要なインジケータデータを一時変数に保存しよう SetTrace()。



4.EA実行後、ファイルを開くと、次のようなものが出てきます。 ユーティリティのコードそのものです。



//+------------------------------------------------------------------+
//|                                                      Tracert.mq4 |
//|                                                             Rosh |
//|                           http://forexsystems.ru/phpBB/index.php |
//+------------------------------------------------------------------+
#property copyright "Rosh"
#property link      "http://forexsystems.ru/phpBB/index.php"

//+------------------------------------------------------------------+
//| script program start function                                    |
//+------------------------------------------------------------------+
double tr_AOPLong,tr_AOPShort;
double tr_LongLots,tr_ShortLots;
int tr_CurrLongOrders,tr_CurrShortOrders;
int tr_Total,tr_Counter;
int tr_PrevLongOrders,tr_PrevShortOrders;
int tr_CurrTotalOpenedOrders,tr_PrevTotalOpenedOrders;
double tr_CurrBalance,tr_PrevCurrBalance;
color tr_ProfitColor=Lime, tr_LossColor=DeepPink,tr_LongAOPColor=Blue,tr_ShortAOPColor=Red, tr_CurrCloseColor;
int tr_CloseLabelArrow=108, tr_AOPLabelArrow=159;
bool tr_CloseLong,tr_CloseShort;
double tr_CloseLabelPrice;
int tr_CloseLabelShift=20;
int tr_CounterCloseLabel=0,tr_CounterAOPLabel=0;
int tr_Bars;

void SetTrace()
  {
//---- 
   if (IsTesting()&&(tr_Bars!=Bars))
      {
      tr_CloseLong=false;
            tr_CloseShort=false;
      tr_AOPLong=0.0;
      tr_AOPShort=0.0;
      tr_LongLots=0.0;
      tr_ShortLots=0.0;
      tr_CloseLabelShift=iATR(NULL,0,50,1)*3.0/10.0/Point;
      if (tr_CurrBalance==0.0)   
         {
         tr_CurrBalance=AccountBalance();
         tr_PrevCurrBalance=AccountBalance();
         }
//----------------Проверка открытых позиций ---------------------------
      tr_CurrLongOrders=0;
      tr_CurrShortOrders=0;
      tr_CurrTotalOpenedOrders=0;
      tr_Total=OrdersTotal();
      if (tr_Total>0)// есть открытые позиции
         {
         for (tr_Counter=0;tr_Counter<tr_Total;tr_Counter++)// подсчет открытых позиций
            {
            OrderSelect(tr_Counter, SELECT_BY_POS, MODE_TRADES);
            if (OrderType()==OP_BUY) 
               {
               tr_CurrLongOrders++;
               tr_AOPLong=tr_AOPLong+OrderLots()*OrderOpenPrice();
               tr_LongLots=tr_LongLots+OrderLots();
               }
            if (OrderType()==OP_SELL) 
               {
               tr_CurrShortOrders++;
               tr_AOPShort=tr_AOPShort+OrderLots()*OrderOpenPrice();
               tr_ShortLots=tr_ShortLots+OrderLots();
               }
            }// подсчет открытых позиций


            //---------------  усреднение ---------------------
            
         if (tr_CurrLongOrders>0) tr_AOPLong=tr_AOPLong/tr_LongLots;
         if (tr_CurrShortOrders>0)tr_AOPShort=tr_AOPShort/tr_ShortLots;
            
            //---------------  усреднение ---------------------
            
         if (tr_AOPLong>0.0)
            {
            ObjectCreate("AOP"+tr_CounterAOPLabel,OBJ_ARROW,0,Time[1],tr_AOPLong);// не совсем корректно, но пока пойдет
            ObjectSet("AOP"+tr_CounterAOPLabel,OBJPROP_ARROWCODE,tr_AOPLabelArrow);
            ObjectSet("AOP"+tr_CounterAOPLabel,OBJPROP_COLOR,tr_LongAOPColor);
            tr_CounterAOPLabel++;
            }

         if (tr_AOPShort>0.0)
            {
            ObjectCreate("AOP"+tr_CounterAOPLabel,OBJ_ARROW,0,Time[1],tr_AOPShort);// не совсем корректно, но пока пойдет
            ObjectSet("AOP"+tr_CounterAOPLabel,OBJPROP_ARROWCODE,tr_AOPLabelArrow);
            ObjectSet("AOP"+tr_CounterAOPLabel,OBJPROP_COLOR,tr_ShortAOPColor);
            tr_CounterAOPLabel++;
            }



//         Print("Long=",tr_CurrLongOrders,"  tr_AOPLong=",tr_AOPLong,"    ***   Short=",tr_CurrShortOrders,"   tr_AOPShort=",tr_AOPShort);            
         tr_CurrTotalOpenedOrders=tr_CurrLongOrders+tr_CurrShortOrders;
         if ((tr_CurrTotalOpenedOrders!=tr_PrevTotalOpenedOrders)||(tr_PrevLongOrders!=tr_CurrLongOrders)||(tr_PrevShortOrders!=tr_CurrShortOrders)) // изменилось колчиство ордеров в рынке
            {
            if (tr_PrevLongOrders>tr_CurrLongOrders) // изменилось число ордеров в Long
               {
               tr_CloseLong=true;            
               tr_CloseLabelPrice=High[1]+tr_CloseLabelShift*Point;
               }
            if (tr_PrevShortOrders>tr_CurrShortOrders) // изменилось число ордеров в Short
               {
               tr_CloseShort=true;            
               tr_CloseLabelPrice=Low[1]-tr_CloseLabelShift*Point;
               }
            tr_PrevLongOrders=tr_CurrLongOrders;
            tr_PrevShortOrders=tr_CurrShortOrders;
            tr_PrevTotalOpenedOrders=tr_CurrTotalOpenedOrders;
            }
         }// есть открытые позиции

//---------------- Проверка изменения Баланса

      tr_CurrBalance=AccountBalance();  
      if (tr_CurrBalance!=tr_PrevCurrBalance)// проверка изменения Balance
         {
         if (tr_CurrBalance-tr_PrevCurrBalance>0.0) tr_CurrCloseColor=tr_ProfitColor; else tr_CurrCloseColor=tr_LossColor;
         tr_PrevCurrBalance=tr_CurrBalance;
         //------------------ установка Метки закрытия --------------------
         ObjectCreate("Close"+tr_CounterCloseLabel,OBJ_ARROW,0,Time[1],tr_CloseLabelPrice);
         ObjectSet("Close"+tr_CounterCloseLabel,OBJPROP_ARROWCODE,tr_CloseLabelArrow);
         ObjectSet("Close"+tr_CounterCloseLabel,OBJPROP_COLOR,tr_CurrCloseColor);
         tr_CounterCloseLabel++;
         //------------------ установка Метки закрытия --------------------
         }// проверка изменения Balance   
      }//(IsTesting()) 
//----
   tr_Bars=Bars;
   return(0);
  }
//+------------------------------------------------------------------+
 
テスターの公開に伴い(ちょっと遅いですが)、trade_lib_testerとinfo_lib_testerを掲載します。なぜなら、彼らの普段のバージョンはテストされたくないから =)))
も使用する。インクルードの行の旧名称を新名称に変更するだけです。

ファイルは、http://forum.viac.ru/viewtopic.php?t=2973 にあります。
 
komposterさんへ

これらのファイルを、最新のも以前のものも含めて、viacやalpari、forexitems、finlistsなど、一般的にファイルを添付できる場所に掲載していただけないでしょうか。また、見つけやすくもなるでしょう。ありがとうございました。
 
komposterさんへ<br /> translate="no">です。
これらのファイルや最近のもの、以前のものをすべてviacやalpari、forexitems、finlistなど、一般的にファイルを添付できる場所に置いていただけないでしょうか。また、見つけやすくもなるでしょう。ありがとうございました。


http://forum.viac.ru/viewtopic.php?t=2973

後日、指示のある記述を移動します・・・。
 
trade_lib_tester&info_lib_tester.rar - posted update -http://forum.viac.ru/viewtopic.php?t=2973


テスト用 <br / translate="no"> 最終更新 - 2005.07.13 14:09
テスト速度が10倍以上向上
 
ライブラリの最終決定 -http://forum.viac.ru/viewtopic.php?p=65111#65111

いろいろな変化がありますね。しかも大がかりなものを。
エラー耐性は全く新しいレベルに達し、情報はより完全で、インターフェースはより親しみやすくなっています ;) ...

一般的には、全く新しいライブラリであると言えます =)。
ご自由にお使いください ;)