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

 

こんにちは。

私のMT4はMQL5に移行したようで、簡単なコーディングの質問があります。

ある削除コードブロックが機能しなくなりました。

その下にエラーメッセージが表示されます。

'(' Object Pointer expected.

//+------------------------------------------------------------------------------+//| 閉じて削除|

//+----------------------------------------------------------------------------+

if(sell)if(oppositeclose)close(OP_BUY)です。

if(buy)if(oppositeclose)close(OP_SELL)です。

if(hidetp || hidesl){hideclose(OP_BUY);hideclose(OP_SELL);}; if(usetimeout && on) {hideclose(OP_BUY);hideclose(OP_SELL);}.

if(usetimeout && onetime){closetime(OP_BUY);closetime(OP_SELL);}。

if(onecancelother){if(totalsell>0){delete(OP_BUYSTOP);delete(OP_BUYLIMIT);}if(totalbuy>0){delete(OP_SELLSTOP);delete(OP_SELLLIMIT);}}.

その下に、エラーメッセージが出ます。'delete' - 名前が期待され

'}'- 式はグローバルスコープで許可されていません

void delete(int type){ -1

if(OrdersTotal()>0){。

for(i=受注合計();i>=0;i--){。

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if(type!=6){。

if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic && OrderType()==type){ オーダーチケットを削除します。

OrderDelete(OrderTicket());

}

if(type==6){の場合

if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic && OrderType()==OP_BUYSTOP || OrderType()==OP_SELLSTOP

||OrderType()==OP_BUYLIMIT ||OrderType()==OP_SELLLIMIT){ オーダーチケットを削除します。

OrderDelete(OrderTicket())。

}

}

}

}

}

どなたか助けていただけませんか?

よろしくお願いします!////etc

 

こんにちは、トレーダー/コーダー仲間!

私は誰かがここで私を助けることができることを願っています。

検索し、周りのいくつかのEAを試して、私はまだ私が探しているものを見つけることができませんでした。

おそらく、私は見つけるのが難しいものを探しているか、私が一生懸命に努力していないのでしょう :-)

私はSRシステムでラインを引き、一時的なチャンネルを作ることで取引しています。価格がラインに到達したときにポジションを実行できるようなものはないでしょうか?価格がラインに到達するたびにポジションを建てることができるものでなければなりません。赤い線は売り、青い線は買い、黄色はSL、緑の線はTPです。つまり、1回だけの取引やOCOはありません。

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

ファイル:
sr.png  34 kb
 
daytrade:
こんにちは、トレーダー/コーダー仲間です!

どなたか助けて頂ければと思います。

検索して、いくつかのEAを試して、私はまだ私が探しているものを見つけることはありません。

おそらく、私は見つけにくいものを探しているのか、それとも私が一生懸命に努力していないのか :-)

私はSRシステムでラインを引き、一時的なチャンネルを作ることで取引しています。価格がラインに到達したときにポジションを実行できるようなものはないでしょうか?価格がラインに到達するたびにポジションを建てることができるものである必要があります。赤い線は売り、青い線は買い、黄色はSL、緑の線はTPです。だから1回だけの取引やOCOはダメ。

ありがとうございます!

このスレッドにあるEAをチェックしましたか :https://www.mql5.com/en/forum/176382?

 

ストップロスの変更について

皆さん、こんにちは。

私のストップロスの変更注文がなぜ正しく機能しないのか、誰か知っていますか?

DonchianLowM5がOrderOpenPriceの上に移動すると、ストップロスはDonchianLowM5とOrderOpenPriceの間で非常に速く点滅します。

これはコードです(うまく貼り付ける方法がわからなくてすみません)。

//--- ストップロスの移動

if (OrdersTotal() > 0)

{

for (int i = 0; i < OrdersTotal(); i++)

{

if (オーダーセレクト(i, SELECT_BY_POS, MODE_TRADES))

{

if (OrderType() == OP_BUY)

{

if (OrderStopLoss() < OrderOpenPrice())

{

if (DonchianLowM5 > OrderStopLoss())

{

OrderModify(OrderTicket(), OrderOpenPrice(), DonchianLowM5, OrderTakeProfit(), OrderExpiration(), Green);

}

if (OrderStopLoss() > OrderOpenPrice())

{

if (DonchianLowH4 <= OrderOpenPrice())

{

OrderModify(OrderTicket(), OrderOpenPrice(), OrderTakeProfit(), OrderExpiration(), Green);

}

}

if (OrderStopLoss() >= OrderOpenPrice())

{

if (DonchianLowH4 > OrderStopLoss())

{

OrderModify(OrderTicket(), OrderOpenPrice(), DonchianLowH4, OrderTakeProfit(), OrderExpiration(), Green);

}

}

}

いくつかの何戸惑う。

このコードの目的は、以下の通りです。

1.ストップロスがOrderOpenPriceまでのM5チャートのDonchian Channelの下限を追跡するように修正する。ストップロスはOrderOpenPriceを越えてM5チャートのDonchian Channelに追従することはありません。ブレイクイーブンに動きます。

2.2. 大きなローソク足がOrderOpenPriceを超えて閉じることもあるので、コードの2番目の部分はブレークイーブンまでしか戻さないようにすることです。

3.3. 損切りは、H4チャートのドンチャンネルがOrderOpenPriceを超えたら、H4チャートのドンチャン安値に追随します。

ドンチアンチャネルは以下のようにコード化されています。

DonchianLowM5 = iLow(NULL, TimingChart, iLowest(NULL, TimingChart, MODE_LOW, TimingDNCPeriod, TimingChartShift + 1)));

DonchianHighM5 = iHigh(NULL, TimingChart, iHighest(NULL, TimingChart, MODE_HIGH, TimingDNCPeriod, TimingChartShift + 1)) としました。

ジャーナルをチェックしたところ、ストップロスはOrderOpenPriceに正確に修正されます(M5チャートのDonchian Lowを追跡する原因となる数ピプスでも下回ることはありません)。

どなたか、この現象についてご存知の方はいらっしゃいますか?

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

私の修正ストップロス注文がなぜ正しく機能しないのか、誰か知っていますか?

DonchianLowM5がOrderOpenPriceの上に移動すると、ストップロスはDonchianLowM5とOrderOpenPriceの間で非常に速く点滅します。

これはコードです(うまく貼り付ける方法がわからなくてすみません)。

//--- ストップロスの移動

if (OrdersTotal() > 0)

{

for (int i = 0; i < OrdersTotal(); i++)

{

if (オーダーセレクト(i, SELECT_BY_POS, MODE_TRADES))

{

if (OrderType() == OP_BUY)

{

if (OrderStopLoss() < OrderOpenPrice())

{

if (DonchianLowM5 > OrderStopLoss())

{

OrderModify(OrderTicket(), OrderOpenPrice(), DonchianLowM5, OrderTakeProfit(), OrderExpiration(), Green);

}

if (OrderStopLoss() > OrderOpenPrice())

{

if (DonchianLowH4 <= OrderOpenPrice())

{

OrderModify(OrderTicket(), OrderOpenPrice(), OrderTakeProfit(), OrderExpiration(), Green);

}

}

if (OrderStopLoss() >= OrderOpenPrice())

{

if (DonchianLowH4 > OrderStopLoss())

{

OrderModify(OrderTicket(), OrderOpenPrice(), DonchianLowH4, OrderTakeProfit(), OrderExpiration(), Green);

}

}

}

いくつかの何戸惑う。

このコードの目的は、以下の通りです。

1.ストップロスがOrderOpenPriceまでのM5チャートのDonchian Channelの下限を追跡するように修正する。ストップロスはOrderOpenPriceを越えてM5チャートのDonchian Channelに追従することはありません。ブレイクイーブンに動きます。

2.2. 大きなローソク足がOrderOpenPriceを超えて閉じることもあるので、コードの2番目の部分はブレークイーブンまでしか戻さないようにすることです。

3.3. 損切りは、H4チャートのドンチャンネルがOrderOpenPriceを超えたら、H4チャートのドンチャン安値に追随します。

ドンチアンチャネルは以下のようにコード化されています。

DonchianLowM5 = iLow(NULL, TimingChart, iLowest(NULL, TimingChart, MODE_LOW, TimingDNCPeriod, TimingChartShift + 1)));

DonchianHighM5 = iHigh(NULL, TimingChart, iHighest(NULL, TimingChart, MODE_HIGH, TimingDNCPeriod, TimingChartShift + 1)) としました。

ジャーナルを確認したところ、ストップロスはOrderOpenPriceに正確に修正されています(M5チャートのDonchianLowに追従することになる端数pipでも下回らない)。

どなたか、この現象についてご存知の方はいらっしゃいますか?

DonchianLowM5とDonchianLowH4を使用しています(これらは異なる値であると仮定しています)。そのため、問題が発生する可能性があります。

 

Mladenさん、こんにちは。

ご返信ありがとうございます。

DonchianLowM5とDonchianLowH4は異なる値ですが、それぞれ目的があります。 DonchianLowM5は、トレードの初期段階でブレイクイーブンになるようにSLを調整するために使用します。DonchianLowH4は、トレーリングストップ機構としてSLを調整します。これは、DonchianLowH4がOrderOpenPriceを超えた時点で初めて有効になるはずです。

この問題をもう少し調べてみたところ、問題が見つかったかもしれません。OrderModify関数がSLをOrderOpenPriceと正確に再位置決めしているかどうかを判断したかったのです。 しかし、そうではありません。私のジャーナルではOrderOpenPriceは1.12224、5桁の精度と記載されていますが、下のPrint関数では OrderOpenPriceは4桁しかありません。そこで、SLはこの4桁の数字を使い、5桁の数字を使いません。

どうしたらordermodifyがSLを5桁のorderopenpriceに正確に合わせることができるのでしょうか?

これは私のコードです。

{

OrderModify(OrderTicket(), OrderOpenPrice(), OrderTakeProfit(), OrderExpiration(), Green).SLをOrderOpenPriceに変更するにはどうしたらいいですか?

Print("SL modified to Order Open Price ", OrderOpenPrice());

}

これを試してみましたが、うまくいきません。

OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderOpenPrice(), 5), OrderTakeProfit(), OrderExpiration(), Green).Print("SL modified to Order Open Price ", OrderExpiration(), Green);

Print("SL modified to Order Open Price ", OrderOpenPrice());

私のブローカーは、ジャーナルが1.12224で注文を開いた価格を確認するため、5桁の数字を持っています。

私の説明が意味をなすことを願っています。何かアイデアはありますか?

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

ご返信ありがとうございます。

DonchianLowM5とDonchianLowH4は異なる値ですが、それぞれ目的があります。 DonchianLowM5は、トレードの初期段階でブレイクイーブンになるようにSLを調整するために使用します。DonchianLowH4は、トレーリングストップ機構としてSLを調整します。これは、DonchianLowH4がOrderOpenPriceを超えた時点で初めて有効になるはずです。

この問題をもう少し調べてみたところ、問題が見つかったかもしれません。OrderModify関数がSLをOrderOpenPriceと正確に再位置決めしているかどうかを判断したかったのです。 しかし、そうではありません。私のジャーナルではOrderOpenPriceは1.12224、5桁の精度とされていますが、下のPrint関数ではOrderOpenPriceは4桁とされています。そこで、SLはこの4桁の数字を使い、5桁の数字を使いません。

どうしたらordermodifyがSLを5桁のorderopenpriceに正確に合わせることができるのでしょうか?

これは私のコードです。

{

OrderModify(OrderTicket(), OrderOpenPrice(), OrderTakeProfit(), OrderExpiration(), Green).SLをOrderOpenPriceに変更するにはどうしたらいいですか?

Print("SL modified to Order Open Price ", OrderOpenPrice());

}

これを試してみましたが、うまくいきません。

OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(OrderOpenPrice(), 5), OrderTakeProfit(), OrderExpiration(), Green).Print("SL modified to Order Open Price ", OrderExpiration(), Green);

Print("SL modified to Order Open Price ", OrderOpenPrice());

私のブローカーは、ジャーナルが1.12224で注文を開いた価格を確認するため、5桁になります。

私の説明が意味をなしていればいいのですが。何かアイデアはありますか?

4桁の精度で価格が印刷されることは問題ではありません:単純にこの Print(DoubleToStr(OrderOpenPrice(),Digits)) を使用すれば、正しい印刷が得られます。何か他の問題があり、2つの全く異なる価格と比較している場合、そのような問題が発生する可能性があると思いました。

 

そうですか。

どういうことでしょう?括弧の構造を間違えてしまったのでしょうか?

コードは状況に応じてDonchianLowM5とDonchianLowH4のどちらかを選択することになっています。

もしかしたら、私のカッコのビルドアップ、ビルドダウンが各コード要素で間違っているのかもしれません。

 

コードを簡略化してみてください。添付のようなものです。

追記:これがあなたの考えていたロジックであるかどうか確認して ください。

ファイル:
 

こんにちは、ここで私は2つの指標、RSIと強度指数上の他のに基づいていますが、問題は私にカーブを探してrsiを尋ね、それはあなたが解決策を持っている場合、明らかに私はあなたの助けを借りて、必要に応じてファイルを送ることができることを望んでいないことを示しています... 英語 "google traductor "のために申し訳ありません。