コーディングの方法は? - ページ 7

 

私の理解では、一番・簡単な方法は、皆さんがおっしゃるように、前のバーを見ることになりそうです。 遅れるかもしれませんし、そうでないかもしれません。 こういうことです。

Start()関数は、1ティックごとに 処理します。 MT4は、設計上、1ティック後の時間しか処理しません。 つまり、新しいバーは、その新しいバーの最初のティックまでチャートに表示されないということです。 したがって、バーの終わりに近づくにつれ、アラートが1ティックごとに鳴る場合(迷惑な方法)、バーの最後のティックでアラートが表示されることになります。 前のバーを見てアラートを出す場合(迷惑にならない方法)、新しいバーの最初のティックでアラートが表示されます。

したがって、市場が活発な時間帯には、新しいバーの最初のティックは、前のバーが閉じるべき直後に行われるかもしれません(時間に基づいて)。 市場の動きが鈍い時間帯には、新しいティックが入るまでに20~30秒かかることがあり、MT 4はその最初のティックを取得するまで新しいバーを表示しません。

ご理解いただけたでしょうか。

ケリス

 

"The Volatility Stop Entry Technique "のコーディングにヘルプが必要です。

ボラティリティストップは、価格バーの平均レンジを使用してボラティリティを計算します。平均レンジに定数を乗じて計算します。この値は、ショートの場合は最安値の終値に加算され、ロングの場合は最高値の終値から減算されます。

レンジ = (レンジ x (N - 1) + 高値 - 安値 / N)

ショート = 最安値の終値 + レンジ x C

ロング = 最高値の終値 - レンジ x C

ボラティリティストップは、トレンドの強い相場で使用するのが最適です。これは優れたエントリーテクニックであり、ほとんどの場合、有効なトレンドラインの ブレークアウトやチャネルのブレークアウトよりも優れています。逆指値は、ボラティリティに関連するリスクを定量化する役割も果たします。定数は2.5から4.0の間に保たれる必要があります。

私はこのインディケータを個人的に使用した経験はありませんが、「パターン認識によるフィボナッチ比率」という本で読んだことがあります。

どなたかこのインジケータをコーディングしていただけると幸いです。

ファイル:
v.s..bmp  962 kb
 

こんにちは。

https://www.mql5.com/en/forum/173255 を見てください。

およびhttps://www.mql5.com/en/forum/173255。

イゴール

 

イゴラド、ありがとうございます。Volty Channel Stopはまさに私が探していたものでした。

 

このコードで助けてください...

このフォーラムの他の場所で見つけたLSMA_in_colorインジケータのメカニズムについて学ぼうとしているのです。 次のコードは、wt[]の値に基づいてインジケータの線分の色を設定します。

//========== COLOR CODING ===========================================

ExtMapBuffer3[shift] = wt[shift]; //yellow

ExtMapBuffer2[shift] = wt[shift]; //blue

ExtMapBuffer1[shift] = wt[shift]; //red

if (wt[shift+1] > wt[shift])

{

ExtMapBuffer2[shift] = EMPTY_VALUE; //turn blue off

Print ("red ",wt[shift+1]," ",wt[shift]);

}

else if (wt[shift+1] < wt[shift])

{

ExtMapBuffer1[shift] = EMPTY_VALUE; //turn red off

Print ("blue ",wt[shift+1]," ",wt[shift]);

}

else

{

ExtMapBuffer1[shift]=EMPTY_VALUE; //turn red off;

ExtMapBuffer2[shift]=EMPTY_VALUE; //turn blue off;

Print ("yellow ",wt[shift+1]," ",wt[shift]);

}

Print()関数を 追加して、赤、黄、青の3つの色の条件で実際の値がどうなっているのかを確認できるようにしました。 黄色の条件はwt[shift] == wt[shift+1]のときだけ発生するようですが、これを実行するとなぜかログには黄色の条件に入ることがないことが書かれています。 書かれているログは全て赤か青のどちらかです。 チャート上では、赤から青、青から赤に変わるたびに、その間に黄色になるなど、明らかに黄色の状態が発生しているのですが...。なぜ、黄色の状態をログに出力しないのでしょうか?

また、ログを見ると、wt[shift]がwt[shift+1]と同じなのに、赤の条件としてプリントされている場合があります。 赤の条件はwt[shift+1] > wt[shift]である必要があるのに、どうしてこのようなことが起こるのでしょうか?

ご教授お願いします。

 

イエシリー、少しでもお役に立てれば......。

 

私は本当にコードの素人ですが、黄色は常にオンで、赤か青のどちらかがその上に置かれるか、偶数の場合は黄色の上に何も描かれない場合を除き、ただ置き換わるように見えます。

 

最後の[クローズ]トレードが勝つか負けるかをチェック するコード...

mql4には、決済後の最後のトレードが利益となったか損失となったかをチェックするメソッドはないのでしょうか?

私は、OrderSelect() と OrderProfit() を、配列を使った HistoryTotal() で試していますが、OrderProfit は 'open order' を参照しているようなので、私が望む結果を与えてくれません。

平均して、私のシステムは5連勝、1連敗です。私がやりたいことは、負けた取引の後、その次の取引が勝てる可能性があるので、使用ロット数を増やしたいのです。

したがって、私はロット数を変更する前に、最後のクローズド-トレードが何をもたらしたかを確認する必要があります。

どんな助けでも感謝されるでしょう...

 
fxdk:
mql4には、最後の取引が利益と損失のどちらになったかを、決済後に確認する方法はありますか?

OrderSelect() と OrderProfit() を配列を使った HistoryTotal() で試していますが、 OrderProfit は 'open order' を参照しているようで、望むような結果を得られません。

平均して、私のシステムは5連勝、1連敗です。私がやりたいことは、負けた取引の後、その次の取引が勝てる可能性があるので、使用ロット数を増やしたいのです。

したがって、ロット数を変更する前に、最後のクローズド・トレードがどのような結果になったかを確認する必要があります。

何かご教示いただければ幸いです。

fxdkを使用します。

を使用して、最後に決済された注文の利益をチェック するには、次のコードを使用します。

int total = HistoryTotal();

OrderSelect(total-1,SELECT_BY_POS,MODE_HISTORY);

Alert(OrderProfit()); //これは、最後のクローズドオーダーの利益または損失です。

 
codersguru:
fxdk。

最後に決済された注文の利益を確認するには、次のコードを使用します。

int total = HistoryTotal();

OrderSelect(total-1,SELECT_BY_POS,MODE_HISTORY);

Alert(OrderProfit()); /This is the last closed order profit or loss

これは必ずしも正しいとは言えないと思います。スラワさんと議論したところ、HISTORYはTRADEと同じく、必ずしも日付でソートされるとは限らず、ターミナルタブで使用しているソートコロンに依存するようです。ですから、すべての(!)HISTORYをスキャンして終了日を比較し、最後のものを覚えておけば、次回は配列全体をスキャンする必要がなくなりますので、より安全です。