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?
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?
こんにちは。
あるインジケーターを使いたいのですが、どなたか教えていただけませんか?
私は、本体の長さ/またはろうそくの全長とろうそくバーの時間を表示するインジケータを持っています。
ただ、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つの移動平均と 使用したいインディケータを置き換えるコールを、シグナルの条件とともに入力する必要があります。
いろいろやってみたけど、ダメだった![](https://c.mql5.com/forextsd/smiles/frown.png)
あなたがこれまでにコーディングしたものを投稿し、何をしようとしているのかを説明してください。そうすれば、誰かがあなたを助けることができるでしょう。
私は何かを試していたが、進展なし
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に使いたい場合は、次のようなコードに変更すればよいでしょう。
この場合、RSI1.PeriodとRSI1.Priceを外部パラメータとして 定義してください)。
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)です。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()のように)で置き換えるだけで、彼らは動作するはずです、変数名を交換する必要はありません。
aha、ありがとう、しかし、このBuffersは...すべてMA0.Buffer.0と比較する?