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

 

こんにちは。

あるインジケーターを使いたいのですが、どなたか教えていただけませんか?

私は、本体の長さ/またはろうそくの全長とろうそくバーの時間を表示するインジケータを持っています。

ただ、5桁のブローカーには適していません。時間と長さは、4桁で完璧でありながら、互いの上に投影 されています。

誰かがコードを変更することができ、喜んでいることは非常に素晴らしいことだ。

事前にありがとうございます。

よろしくお願いします。

ベン

 

単純なものが欠けている

MAクロスEA用のTLフィルターに取り組んでいます。あらゆるMAクロスEAですが、単純なものなので、添付ファイルに書きました。

基本的にTL計算機は、TL方向と価格クロスによってシグナル1、2、3を出し、TLが十分に傾斜していない場合は厄介な「ゼロ除算」を出します。

私はコーディングを学んでいて、Coders' GuruのPDFをすべて読み、私の脳が受け止められる限りMQL4フォーラムから多くを読みましたが、私は学習が遅く、3週間前まで何もコーディングしたことがありませんでした....

何かいい方法はないでしょうか?

問題:価格がTLに触れていないときに、"TLfilter "という値を呼び出し、買いを実行する方法がわかりません。

私は、Buy/Sell criteria に &&TTLfilter = 3! と書いてみたり、他の方法を考えてみましたが、得られるのは、全く取引されないものばかりです。

また、OrderSelectループにそれを取得しようとしましたが、うまくいきません。

ただ、何が足りないのか、ポインタを探しています。

どなたか興味のある方がいらっしゃいましたら、ご覧になってみてください。

EAを添付する前にチャートにTLを描き、それをt6と名付ける。

TLセクションの一番下の //--- Print ("TLfilter = ",TLfilter); return(TLfilter); をアンコメントし、それが何をしているかを確認します。

このEAへの改造は二重線でマークされています ========= 1 2 and 3

Edit: None of my coding in this one, as wanted to make sure its as clean as possible x_trader_v2_tlmod.mq4

ファイル:
 

マルチインジケータ

こんにちは。

どなたかこのようなマルチインディケーターを使っている/持っている方はいらっしゃいませんか?

マルチ移動平均 - MQL4コードベース

下の方にある、"freedom bar "インジケーターのようなものです....この入力インジケータを変更したいのですが、4emaは使いたくないのです....1EMA(2クロス)、CCI、STOCH、SARが欲しいです。

いくつかのマルチインディケーターを見つけましたが、このような履歴はありませんでした。

誰か助けて、コードを変えてくれませんか?

 

Pearl1さん、こんにちは。

私が見たところ、それは可能です。他の3つの移動平均と 使用したいインディケータを置き換えるコールを、シグナルの条件とともに入力する必要があります。

 

いろいろやってみたけど、ダメだった

 

あなたがこれまでにコーディングしたものを投稿し、何をしようとしているのかを説明してください。そうすれば、誰かがあなたを助けることができるでしょう。

pearl1:
私は何かを試していたが、進展なし
 

int start()

{

//----

int Counted.Bars = IndicatorCounted(), i;

if(Counted.Bars<0)リターン(-1);

if(Counted.Bars>0)Counted.Bars--。

int Limit = Bars - Counted.Bars;

色 Text.Color.1, Text.Color.2, Text.Color.3, Text.Color.4;

//----

for(i=Limit; i>=0; i--)

{

MA0.Buffer.0 = iMA(NULL, 0, 1, 0, MODE_SMA, PRICE_MEDIAN, i); I suck here... he always compare with this MA0.Buffer.0... so, if I use RSI, Stoch, ... must create this buffer for all elements? RSIのためのRSI0.Buffer.0?

//----

MA1.Buffer.0 = iMA(NULL, 0, MA1.Period, 0, MA1.Mode, MA1.Price, i).MA1.Buffer.1=iMA(NULL)です。

MA1.Buffer.1 = iMA(NULL, 0, MA1.Period, 0, MA1.Mode, MA1.Price, i+1);

MA2.Buffer.0 = iMA(NULL, 0, MA2.Period, 0, MA2.Mode, MA2.Price, i);

MA2.Buffer.1 = iMA(NULL, 0, MA2.Period, 0, MA2.Mode, MA2.Price, i+1); MA2.Buffer.2 = iMA(NULL, 0, MA2.Period, 0, MA2.Mode, MA2.Price, i+1);

MA3.Buffer.0 = iMA(NULL, 0, MA3.Period, 0, MA3.Mode, MA3.Price, i);

MA3.Buffer.1 = iMA(NULL, 0, MA3.Period, 0, MA3.Mode, MA3.Price, i+1); MA3.Buffer.1 = iMA(NULL, 0, MA3.Period, 0, MA3.Mode, MA3.Price, i+1);

MA4.Buffer.0 = iMA(NULL, 0, MA4.Period, 0, MA4.Mode, MA4.Price, i);

MA4.Buffer.1 = iMA(NULL, 0, MA4.Period, 0, MA4.Mode, MA4.Price, i+1); MA4.Buffer.1 = iMA(NULL, 0, MA4.Mode, MA4.Price, i+1);

MA1.UP.Buffer =EMPTY_VALUE;

MA1.DN.Buffer = EMPTY_VALUE; MA1.DN.Buffer = EMPTY_VALUE;

if(MA1.Buffer.0 < MA1.Buffer.1) MA1.DN.Buffer = Gap * P1.Position + 1.0;

else MA1.UP.Buffer = Gap * P1.Position + 1.0;

if(MA1.Buffer.0 < MA0.Buffer.0) Text.Color.1 = Text.Color.Up;

else Text.Color.1 = Text.Color.Down。

//----

MA2.UP.Buffer = EMPTY_VALUE;

MA2.DN.Buffer = EMPTY_VALUE;

if(MA2.Buffer.0 < MA2.Buffer.1) MA2.DN.Buffer = Gap * P2.Position + 1.0;

else MA2.UP.Buffer = Gap * P2.Position + 1.0;

if(MA2.Buffer.0 < MA0.Buffer.0) Text.Color.2 = Text.Color.Up.DN.Buffer (MA2.DN.Buffer)。

else Text.Color.2 = Text.Color.Down。

//----

MA3.UP.Buffer = EMPTY_VALUE;

MA3.DN.Buffer = EMPTY_VALUE;

if(MA3.Buffer.0 < MA3.Buffer.1) MA3.DN.Buffer = Gap * P3.Position + 1.0;

else MA3.UP.Buffer = Gap * P3.Position + 1.0;

if(MA3.Buffer.0 < MA0.Buffer.0) Text.Color.3 = Text.Color.Up.DN.Buffer (MA3.DN.Buffer)。

else Text.Color.3 = Text.Color.Down。

//----

MA4.UP.Buffer = EMPTY_VALUE;

MA4.DN.Buffer = EMPTY_VALUE.DN.Buffer = EMPTY_VALUE.DN.Buffer = EMPTY_VALUE;

if(MA4.Buffer.0 < MA4.Buffer.1) MA4.DN.Buffer = Gap * P4.Position + 1.0;

else MA4.UP.Buffer = Gap * P4.Position + 1.0;

if(MA4.Buffer.0 < MA0.Buffer.0) Text.Color.4 = Text.Color.Up.DN.Buffer (MA4.DN.Buffer)。

else Text.Color.4 = Text.Color.Down。

//----

//----

LabelSet(Text.Color.1, Text.Color.2, Text.Color.3, Text.Color.4);

//----

}

//----

return(0);

 

すべての要素についてバッファを作成する必要はありません。

MA1.Buffer.0, MA1.Buffer.1, ...... は、バッファではなく、単純な変数です。名前を変えずに何にでも使うことができます。例えばrsiに使いたい場合は、次のようなコードに変更すればよいでしょう。

MA1.Buffer.0 = iRSI(NULL, 0, RSI1.Period, RSI1.Price, i); MA1.Buffer.1 = iRSI(NULL, 0, RSI1.Period, RSI1.Price, i+1);

この場合、RSI1.PeriodとRSI1.Priceを外部パラメータとして 定義してください)。

pearl1:
int start()

{

//----

int Counted.Bars = IndicatorCounted(), i;

if(Counted.Bars<0)戻り値(-1)。

if(Counted.Bars>0)Counted.Bars--。

int Limit = Bars - Counted.Bars;

色 Text.Color.1, Text.Color.2, Text.Color.3, Text.Color.4;

//----

for(i=Limit; i>=0; i--)

{

MA0.Buffer.0 = iMA(NULL, 0, 1, 0, MODE_SMA, PRICE_MEDIAN, i); I suck here... he always compare with this MA0.Buffer.0... so, if I use RSI, Stoch, ... must create this buffer for all elements?RSIのためのRSI0.Buffer.0?

//----

MA1.Buffer.0 = iMA(NULL, 0, MA1.Period, 0, MA1.Mode, MA1.Price, i).MA1.Buffer.1=iMA(NULL)です。

MA1.Buffer.1 = iMA(NULL, 0, MA1.Period, 0, MA1.Mode, MA1.Price, i+1);

MA2.Buffer.0 = iMA(NULL, 0, MA2.Period, 0, MA2.Mode, MA2.Price, i);

MA2.Buffer.1 = iMA(NULL, 0, MA2.Period, 0, MA2.Mode, MA2.Price, i+1); MA2.Buffer.1 = iMA(NULL, 0, MA2.Period, 0, MA2.Mode, MA2.Price, i+1);

MA3.Buffer.0 = iMA(NULL, 0, MA3.Period, 0, MA3.Mode, MA3.Price, i);

MA3.Buffer.1 = iMA(NULL, 0, MA3.Period, 0, MA3.Mode, MA3.Price, i+1); MA3.Buffer.1 = iMA(NULL, 0, MA3.Period, 0, MA3.Mode, MA3.Price, i+1);

MA4.Buffer.0 = iMA(NULL, 0, MA4.Period, 0, MA4.Mode, MA4.Price, i);

MA4.Buffer.1 = iMA(NULL, 0, MA4.Period, 0, MA4.Mode, MA4.Price, i+1); MA4.Buffer.1 = iMA(NULL, 0, MA4.Mode, MA4.Price, i+1);

MA1.UP.Buffer = EMPTY_VALUE;

MA1.DN.Buffer = EMPTY_VALUE; MA1.DN.Buffer = EMPTY_VALUE;

if(MA1.Buffer.0 < MA1.Buffer.1) MA1.DN.Buffer = Gap * P1.Position + 1.0;

else MA1.UP.Buffer = Gap * P1.Position + 1.0;

if(MA1.Buffer.0 < MA0.Buffer.0) Text.Color.1 = Text.Color.Up;

else Text.Color.1 = Text.Color.Down。

//----

MA2.UP.Buffer = EMPTY_VALUE;

MA2.DN.Buffer = EMPTY_VALUE;

if(MA2.Buffer.0 < MA2.Buffer.1) MA2.DN.Buffer = Gap * P2.Position + 1.0;

else MA2.UP.Buffer = Gap * P2.Position + 1.0;

if(MA2.Buffer.0 < MA0.Buffer.0) Text.Color.2 = Text.Color.Up.DN.Buffer (MA2.DN.Buffer)。

else Text.Color.2 = Text.Color.Down。

//----

MA3.UP.Buffer = EMPTY_VALUE;

MA3.DN.Buffer = EMPTY_VALUE;

if(MA3.Buffer.0 < MA3.Buffer.1) MA3.DN.Buffer = Gap * P3.Position + 1.0;

else MA3.UP.Buffer = Gap * P3.Position + 1.0;

if(MA3.Buffer.0 < MA0.Buffer.0) Text.Color.3 = Text.Color.Up.DN.Buffer (MA3.DN.Buffer)。

else Text.Color.3 = Text.Color.Down。

//----

MA4.UP.Buffer = EMPTY_VALUE;

MA4.DN.Buffer = EMPTY_VALUE.DN.Buffer = EMPTY_VALUE.DN.Buffer = EMPTY_VALUE;

if(MA4.Buffer.0 < MA4.Buffer.1) MA4.DN.Buffer = Gap * P4.Position + 1.0;

else MA4.UP.Buffer = Gap * P4.Position + 1.0;

if(MA4.Buffer.0 < MA0.Buffer.0) Text.Color.4 = Text.Color.Up.DN.Buffer (MA4.DN.Buffer)。

else Text.Color.4 = Text.Color.Down。

//----

//----

LabelSet(Text.Color.1, Text.Color.2, Text.Color.3, Text.Color.4);

//----

}

//----

return(0)です。
 
pearl1:
int start()

{

//----

int Counted.Bars = IndicatorCounted(), i;

if(Counted.Bars<0)リターン(-1);

if(Counted.Bars>0)Counted.Bars--。

int Limit = Bars - Counted.Bars;

色 Text.Color.1, Text.Color.2, Text.Color.3, Text.Color.4;

//----

for(i=Limit; i>=0; i--)

{

MA0.Buffer.0 = iMA(NULL, 0, 1, 0, MODE_SMA, PRICE_MEDIAN, i);

//----

MA1.Buffer.0 = iMA(NULL, 0, MA1.Period, 0, MA1.Mode, MA1.Price, i);

MA1.Buffer.1 = iMA(NULL, 0, MA1.Period, 0, MA1.Mode, MA1.Price, i+1);

MA2.Buffer.0 = iMA(NULL, 0, MA2.Period, 0, MA2.Mode, MA2.Price, i);

MA2.Buffer.1 = iMA(NULL, 0, MA2.Period, 0, MA2.Mode, MA2.Price, i+1); MA2.Buffer.2 = iMA(NULL, 0, MA2.Period, 0, MA2.Mode, MA2.Price, i+1);

MA3.Buffer.0 = iMA(NULL, 0, MA3.Period, 0, MA3.Mode, MA3.Price, i);

MA3.Buffer.1 = iMA(NULL, 0, MA3.Period, 0, MA3.Mode, MA3.Price, i+1); MA3.Buffer.1 = iMA(NULL, 0, MA3.Period, 0, MA3.Mode, MA3.Price, i+1);

MA4.Buffer.0 = iMA(NULL, 0, MA4.Period, 0, MA4.Mode, MA4.Price, i);

MA4.Buffer.1 = iMA(NULL, 0, MA4.Period, 0, MA4.Mode, MA4.Price, i+1); MA4.Buffer.1 = iMA(NULL, 0, MA4.Mode, MA4.Price, i+1);

MA1.UP.Buffer = EMPTY_VALUE;

MA1.DN.Buffer = EMPTY_VALUE; MA1.DN.Buffer = EMPTY_VALUE;

if(MA1.Buffer.0 < MA1.Buffer.1) MA1.DN.Buffer = Gap * P1.Position + 1.0;

else MA1.UP.Buffer = Gap * P1.Position + 1.0;

if(MA1.Buffer.0 <MA0.Buffer.0) Text.Color.1 = Text.Color.Up;

else Text.Color.1 = Text.Color.Down。

//----

MA2.UP.Buffer = EMPTY_VALUE;

MA2.DN.Buffer = EMPTY_VALUE;

if(MA2.Buffer.0 < MA2.Buffer.1) MA2.DN.Buffer = Gap * P2.Position + 1.0;

else MA2.UP.Buffer = Gap * P2.Position + 1.0;

if(MA2.Buffer.0 <MA0.Buffer.0) Text.Color.2 = Text.Color.Up.DN.Buffer (MA2.DN.Buffer)。

else Text.Color.2 = Text.Color.Down。

//----

MA3.UP.Buffer = EMPTY_VALUE;

MA3.DN.Buffer = EMPTY_VALUE;

if(MA3.Buffer.0 < MA3.Buffer.1) MA3.DN.Buffer = Gap * P3.Position + 1.0;

else MA3.UP.Buffer = Gap * P3.Position + 1.0;

if(MA3.Buffer.0 <MA0.Buffer.0) Text.Color.3 = Text.Color.Up.DN.Buffer (MA3.DN.Buffer)。

else Text.Color.3 = Text.Color.Down。

//----

MA4.UP.Buffer = EMPTY_VALUE;

MA4.DN.Buffer = EMPTY_VALUE.DN.Buffer = EMPTY_VALUE.DN.Buffer = EMPTY_VALUE;

if(MA4.Buffer.0 < MA4.Buffer.1) MA4.DN.Buffer = Gap * P4.Position + 1.0;

else MA4.UP.Buffer = Gap * P4.Position + 1.0;

if(MA4.Buffer.0 <MA0.Buffer.0) Text.Color.4 = Text.Color.Up.DN.Buffer (MA4.DN.Buffer)。

else Text.Color.4 = Text.Color.Down。

//----

//----

LabelSet(Text.Color.1, Text.Color.2, Text.Color.3, Text.Color.4);

//----

}

//----

return(0)です。

あはは、ありがとうございます、でも、このBufferの比較は・・・すべてMA0.Buffer.0と比較するのですか?

 

IMA()コールをあなたが望むコール(私があなたに与えた例からiRSI()のように)で置き換えるだけで、彼らは動作するはずです、変数名を交換する必要はありません。

pearl1:
aha、ありがとう、しかし、このBuffersは...すべてMA0.Buffer.0と比較する?