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

 

オーバートレードの防止

皆さん、こんにちは。

H4チャートでMACDクロスを使った全ティック方式でEAをテストしたところ、最初の数分間で約200のポジションをオープンしてしまいました PRICE_CLOSE...)を使い、MACDMainCurrentとMACDSymbolCurrentは0、MACDMainPreviousとMACDSymbolPreviousは1としてオフセットしています。

私のグローバル変数は

string hasOrderedGV = "has_ordered_GV";

文字列 barsGV = "bars_GV";

そして、私はこのコードをEAがロングまたはショートのポジションをチェックする前に挿入しています。

//--- H4時間足ですでに注文が入っているかどうかを判断します。

if ((GlobalVariableGet (barsGV) == 0)|| (GlobalVariableGet (barsGV) < Bars))

{

GlobalVariableSet(hasOrderedGV,false)。

GlobalVariableSet(barsGV,Bars);

//--- ロングポジション(BUY)の可能性を確認する。

if (GlobalVariableGet (hasOrderedGV, false))

{

if ...(ここで私は実際に他の指標の間でMACDのクロスをチェックします)。

その後、注文が正常に開いた場合。

if (Ticket > 0)

{

GlobalVariableSet(hasOrderedGV,true);

{

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES))

OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), GetTPPriceShort(SLPriceShort, RiskRewardRatio), OrderExpiration(), Green).を実行します。

などなど。

どなたか、私のやり方が正しいかどうか教えていただけませんか?私はそれを行うには、より効率的または正確な方法があったかもしれないかどうかは分かりませんでした?ありがとうございます。

 

...

EAがすでに開いている注文の数をカウントし、すでに注文を開いている場合は、新しい注文を開かないようにすればよいのではないでしょうか?

単なるアイデアです(そして、EAが開く注文の数を 制限する通常の最も簡単な方法です)。

crsnape@btinternet.com:
皆さん、こんにちは。

H4チャートでMACDクロスを使った全ティック方式でEAをテストしたところ、最初の数分間で約200のポジションをオープンしてしまいました。PRICE_CLOSE...)を使い、MACDMainCurrentとMACDSymbolCurrentは0、MACDMainPreviousとMACDSymbolPreviousは1としてオフセットしています。

私のグローバル変数は

string hasOrderedGV = "has_ordered_GV";

文字列 barsGV = "bars_GV";

そして、私はこのコードをEAがロングまたはショートのポジションをチェックする前に挿入しています。

//--- H4時間足ですでに注文が入っているかどうかを判断します。

if ((GlobalVariableGet (barsGV) == 0)|| (GlobalVariableGet (barsGV) < Bars))

{

GlobalVariableSet(hasOrderedGV,false)。

GlobalVariableSet(barsGV,Bars);

//--- ロングポジション(BUY)の可能性を確認する。

if (GlobalVariableGet (hasOrderedGV, false))

{

if ...(ここで私は実際に他の指標の間でMACDのクロスをチェックします)。

その後、注文が正常に開いた場合。

if (Ticket > 0)

{

GlobalVariableSet(hasOrderedGV,true);

{

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES))

OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), GetTPPriceShort(SLPriceShort, RiskRewardRatio), OrderExpiration(), Green).を実行。

などなど。

どなたか、私のやり方が正しいかどうか教えていただけませんか?もっと効率的で正確な方法があるのではと思ったのですが、どうでしょうか?ありがとうございます。
 

私のEAは通常、一度に複数のポジションを開いているので、次のような使い方はできません。

もし (CountedOrders > 5)

を使うことはできません。

というのは、ある時点でいくつのポジションが開いているか分からないからです。私はそれを時間に関連付ける必要があると思います。

 

このEAを5桁のmt4口座にアタッチしています。しかし、それはどんな取引も開くことはありません....

plsは私を助ける

ファイル:
dipu_2.mq4  5 kb
 

Pls I need to edit dis ea to move stoploss in 3 steps.

このEAにはすでにブレークイーブンの機能がありますが、このEAに私の

ストップロスを最初のブレークイーブンポイントからさらに+20pipsに移動させたいのです。

27pipsになったら+20pipsに、+50pipsになったら+40pipsに、そして可能ならそれ以上に

さらに可能であれば

ファイル:
 

Mladenさん、こんにちは。

ご指摘ありがとうございます。もうなんとか解決しました。

ところで、iStochasticdoの MODEとSHIFTの機能を ご存知でしょうか、あるいはもっと詳しい情報を提供しているところはないでしょうか。mql4のホームページのドキュメントを読んでいるのですが、いまいちピンと来ません。説明が簡潔すぎるのです。

例えば

iStochastic(NULL, 0, 3, 3, 3, MODE_SMMA, 0, MODE_SIGNAL, Current + 0);

iStochastic(NULL, 0, 5, 3, 3, MODE_SMMA, 0, MODE_MAIN, 0);

iStochastic(NULL, 0, 5, 3, 3, MODE_SMMA, 0, MODE_SIGNAL,Current + 1);

current + 0 などはどうするのでしょうか?

ありがとうございます。

テランス

mladen:
Terrance それは関数です。この関数を EA の末尾に配置し、現在のバーで注文がすでに開かれているかどうかをチェックするために、適切と思われる場所に呼び出しを配置します。
 

こんにちは、どなたか私がどこで間違っているのか教えていただけませんか?エラーコード''赤でハイライトされた行の間違ったパラメータのカウントを取得します - しかし、すべてのパラメータが追加されます...

if ((GlobalVariableGet (barsGV) == 0)|| (GlobalVariableGet (barsGV) < Bars))

{

GlobalVariableSet(hasOrderedGV,false);

GlobalVariableSet(barsGV,Bars);

//--- ロングポジション(BUY)の可能性を確認する。

if (GlobalVariableGet (hasOrderedGV, false)) Thanks

 

...

テランス

MODE_MAINは、ストキャスティックラインの 値を読み込むという意味です。MODE_SIGNALは、ストキャスティクスのシグナル線の値を読み込むという意味です。

SHIFTについては、どのインディケータでも(カスタムでも)同じです。例えば、SHIFT=0は現在のバーの値、SHIFT=1は最初に閉じたバーの値、といった具合に。

tkuan77:
Mladenさん、こんにちは。

ご指摘ありがとうございます。もう解決しました。

ところで、iStochasticdoの MODEとSHIFTの機能をご存知でしょうか、あるいはもっと詳しい情報を提供しているところはないでしょうか。mql4のホームページのドキュメントを読んでいるのですが、いまいちピンと来ません。説明が簡潔すぎるのです。

例えば

iStochastic(NULL, 0, 3, 3, 3, MODE_SMMA, 0, MODE_SIGNAL, Current + 0);

iStochastic(NULL, 0, 5, 3, 3, MODE_SMMA, 0, MODE_MAIN, 0);

iStochastic(NULL, 0, 5, 3, 3, MODE_SMMA, 0, MODE_SIGNAL,Current + 1);

current + 0 などはどうするのでしょうか?

よろしくお願いします。

テランス
 

...

エラーは、GlobalVariableGet() が1つのパラメータ(変数名)しか持っていないことです。2番目のパラメータは必要ありません(関数の 呼び出しで持っている"false")

crsnape@btinternet.com:
こんにちは、私はここで間違っている場所お願いし、誰かが私を伝えることができるでしょうか?私はエラーコード''間違ったパラメータは、赤で強調表示された行にカウントされます - しかし、すべてのパラメータが追加されます...

if ((GlobalVariableGet (barsGV) == 0)|| (GlobalVariableGet (barsGV) < Bars))

{

GlobalVariableSet(hasOrderedGV,false);

GlobalVariableSet(barsGV,Bars);

//--- ロングポジション(BUY)の可能性を確認する

if (GlobalVariableGet (hasOrderedGV, false)) Thanks
 

このコードに変更したら、少なくともエラーはなくなりました。

if (GlobalVariableGet (hasOrderedGV) == false)