[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 964

 
volshebnik:
3年目の終盤にテスターの速度が落ちるのはなぜか


Expert Advisor が年間多くの取引を行う場合、最終結果を表示するために多くのデータが保存されるか、インジケータ バッファが メモリを消費するため、このような問題が発生します。

全体として、私は知らない、私に我慢して - 全体像のために、10年間のテスト、および1年ずつ最適化し、最適なパラメータの選択を行う方がよいです。

 

異なるクロスを分析した後に、別のペアに注文を出したいのですが。

int magic = 428;//Expert Advisorのマジックナンバー
extern double volume = 0.1;//発注しているボリューム
extern int slippage = 3;//slippage
int OPB;//買い注文のマーク
int OPS;//売り注文のマーク
int Profit=1;//オープンオーダーの利益レベル
string comB = "買いでトレンドにエントリー; // 注文に関するコメント
string comS = "売りのトレンドによるエントリー";// 注文コメント
double StochasticCAD;//USDCAD の現在のバー上の主なストキャスティックラインの位置
double StochasticAUD;//AUDUSDの現在のバー上のメインストキャスティックラインの位置

double SARCAD;//USDCAD上のインジケータの現在位置
double SARCAD;//USDCADのインジケータバーの位置が戻る
double SARAUD;//AUDUSD上のインジケーターの現在位置
ダブルSARСAUD;//AUDUSDのインジケーターバーの位置が戻る


int start()
{

//______________________________определение значений переменных_______________________


StochasticCAD = iStochastic("USDCAD",30,5,3,3,1,1,0,0);
StochasticAUD = iStochastic("AUDUSD",30,5,3,1,1,0)。

SARCAD=iSAR("USDCAD",30,0.02,0.2,0);
SARСCAD=iSAR("USDCAD",30,0.02,0.2,1);
SARAUD=iSAR("AUDUSD",30,0.02,0.2,0);
SARСAUD=iSAR("AUDUSD",30,0.02,0.2,1);

double bidCAD =MarketInfo("USDCAD",MODE_BID);
double askCAD =MarketInfo("USDCAD",MODE_ASK);
double bidAUD =MarketInfo("AUDUSD",MODE_BID);
double askAUD =MarketInfo("AUDUSD",MODE_ASK);




//______________________________поиск и закрытие ордеров_______________________________________


int i;
for(i=0; i<=OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)
break;// 注文番号iが存在しない場合、検索を停止する。

if (OrderSymbol() != "GBPUSD" || OrderMagicNumber() != magic) // 注文がEAがあるペアからのものでない場合
continue; // 注文をスキップして、それに続く次の注文を見る。


//_______close Buy_______ をクリックします。
if (OrderType() == OP_BUY && OrderProfit()>=Profit)
// 注文が「買い」の場合
{
OPB=1です。
if(StochasticCAD==0 || StochasticAUD==100 || SARCAD<bidCAD || SARAUD>askAUD)//and market is about revers.
{
OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Wheat); // 利益が出ていれば決済する。
OPB=0とする。
}
}
さもなくば
{
//_______close Sell_______
if(OrderType() == OP_SELL && OrderProfit()>=Profit)// 注文が売りの場合
{OPS=1です。
if(StochasticCAD==100 || StochasticAUD==0 || SARCAD>askCAD || SARAUD<bidAUD)//and market is close to reversal.
{
OrderClose(OrderTicket(),OrderLots(),Ask,slippage,PaleTurquoise); // 利益が出ていればクローズする。
OPS=0とした。
}
}
}
}

//______________выставление ордеров______________________________________________________________________


if (SARCAD>askCAD && SARCAD<bidCAD && SARAUD<bidAUD && SARCAUD>askAUD && OPB<1)//define conditions

{ //_________________________________。

if(!IsTradeAllowed()の場合)
{
Alert("trade thread is busy, try again buy...");
return(-1)です。
}
OPB =OrderSend("GBPUSD",OP_BUY,volume,Ask,slippage,0,0,comB,magic,0,Red); //注文を設定する。

if(OPB == -1)
{
Alert("GBPUSD", "Error: buy", GetLastError());
return(-1)です。
}

if(OPB > 1)
Alert("GBPUSD", "We have buy order!")

}
さもなくば
{//_______Sell_______

if (SARCAD>askCAD && SARCAD<bidCAD && SARCADAUD<bidAUD && SARAUD>askAUD && OPS<1)//define 条件を指定します。

{

if(!IsTradeAllowed()の場合)
{
Alert("the trade thread is busy, try again to sell...");
return(-1)です。
}

OPS=OrderSend("GBPUSD",OP_SELL,volume,Bid,slippage,0,0,comS,magic,0,Blue); //注文を設定する。


if(OPS == -1)
{
Alert("GBPUSD", "Error: Sell", GetLastError());
return(-1)です。
}

if(OPS > 1)
Alert("GBPUSD", "Put Sell order!")

}
}
return(0);//exit
}


テストしても何も出てきません。結果が出ない。

ログには、一連のエラーが記録されています。

何が問題なのか、教えてください。

 
ViktorF:

異なるクロスを分析し、別のペアで注文を出したいのですが。

int magic = 428;//Expert Advisorのマジックナンバー
extern double volume = 0.1;//発注した注文の数量
extern int slippage = 3;//slippage
int OPB;//発注した買い注文のタグ
int OPS;//発注した売り注文のタグ
int Profit=1;// 開いた注文の利益水準
string comB = "Entry by trend to buy"; //注文の要求
string comS = "Entry by trend to sell"; //注文の要求
double StochasticCAD;//USDCADの現在のバー上のストキャスティックメインラインの位置
double StochasticAUD;//AUDUSD の現在のバー上のストキャスティックメインラインの位置

double SARCAD;//current position of indicator on USDCAD
double SARCAD;//position of indicator bar back on USDCAD
double SARAUD;//current position of indicator on AUDUSD
double SARAUD;//position of indicator bar back on AUDUSD


int start()
{ ...



//変数値の決定______________ StochasticCAD = iStochastic("USDCAD",30,5,3,3,1,0,0); StochasticAUD = iStochastic("AUDUSD",30,5,3,3,1,1,0); SARCAD=iSAR("USDCAD",30,0)02,0.2,0); SARCAD=iSAR("USDCAD",30,0.02,0.2,1); SARAUD=iSAR("AUDUSD",30,0.02,0.2,0); SARAUD=iSAR("AUDUSD",30,0.2,0).02,0.2,1); double bidCAD =MarketInfo("USDCAD",MODE_BID); double askCAD =MarketInfo("USDCAD",MODE_ASK); double bidAUD =MarketInfo("AUDUSD",MODE_BID); double askAUD =MarketInfo("米ドル"、"米ドル")。AUDUSD",MODE_ASK); //検索・決済注文 int i; for(i=0; i<=OrdersTotal(); i++){ if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;// 注文番号iが存在しない場合、検索を停止 if (OrderSymbol() !="GBPUSD" || OrderMagicNumber() != magic) // Expert Advisorがあるペアからの注文でない場合 continue; // スキップしてその次の注文を見る //_______close Buy_______ if (OrderType() == OP_BUY && OrderProfit()>)=Profit) //注文がBUYの場合 { OPB=1; if(StochasticCAD==0 || StochasticAUD==100 || SARCAD<bidCAD || SARAUD>askAUD)//and market is close to reversal { OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Wheat); //BUYなら閉じる OPB=0; }.} else { //_______close Sell_______ if(OrderType() == OP_SELL && OrderProfit()>=Profit)// if order is Sell {OPS=1; if(StochasticCAD==100 || StochasticAUD==0 || SARCAD>.askCAD || SARAUD<bidAUD)//そしてマーケットは反転に近い { OrderClose(OrderTicket(),OrderLots(),Ask,slippage,PaleTurquoise); // 利益が出ていれば決済する OPS=0; } 。} } } //_____________________________________________ if (SARCAD>askCAD && SARCAD<bidCAD && SARAUD<bidAUD && SARAUD>askAUD && OPB<1)// 条件定義 { //_____Buy_____ if(!IsTradeAllowed()){ Alert("the trade thread is busy, try again buy..."); return(-1); }.OPB =OrderSend("GBPUSD",OP_BUY,volume,Ask,slippage,0,0,comB,magic,0,Red); //注文設定 if(OPB == -1) { Alert("GBPUSD", "error: buy", GetLastError()); return(-1; } }.if(OPB > 1) Alert ("GBPUSD", "Put Buy Order!"); }.else {//_______Sell_______ if(SARCAD>askCAD && SARCAD<bidCAD && SARCAD<bidAUD && SARAUD>askAUD && OPS<1)//define conditions { if(!IsTradeAllowed()の場合。){ Alert("the trade thread is busy, try again to sell..."); return(-1); }.OPS=OrderSend("GBPUSD",OP_SELL,volume,Bid,slippage,0,0,comS,magic,0,Blue); //注文設定 if(OPS == -1) { Alert("GBPUSD", "error: sell", GetLastError()); return(-1; } }.if(OPS > 1) Alert ("GBPUSD", "Put Sell order!"); }.} return(0);//exit }.















































































































テストしても何も出てこない。何の成果も生まない。

ログには一連のエラーが記録されています。

何が問題なのか、教えてください。


まず、「Counterclick + Alt + M」の同時押しでウィンドウにコードを挿入する方法を学び、あなたのハリネズミの人々がナビゲートし、推薦を与えることができるようにします。

また、ログの該当するエラーメッセージを ダブルクリックしてみると、何か考えが浮かぶかもしれません。

 
Roman.:


まず、「Conrle + Alt + M」キーを同時に押してウィンドウにコードを挿入する方法を習得し、無意味なことを案内したり、推奨することができるようにしましょう。

また、ログブックの該当するエラーメッセージをダブルクリックしてみると、何かヒントがあるかもしれません。


エラーはコンパイラのログではなくテスターのログに...。(先に見てからコメントすると、実際に写真で確認できます...)。ダブルクリックしてもそこには何もない...。

 
int magic = 428;//магический номер эксперта
extern double volume = 0.1;//объем выставляемого ордера
extern int slippage = 3;//проскальзывание
int OPB;//метка выставляемого ордера на покупку
int OPS;//метка выставляемого ордера на продажу
int Profit=1;//уровень профита открытых ордеров
string comB = "Вход по тренду на Buy";//комментарий ордера
string comS = "Вход по тренду на Sell";//комментарий ордера
double StochasticCAD;//положение основной линии Стохастики на текущем баре по USDCAD
double StochasticAUD;//положение основной линии Стохастики на текущем баре по AUDUSD

double SARCAD;//текущее положение индикатора по USDCAD
double SARСCAD;//положение индикатора бар назад по USDCAD
double SARAUD;//текущее положение индикатора по AUDUSD
double SARСAUD;//положение индикатора бар назад по AUDUSD

double bidCAD;
double askCAD;
double bidAUD;
double askAUD;

int start()
  {
  
//______________________________определение значений переменных_______________________ 


      StochasticCAD = iStochastic("USDCAD",30,5,3,3,1,1,0,0); 
      StochasticAUD = iStochastic("AUDUSD",30,5,3,3,1,1,1,0);
      
      SARCAD=iSAR("USDCAD",30,0.02,0.2,0);
      SARСCAD=iSAR("USDCAD",30,0.02,0.2,1);
      SARAUD=iSAR("AUDUSD",30,0.02,0.2,0);
      SARСAUD=iSAR("AUDUSD",30,0.02,0.2,1);
      
      bidCAD   =MarketInfo("USDCAD",MODE_BID);
      askCAD   =MarketInfo("USDCAD",MODE_ASK);
      bidAUD   =MarketInfo("AUDUSD",MODE_BID);
      askAUD   =MarketInfo("AUDUSD",MODE_ASK);


      

//______________________________поиск и закрытие ордеров_______________________________________   
    

    int i;
    for(i=0; i<=OrdersTotal(); i++)
    {
     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)
     break;// если ордер номер i не существует, прекращаем перебор
  
        if (OrderSymbol() != "GBPUSD" || OrderMagicNumber() != magic) // если ордер не с этой пары, на которой стоит наш эксперт
        continue; // пропускаем его и смотрим на следующий за ним ордер
        

      //_______закрытие Buy_______       
        if (OrderType() == OP_BUY && OrderProfit()>=Profit) 
        // если ордер бай 
        {
         OPB=1;
         if(StochasticCAD==0 || StochasticAUD==100 || SARCAD<bidCAD || SARAUD>askAUD)//и рынок близок к развороту
          {
           OrderClose(OrderTicket(),OrderLots(),Bid,slippage,Wheat); // закроем его, если он в профите
           OPB=0;
          }
        }
        else  
        {
      //_______закрытие Sell_______ 
         if(OrderType() == OP_SELL && OrderProfit()>=Profit)// если ордер селл
          {OPS=1;
           if(StochasticCAD==100 || StochasticAUD==0 || SARCAD>askCAD || SARAUD<bidAUD)//и рынок близок к развороту
            {
             OrderClose(OrderTicket(),OrderLots(),Ask,slippage,PaleTurquoise); // закроем его, если он в профите
             OPS=0;
            }
          }
        }
    }
        
//______________выставление ордеров______________________________________________________________________
    
  
    if (SARCAD>askCAD && SARСCAD<bidCAD && SARAUD<bidAUD && SARСAUD>askAUD && OPB<1)//определим условия
     
     {  //_______Buy_______ 

          if(!IsTradeAllowed())
               {
                  Alert("занят торговый поток, повторим попытку бай...");
                  return(-1);
               }
          OPB =OrderSend("GBPUSD",OP_BUY,volume,Ask,slippage,0,0,comB,magic,0,Red); //выставим ордер
            
            if(OPB == -1)
              {
                 Alert("GBPUSD"," ошибка: бай", GetLastError());
                 return(-1);
              }
         
            if(OPB > 1)
            Alert ("GBPUSD","Выставили ордер на покупку!");

     }
      else
     {//_______Sell_______
  
         if (SARСCAD>askCAD && SARCAD<bidCAD && SARСAUD<bidAUD && SARAUD>askAUD && OPS<1)//определим условия
     
         {
          
           if(!IsTradeAllowed())
                {
                   Alert("занят торговый поток, повторим попытку селл...");
                   return(-1);
                }
        
           OPS=OrderSend("GBPUSD",OP_SELL,volume,Bid,slippage,0,0,comS,magic,0,Blue); //выставим ордер


             if(OPS == -1)
               {
                  Alert("GBPUSD"," ошибка: селл", GetLastError());
                  return(-1);
               }
         
             if(OPS > 1)
             Alert ("GBPUSD","Выставили ордер на продажу!");

         }
     }    
   return(0);//выход
  }

 
ViktorF:


すべてのチックに関するテスト?歴史の問題点
 
Vinin:

すべてのチックに関するテスト?歴史の問題点

I.e.解析に関わる全てのペアの履歴を再読み込みする必要があるのか?
 
ViktorF:

つまり、分析に関わるすべてのペアの履歴を再読み込みする必要があるのでは?


そうかもしれませんね。もちろん証券会社が対応していればの話ですが。

しかし、テスターでポジションを開く ことができるのは現在のシンボルであり、他のシンボルにはいくつかの制限があることを忘れてはなりません。

 
Vinin:


可能です。もちろん証券会社が対応していればの話ですが。

テスターでは、現在の商品でポジションを建てることができ、他の商品ではいくつかの制限があることに留意してください。


DCとは?また、他の楽器に対する制約は?
 
ViktorF:

証券会社とは何ですか?また、他のシンボルに対する制限は?


DC - ディーリングデスク

他の商品のテスターでは、ゼロバーの始値しか 取得できず、他の商品のティックもモデル化されず、市場環境は実質的に利用できません。

他の商品の取引は開始されません。

多通貨の分析を正しく行う必要がある場合は、MT5を使用する方がよいでしょう。多通貨テスターがある。