MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 592

 

なぜ、#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);

}

//+------------------------------------------------------------------+


Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
Задавайте вопросы по техническому анализу, обсуждайте торговые системы и улучшайте свои навыки программирования торговых стратегий на языке MQL5. Общайтесь и обменивайтесь опытом на форуме с трейдерами всего мира и помогайте ответами новичкам — наше сообщество развивается вместе с вами. Машинное обучение роботов Привет всем, я занимаюсь...
 
Alekseu Fedotov:
このインジケーターの販売者様へ。

ありがとうございます...
 
EAテスト中にバッファのコピーを拒否された場合、どうすればいいか誰か教えてください。
 
Roman Sharanov:
EAテスト中にバッファのコピーを拒否された場合、どうすればいいか誰か教えてください。

原因を特定する。

 
Artyom Trishkin:

原因を特定する。

それは何なのでしょうか?コードの大きさでしょうか?わざとロジックを全て無効にして、バッファのコピーだけを残し、何もせず

 
Roman Sharanov:

それは何なのでしょうか?コードの大きさでしょうか?わざとロジックを全て無効にして、バッファのコピーだけを残し、何もせず

週末はみんなテレパシーなんだ...。
 

テスト実行 時にメモリ不足のエラーが出る(起動しない)。どうすれば直るのか?

端末を再起動すると、テストが始まり、数回テストするとまたメモリ不足になります。

Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - MetaTrader 5
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии (советники) перед началом использования их в реальной торговле. При тестировании советника происходит его однократная прогонка с начальными параметрами на исторических данных. При оптимизации торговая стратегия прогоняется несколько раз с различным набором параметров...
 
Juer:

テスト実行 時にメモリ不足のエラーが出る(起動しない)。どうすれば直るのか?

端末を再起動するとテストが始まり、数回のテストの後、再びメモリ不足になる。

テストしているプログラムがメモリを食ってしまう。その中で間違いを探す。テスターではなく、デモの「Journal」と「Expert Advisors」のログを確認してみてください。おそらく、時間軸の変更時のメモリリークについて書かれているのでしょう。

コードなしでこれ以上推測することはありません。

 
Artyom Trishkin:

テストしているプログラムは、メモリをすべて消費します。その中で間違いを探す。デモの「ログ」と「Expert Advisors」のログを見てください(テスターではありません) - そこには何が書いてありますか?おそらく、時間軸の変更時のメモリリークについて書かれているのでしょう。

コードがなければ、これ以上推測することはできません。

テスト 終了後のログには、削除されていないオブジェクトが大量に残っています。数千...それは問題ないですか?

 
Juer:

テスト終了後のログには、失敗したオブジェクトが山ほど残っています。数千...それが問題なのでしょうか?

ここで、確実に答えてくれるはずです。