Задавайте вопросы по техническому анализу, обсуждайте торговые системы и улучшайте свои навыки программирования торговых стратегий на языке MQL5. Общайтесь и обменивайтесь опытом на форуме с трейдерами всего мира и помогайте ответами новичкам — наше сообщество развивается вместе с вами. Машинное обучение роботов Привет всем, я занимаюсь...
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии (советники) перед началом использования их в реальной торговле. При тестировании советника происходит его однократная прогонка с начальными параметрами на исторических данных. При оптимизации торговая стратегия прогоняется несколько раз с различным набором параметров...
なぜ、#property strictという文字列を追加すると、矢印が描画さ れなくなるのか、ご教示ください。
//+------------------------------------------------------------------+
//| 揺れ動くレビュー.mq4 |。
//| Copyright 2018, MetaQuotes Software Corp.
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#プロパティリンク "https://www.mql5.com"
#property version "1.00"
#property indicator_separate_window
#プロパティ indicator_buffers 5
#プロパティ indicator_plots 4
//--- プロットシグナー
#property indicator_label1 "Signaler"(シグナラー)。
#property indicator_type1 DRAW_LINE
#property indicator_color1 clrRed
#property indicator_style1 STYLE_SOLID
#property indicator_width1 1
//--- プロット Z
#property indicator_label2 "Z"
#property indicator_type2 DRAW_LINE
#property indicator_color2 clrBeige
#property indicator_style2 STYLE_DOT
#property indicator_width2 1
//--- プロットベイ
#property indicator_label3 "ベイ"
#property indicator_type3 DRAW_ARROW
#property indicator_color3 clrLightSkyBlue
#property indicator_style3 STYLE_SOLID
#property indicator_width3 1
//--- プロットセル
#property indicator_label4 "Sell"(売り)。
#property indicator_type4 DRAW_ARROW
#プロパティ indicator_color4 clrDeepPink
#property indicator_style4 STYLE_SOLID
#property indicator_width4 1
//--- 入力パラメータ
input int PCCI=14; // 指示周期 PCCI
input double KCCI=1.1; //調整係数
input int PMOM=14; //period of Momentum インジケータ
input int KMOM=1111; // 平滑化係数.
input int PATR=14; // インジケータ期間ATR
input int KATR=111111; // 平滑化係数
input int PFOR=14; // フォルスインジケーターの周期
input int KFOR=1111; // 平滑化係数.
input int PTVR=12; // TVIインジケータの周期p
input int PTVS=12; // TVIインジケータの周期c
input int PTVU=5; //TPIインジケータでの周期
input int KTVl=111; // レベリング係数
input int POSF=12; // AOS高速インジケータの周期
input int POSS=26; // AOSインジケータスロットの周期
input int POSZ=9; //AOSインジケータの小周期化
input int KAOS=111111; // 平滑化係数
input int KAD=111; //AOSインジケータの変位係数
input double KK=2.0; // 矢印のフィルタリング
input int Amendment=20; //インジケータウィンドウに消化しやすい形で矢印を描く
//--- インジケータ・バッファ
double SignalerBuffer[];
double Z_Buffer[];
double BayBuffer[]; double BayBuffer[];
double SellBuffer[]; double SellBuffer[];
double PatchBuffer[];
//+------------------------------------------------------------------+
//| カスタムインジケータ初期化関数
//+------------------------------------------------------------------+
int OnInit()
{
IndicatorSetInteger(INDICATOR_DIGITS,0)です。
SetIndexBuffer(0,SignalerBuffer)を設定します。
SetIndexBuffer(1,Z_Buffer)を設定する。
SetIndexBuffer(2,BayBuffer)を設定します。
SetIndexBuffer(3,SellBuffer)を設定します。
SetIndexBuffer(4,PatchBuffer)を設定します。
SetIndexStyle(0,DRAW_LINE)を設定します。
SetIndexStyle(1,DRAW_LINE)を設定します。
SetIndexStyle(2,DRAW_ARROW)を設定します。
SetIndexStyle(3,DRAW_ARROW)を設定します。
SetIndexArrow(2,241)。
SetIndexArrow(3,242)。
SetIndexEmptyValue(2,0.0);
SetIndexEmptyValue(3,0.0);
IndicatorShortName("Basement signaler(" +(string) PATR + ")");
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| カスタムインジケータ反復関数
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
int i , limit=rates_total-prev_calculated ;
double cci,atr,mom,forc,ao,ac,ad,tvi,osma ;
//---- 計算パラメーターを設定する
if(prev_calculated==0)limit--;
else limit++;
//---- カウント
for(i=limit-1; i>=0; i--)
{
cci=iCCI(NULL,0,PCCI,PRICE_TYPICAL,i)/KCCI;
mom=(iMomentum(NULL,0,PMOM,PRICE_TYPICAL,i)-100)*KMOM ;
forc=iForce(NULL,0,PFOR,MODE_SMA,PRICE_TYPICAL,i)*KFOR;
tvi=iCustom(NULL,0, "TVI_v2",PTVR,PTVS,PTVU,4,i)*KTVl ;
osma=iOsMA(NULL,0,POSF,POSS,POSZ,PRICE_TYPICAL,i)*KAOS;
atr=iATR(NULL,0,PATR,i)*KATR;
ao=iAO(NULL,0,i)*KAOS ;
ac=iAC(NULL,0,i)*KAOS ;
ad=iAD(NULL,0,i)/KAD ;
SignalerBuffer[i]=(cci+mom+forc+tvi+osma+atr+ao+ac+ad)/9 ;
}
for(i=limit-1; i>=0; i--)
{
Z_Buffer[i] = (SignalerBuffer[i]+SignalerBuffer[i-1])/2 ;
PatchBuffer[i] = MathAbs(SignalerBuffer[i]-Z_Buffer[i]) ;
}
for(i=0; i<limit && !IsStopped(); i++)
{
if(Z_Buffer[i]>SignalerBuffer[i]&&Z_Buffer[i+1]<SignalerBuffer[i+1]&&PatchBuffer[i]>KK)
BayBuffer[i]=SignalerBuffer[i]-Amendment;
if(Z_Buffer[i]<SignalerBuffer[i]&&Z_Buffer[i+1]>SignalerBuffer[i+1]&&PatchBuffer[i]>KK)
SellBuffer[i]=SignalerBuffer[i]+Amendment;
}
//--- 次の呼び出しのために prev_calculated の値を返す
return(rates_total);
}
//+------------------------------------------------------------------+
このインジケーターの販売者様へ。
EAテスト中にバッファのコピーを拒否された場合、どうすればいいか誰か教えてください。
原因を特定する。
原因を特定する。
それは何なのでしょうか?コードの大きさでしょうか?わざとロジックを全て無効にして、バッファのコピーだけを残し、何もせず
それは何なのでしょうか?コードの大きさでしょうか?わざとロジックを全て無効にして、バッファのコピーだけを残し、何もせず
テスト実行 時にメモリ不足のエラーが出る(起動しない)。どうすれば直るのか?
端末を再起動すると、テストが始まり、数回テストするとまたメモリ不足になります。
テスト実行 時にメモリ不足のエラーが出る(起動しない)。どうすれば直るのか?
端末を再起動するとテストが始まり、数回のテストの後、再びメモリ不足になる。
テストしているプログラムがメモリを食ってしまう。その中で間違いを探す。テスターではなく、デモの「Journal」と「Expert Advisors」のログを確認してみてください。おそらく、時間軸の変更時のメモリリークについて書かれているのでしょう。
コードなしでこれ以上推測することはありません。
テストしているプログラムは、メモリをすべて消費します。その中で間違いを探す。デモの「ログ」と「Expert Advisors」のログを見てください(テスターではありません) - そこには何が書いてありますか?おそらく、時間軸の変更時のメモリリークについて書かれているのでしょう。
コードがなければ、これ以上推測することはできません。
テスト 終了後のログには、削除されていないオブジェクトが大量に残っています。数千...それは問題ないですか?
テスト終了後のログには、失敗したオブジェクトが山ほど残っています。数千...それが問題なのでしょうか?
ここで、確実に答えてくれるはずです。