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

 

以下のコーディングで、Median priceの 代わりに" CLOSE PRICE "を使いたいのですが......。Plzは助ける。

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

int start()

{

Double ClosePrice=Close[0];

int limit, i, flag, flagh, trend[5000];

double up[5000]、dn[5000]、medianPrice、atr;

int counted_bars = IndicatorCounted();

//エラーの可能性をチェック

if(counted_bars < 0) return(-1);

//---- 最後にカウントされたバーが再カウントされる

if(counted_bars > 0) counted_bars--;

limit=Bars-1-counted_bars;

//Print(limit)。

//----

for (i = Bars; i >= 1; i--) { { { {トレンドアップ

TrendUp = EMPTY_VALUE;

TrendDown = EMPTY_VALUE;

atr = iATR(NULL, 0, Nbr_Periods, i);

//Print("atr: "+atr);

medianPrice = (High+Low)/2;

//Print("medianPrice: "+medianPrice")。

up=medianPrice+(乗数*atr);

//Print("上昇: "+up);

dn=medianPrice-(乗数*atr);

//Print("dn: "+dn);

trend=1;

if (クローズ>アップ) {

trend=1。

if (trend == -1) changeOfTrend = 1;

//Print("トレンド: "+trend);

else if (Close<dn) {

trend=-1;

if (トレンド== 1) changeOfTrend = 1;

//Print("トレンド: "+trend);

else if (トレンド==1) {

trend=1。

changeOfTrend = 0;

else if (トレンド==-1) {

trend=-1;

changeOfTrend = 0;

}

if (トレンド0) {

flag=1;

//Print("フラグ: "+flag);

}

else {

flag=0;

//Print("flagh: "+flag);

if (トレンド>0 &&トレンド<0) {

flagh=1;

//Print("フラグh: "+flagh);

else {

flagh=0;

//Print("フラグ: "+flagh);

if (trend>0 && dn<dn)

dn=dn

if (トレンドアップ)

up=up

if (フラグ==1)

up=medianPrice+(Multiplier*atr)となります。

if (flagh==1)

dn=MedianPrice-(Multiplier*atr)となります。

//-- インジケーターを描画する

if (トレンド==1) {

TrendUp=dn;

if (changeOfTrend == 1) { トレンドアップ = トレンドダウン。

TrendUp = TrendDown;

changeOfTrend = 0;

}

}

else if (トレンド==-1) {

TrendDown=up となります。

if (changeOfTrend == 1) { (トレンドの変化== 1)

TrendDown = TrendUp;

changeOfTrend = 0;

}

}

if (トレンド==1 && トレンド==-1){。

UpBuffer = iLow(Symbol(),0,i)-(3*Point);

DnBuffer = EMPTY_VALUE;

}

if (トレンド==-1 && トレンド==1){。

UpBuffer = EMPTY_VALUE;

DnBuffer = iHigh(Symbol(),0,i)+(3*Point)とする。

}

}

WindowRedraw()を実行します。

//----

return(0);

 
rpasupathy:
以下のコードで中央値ではなく、「終値」を使いたいのですが・・・。Plz help :

ありがとうございました

int start()

{

double ClosePrice=Close[0];

int limit, i, flag, flagh, trend[5000];

double up[5000]、dn[5000]、medianPrice、atr;

int counted_bars = IndicatorCounted();

//---- エラーの可能性をチェック

if(counted_bars < 0) return(-1);

//---- 最後にカウントされたバーが再カウントされる

if(counted_bars > 0) counted_bars--;

limit=Bars-1-counted_bars;

//Print(limit)。

//----

for (i = Bars; i >= 1; i--) { { { {トレンドアップ

TrendUp = EMPTY_VALUE;

TrendDown = EMPTY_VALUE;

atr = iATR(NULL, 0, Nbr_Periods, i);

//Print("atr: "+atr);

medianPrice = (High+Low)/2;

//Print("medianPrice: "+medianPrice")。

up=medianPrice+(乗数*atr);

//Print("上昇: "+up);

dn=medianPrice-(乗数*atr);

//Print("dn: "+dn);

trend=1;

if (クローズ>アップ) {

trend=1。

if (trend == -1) changeOfTrend = 1;

//Print("トレンド: "+trend);

else if (Close<dn) {

trend=-1;

if (トレンド== 1) changeOfTrend = 1;

//Print("トレンド: "+trend);

else if (トレンド==1) {

trend=1。

changeOfTrend = 0;

else if (トレンド==-1) {

trend=-1;

changeOfTrend = 0;

}

if (トレンド0) {

flag=1;

//Print("フラグ: "+flag);

}

else {

flag=0;

//Print("flagh: "+flag);

if (トレンド>0 &&トレンド<0) {

flagh=1;

//Print("フラグh: "+flagh);

else {

flagh=0;

//Print("フラグ: "+flagh);

if (trend>0 && dn<dn)

dn=dn

if (トレンドアップ)

up=up

if (フラグ==1)

up=medianPrice+(Multiplier*atr)となります。

if (flagh==1)

dn=MedianPrice-(Multiplier*atr)となります。

//-- インジケーターを描画する

if (トレンド==1) {

TrendUp=dn;

if (changeOfTrend == 1) { トレンドアップ = トレンドダウン。

TrendUp = TrendDown;

changeOfTrend = 0;

}

}

else if (トレンド==-1) {

TrendDown=up となります。

if (changeOfTrend == 1) { (トレンドの変化== 1)

TrendDown = TrendUp;

changeOfTrend = 0;

}

}

if (トレンド==1 && トレンド==-1){。

UpBuffer = iLow(Symbol(),0,i)-(3*Point);

DnBuffer = EMPTY_VALUE;

}

if (トレンド==-1 && トレンド==1){。

UpBuffer = EMPTY_VALUE;

DnBuffer = iHigh(Symbol(),0,i)+(3*Point)とする。

}

}

WindowRedraw()を実行します。

//----

return(0) とします。

}

を置き換えることができます。

(High+Low)/2

と置き換えることができます。

閉じる

 
mladen:
ケンワ

オートチェック記号の機能とは何のことでしょうか?このコードにはそんなものはありません。

シンボル名が正しい限り、どのようなシンボルでも動作します) ファレアストルが提供するインジケータを使用してください。

こんにちは、mladenさん。

中にこんなのがありますね。

if (ForSymbol1=="") ForSymbol1 = Symbol()。

if (ForSymbol2=="") ForSymbol2 = Symbol()。

if (ForSymbolSyn3a=="") ForSymbolSyn3a = Symbol()。

if (ForSymbolSyn3b=="") ForSymbolSyn3b=Symbol()。

if (ForSymbolSyn3c=="") ForSymbolSyn3c=Symbol()。

いくつかのパーツ

void checkSymbol(int limit, string ForSymbol, double& buffer[])

{

limit = MathMax(limit,MathMin(Bars-1,iCustom(ForSymbol,timeFrame,indicatorFileName, "returnBars",0,0)*timeFrame/Period())).MathMin(Bars-1,iCustom(ForSymbol,timeFrame,indicatorFileName,returnBars,0,0)*timeFrame/Period());

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

{

int y = iBarShift(ForSymbol,timeFrame,Time).buffer = iCustom(ForSymbol,TimeFrame,Time);

buffer = iCustom(ForSymbol,timeFrame,indicatorFileName, "calculateValue",MA_Period,MA_Method,CCI_Period,applied_price,",0,y);

}

}

このコードが何をやっているのか、僕の能力では正確にはわからないが、僕の推測では、このコードは、シンボルを外部から入力すると、それを自動的に検出してチャートに表示し、何も入力されなければ、ローカルのNullチャートを表示するらしい。また、内部プリセットシンボルにはどのように対応しているのでしょうか? 正確な方法は分かりませんが、アタッチメントのように(外部入力シンボルの機能/認識を 鈍らせる)行うのでしょうか? それとも内部プリセットシンボルに修正する方法?

ところで、166ページ#1660以前に作成したバージョンは、なぜライブで再描画されるのでしょうか? このような再描画が起こる基本的な理由は何でしょうか?アドバイスありがとうございました。

 
kenwa:
こんにちは、mladenです。

中にこんなのがありますね。

if (ForSymbol1=="") ForSymbol1 = Symbol()。

if (ForSymbol2=="") ForSymbol2 = Symbol()。

if (ForSymbolSyn3a=="") ForSymbolSyn3a = Symbol()。

if (ForSymbolSyn3b=="") ForSymbolSyn3b=Symbol()。

if (ForSymbolSyn3c=="") ForSymbolSyn3c=Symbol()。

いくつかのパーツ

void checkSymbol(int limit, string ForSymbol, double& buffer[])

{

limit = MathMax(limit,MathMin(Bars-1,iCustom(ForSymbol,timeFrame,indicatorFileName, "returnBars",0,0)*timeFrame/Period())).MathMin(Bars-1,iCustom(ForSymbol,timeFrame,indicatorFileName,returnBars,0,0)*timeFrame/Period());

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

{

int y = iBarShift(ForSymbol,timeFrame,Time).buffer = iCustom(ForSymbol,TimeFrame,Time);

buffer = iCustom(ForSymbol,timeFrame,indicatorFileName, "calculateValue",MA_Period,MA_Method,CCI_Period,applied_price,",0,y);

}

}

このコードが何をやっているのか、僕の能力では正確にはわからないが、僕の推測では、このコードは、シンボルを外部から入力すると、それを自動的に検出してチャートに表示し、何も入力されなければ、ローカルのNullチャートを表示するようである。また、内部プリセットシンボルにはどのように対応しているのでしょうか? 正確な方法は分かりませんが、アタッチメントのように(外部入力シンボルの機能/認識を鈍らせる)行うのでしょうか? それとも内部プリセットシンボルに修正する方法?

ところで、166ページ#1660以前に作成したバージョンは、なぜライブで再描画されるのでしょうか? このような再描画が発生する基本的な理由は何でしょうか?ご教示ありがとうございます。

この投稿のインジケータをチェックすることができます:https://www.mql5.com/en/forum/178416/page19 いくつかの追加制御がどのように行うことができるか見るために

 

1664については、以前に読んでダウンロードしましたが、私には高度で複雑なコードを適応させることができません。

 
kenwa:
1664の場合は、前に読んでダウンロードし、私はコードを適応することはできません、あまりにも高度な&私には複雑です。

何でもかんでも2行で書けばいいというものではありません。場合によっては、それは不可能です。

 
fareastol:
こんにちは、Mladen

ある市場プロファイルに基づくターゲットバンドのPOCとVAを計算したいという私のリクエストに関連して、私は可能な限り努力したのですが、残念ながらPOCの値しか得られませんでした。残念ながら、POCの値しか得られていません。VA High/Lowの値を得ることは、今の私の能力では無理です。

また、週の初めには、オリジナルのLevel Sensorのコードに誤りがあったようで、添付写真のようなひどい表示になってしまいました。MT4のデフォルト表示と下位タイムフレーム(<W1)のデータとのコンフリクトが原因ではないかと推測していますが、原因はよくわかりません。

どうか見ていただいて、次に進むためのアドバイスをお願いします。

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

ファレアストル

ファレアストル

画面上の現象は、先週金曜日のデータと最初の日曜日または月曜日のデータの間に時間差があり、線の時間にxshiftの時間が追加されたときにチャート上で起こります。

一つの可能な解決策は、このバージョンのものです:表示を反転させ、右から左へ表示する代わりに、左から右へ表示する(写真のように)ことです。今のところ、右から左へ表示する解決策は見つかっていません。

ファイル:
 

時には、少し考えるだけで良いのです。(前の記事を書き終えたとき、すぐにアイデアが浮かびました。 )

これが「右から左へ」の解決策です(私がテストした限りでは、現在問題なく動作しています)。

ファイル:
 

こんにちは。

私は、標準偏差の 線を "手で "計算しました。

今、私はメタトレーダーからオリジナルのDeviation Channelのようなチャンネルを描きたいのです。

しかし、私はそれが元のチャネルのように動作するように私の通常の偏差線に係数= 0.618を計算する方法がわからない...OBJPROP_DEVIATION,0.618)

 

こんにちは、ムラデン。

あなたは私に多くの有意義なことを思い出させ、私に多くの動機を与えてくれます。

ありがとうございます。

ファラストル