コーディングのヘルプ - ページ 61

 
mladen:
そのインジケータはスムージングに「snake force」(centered TMA)を使用しており、再計算せず、そのままにすることはできません。センタリングTMAの「非リペイント」(エンドポイント)バージョンは単純なLWMAですが、センタリングTMAと同じ結果を期待することはできません。centered TMAについての詳細はこちらをご覧ください :https://www.mql5.com/en/forum/181241 そのコードの変更や改良について : その基本はデコンパイルされたコードです。デコンパイルされたコードを変更する人がいるとは思えません。

Mladenさん、情報ありがとうございました。

 

こんにちは。

このインジケータをウェブからダウンロードしたのですが、添付すると2レベルの別ウィンドウが表示され、バーが表示されません。

修正する方法を教えてください。

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

オシレータ.mq4

ファイル:
 

dasioです。

これはただの太陽風インジケーターです。

dasio:
こんにちは。

このインジケータをウェブからダウンロードしたのですが、添付すると2レベルの別ウィンドウが表示され、バーが表示されません。

修正するのを手伝ってもらえますか?

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

オシレータ.mq4
 
mladen:
dasioさん、それはただの太陽風インジケーターです(誰かが何かを変えようとした)。

ありがとうございます。しかし、私はバックテストを 開始すると、バーが表示されます。どうすればいいのでしょうか?

ありがとうございます。

 

ダシオ

expertsとjournalタブで、何らかのエラーが書き出されていないか確認してみてください。私のブローカーデータでは動作するので、あなたのブローカーデータで何が起こっているかはわかりません(多分ゼロ除算か それに似た何か)。

dasio:
ありがとうございます。しかし、私はバックテストを開始すると、バーが表示されます。どうすればいいのでしょうか?
 

Mladen 。

あなたがコードを書いたり、誰かのコードを見たりするとき、あなたはどのようにコードの品質を評価しますか?あなたがコードを書くとき、あなたはどのようにコードの堅牢性をテストしていますか?

 

:)

私の主な基準は次の2つです。

- シンプルさ(コードをシンプルにすることで、開発、拡張、デバッグが容易になります)。

- 整頓されていること (コードを山に放り込めば動くと考える人は、一定期間後に自分のコードを見たことがないでしょう)。また、整理されていないコードのデバッグは、それ自体が物語になります)

これらの2つが満たされたときだけ、私は第二の一見を取り、その時だけ私はそれを "読む "が、それは品質にアクセスするために何ができるかは非常に長い物語です - 私はプロセスが客観的よりもはるかに主観的であると思います...

nevar:
Mladen , あなたがコードを書いたり、誰かのコードを見たりするとき、どのようにコードの品質を評価しますか?あなたがコードを書くとき、どのようにコードの堅牢性をテストしていますか?
 
drofwarc:
こんにちは。

iFractalsを呼び出すインジケータを適応させ、代わりに周期調整機能を持つカスタムフラクタルインジケータを呼び出そうとしています。私が適応させようとしているインジケータは、添付されています。"closesrelativejtozpreviousofractal "と呼ばれています。

closesrelativejtozpreviousofractal.mq4(クローズスレラティブジェイトズプレビュートフラクタル)。

このコードは、価格が前回のフラクタル高値を更新した場合は上向き矢印を、その逆の場合は下向き矢印をプロットします。

iCustomで呼び出そうとしているインジケータも添付します。"Fractals - adjustable "という名前です。

フラクタル_-_adjustable.mq4

以下は、私がオリジナルのインジケータを修正して、Fractals - adjustableを呼び出すようにしたものです。このコードでは、高値と安値のフラクタルに点を打つことに成功し、私が望んだように、フラクタル周期を調整することができます。問題は、前の高値と安値のフラクタルレベルのブレークをプロットするための矢印にあります。正しくプロットすることができません。

何か手助けがあれば、とてもありがたいです。

よろしくお願いします。

drofwarc

int start()

{

int counted_bars = IndicatorCounted();

if (counted_bars > 0) counted_bars--;

int limit = Bars - counted_bars;

for(int i=limit; i>0; i--)

{

UpFractalsBuffer=iCustom(NULL,0,"Fractal - Adjustable", dist, arrowPosition, 0, i); //-Draw the high fractal

if (UpFractalsBuffer!=0) //-If it is available, put in the array of fractals for higher levels

HighLevel=iCustom(NULL,0,"Fractal - Adjustable", dist, arrowPosition, 2, i);

if(Close>HighLevel)

UpArrowBuffer=(Low-(PipBuffer)*Poin); //Arrows

DownFractalsBuffer=iCustom(NULL,0,"Fractal - Adjustable", dist, arrowPosition, 1, i); //-Draw the low fractal

if(DownFractalsBuffer!=0) //- If it is available put in the array of lower levels

LowLevel=iCustom(NULL,0,"Fractal - Adjustable", dist, arrowPosition, 3, i);

if(Close<LowLevel)

DownArrowBuffer=(High+(PipBuffer)*Poin);//Arrows

}

return(0);

}

最終的にこれを解決しました。問題はバッファの取り違えでした。

 

シグナルとシグナルの間にn本のバーをスキップさせるコード

みなさん、こんにちは。

Sleep()を使うか、タイムスタンプを記録して、次のシグナルを出す前にタイムスタンプの後n秒待つことによって、EAをトレードの間に一時停止させることが可能であることは知っています。

しかし、インジケータに同じことをすることは可能でしょうか?

例えば、2本の移動平均の クロスで矢印を表示するインジケータで、クロスの後、別の矢印を表示する前にn本のバーをスキップできるようにしたいです。言い換えれば、n本のバーが経過する前に別のクロスが発生した場合、インジケータはクロスを無視し、矢印をプロットしないようにします。

これを実現するインジケータを広範囲に探しましたが、見つかりませんでした。

どなたか、この機能を持つインジケータを投稿して、私がコードを勉強できるようにしていただけませんか?あるいは、この提案のために動作するコードの例を提供していただければ、私がそれを実装してみることができます。

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

drofwarc

 

が正常に表示されないのですが、どなたか修正する方法を教えてください。

#プロパティ indicator_separate_window

#property indicator_buffers 1 インジケータバッファ1

#property indicator_color1 レッド

#property indicator_maximum 100 (最大値100)

#property indicator_level1 70(レベル1

#property indicator_level2 50

#property indicator_level3 30

#property indicator_minimum 0

//---- 入力パラメータ

extern int rsiperiod = 14 ;

extern int Shortperiod = 5 ;

extern int Middleperiod = 8;

extern int Longperiod = 13;

extern int mamode = 2 ;

//---- バッファ

double RSI[];

double ShortRSI[];

double MiddleRSI[];

double LongRSI[];

double SMRSI[];

int period ;

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

//| カスタムインジケータ 初期化関数

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

int init()

{

//---- インジケータ

IndicatorBuffers(5);

SetIndexBuffer(0,SMRSI)。

SetIndexBuffer(1,RSI); //SetIndexBuffer(0,SMRSI)を設定します。

SetIndexBuffer(2,ShortRSI); SetIndexBuffer(2,ShortRSI);

SetIndexBuffer(3,MiddleRSI)。

SetIndexBuffer(4,LongRSI)を設定します。

//DataWindowとIndicatorサブウィンドウのラベルの名前

IndicatorShortName("SMRSI("+rsiperiod+", "+Shortperiod+", "+Middleperiod+", "+Longperiod+", "+mamode+")");

SetIndexDrawBegin(0,rsiperiod+Longperiod)を設定します。

period=Shortperiod+Middleperiod+Longperiod。

return(0);

}

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

//| カスタムインジケーターイテレーション機能

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

int start()

{

int counted_bars=IndicatorCounted();

int i,limit;

if(counted_bars<0)リターン(-1);

if(counted_bars>0)counted_bars--。

limit = Bars-counted_bars;

for( i=limit; i>=0; i--) RSI=iRSI(NULL,0,rsiperiod,0,i);

for( i=limit; i>=0; i--) ShortRSI=iMAOnArray(RSI,0,Shortperiod,0,mamode,i)。

for( i=limit; i>=0; i--) MiddleRSI=iMAOnArray(RSI,0,Middleperiod,0,mamode,i)。

for( i=limit; i>=0; i--) LongRSI=iMAOnArray(RSI,0,Longperiod,0,mamode,i)。

for( i=limit; i>=0; i--) { if(period!=0) SMRSI=(Shortperiod/period)*ShortRSI+(Middleperiod/period)*MiddleRSI+(Longperiod/period)*LongRSI;}; }.

return(0);

}

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