初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 635

 

助けてください。どうしたんですか?

 double buy_OrderProfit = 0;
 double sell_OrderProfit = 0;
 double buy_Order_price  = 0;
 double sell_Order_price = 0;
 
  double Drop_proc1 =AccountEquity();
  double Drop_proc2 =AccountBalance();
  double Drop_proc3 =(Drop_proc1*100)/Drop_proc2;
  
  if (Drop_procK <= Drop_proc3)
  {
  for(int i=OrdersTotal()-1; i>=0; i--)
       if ((OrderSelect(i,SELECT_BY_POS,MODE_TRADES))&& (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic))
            if((OrderType()==OP_SELL) sell_OrderProfit + OrderProfit())
                 if((OrderType()==OP_BUY)  buy_OrderProfit + OrderProfit()) 

  for (int i=OrdersTotal()-1; i>=0; i--)
        if ((OrderSelect(i,SELECT_BY_POS,MODE_TRADES))&& (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic))
             if ((OrderType()==OP_BUY ) && ( buy_OrderProfit < sell_OrderProfit ) )     
                  OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),slippage);
                    if ((OrderType()==OP_SELL) && sell_OrderProfit < buy_OrderProfit )
                         OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),slippage);  
        } 
   else 1=1;

エラー 'if' - 式はグローバルスコープで許可されていません v.4.1.5(2).mq4 793 3



 
new-rena:

皆さん!

MQL4 Expert Advisorの初期化時に、マーケットが閉じているかどうかを知るにはどうすればよいですか?(どんな命令?)

そのようなコマンドはありません。ロングレンジの保留注文を出してみて、そうなったら削除すればいいのです。
 
Kisolen:

助けてください。どうしたんですか?

if条件は、関数の中にのみ入れることができます。
 
Sergei Vladimirov:
if条件は、関数の中にしか入れられない。
ご回答ありがとうございました。このコードは、void OnTick()関数の中、波括弧の中にあります。ずっと上の方です、コピーでなくて申し訳ないです。そういう理解でいいのでしょうか?これって関数ですよね?そして、まだエラーがあります。
 
Kisolen:
ご回答ありがとうございました。このコードは、void OnTick()関数の中、波括弧の中にあります。一番上に遥かにありますね、コピーしてなくてすみません。そういう理解でいいのでしょうか?これって関数ですよね?そして、まだエラーがあります。
コンパイラは、ifがグローバルスコープにあると書いている。多分、括弧のバランスが悪いだけだと思うので、チェックしてみてください(ちなみに、このスタイルのコードでは、驚くことではありません)。
 
Vitaly Muzichenko:

これを試してみてください、一度は効果があったようですが、使っていません。

現在時刻はTimeCurrent()で決定され、最後に引用した時刻を 返すので、この関数は常に真を返すからです。コンピュータとサーバーの時差を考慮してTimeLocal()で同じことができますが、これは正しい結果を保証するものではありません。コンピュータの時計が間違っているかもしれないし、サーバーのセッション時間を満たさないかもしれないし、休日(新年)には何が返ってくるか誰にもわかりません...。また、MarketIsClosed()のようなシンプルで信頼性の高い関数はµlには存在しない。
 
Sergei Vladimirov:
そのようなコマンドはありません。ロングレンジの保留注文を出してみて、そうなったら削除するという方法もあります。

はい、良い選択肢です。チームは "Market is closed "というエラーを返します。

解決しました。

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

 

皆さん、こんにちは。

どのように掘ればいいのか、また、例としてコードの断片があれば教えてください :)

以下が必要です。

Expert Advisorとインジケータをチャートに表示させています。Expert Advisorでインジケータのパラメータを変更するには?

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

 
GrRusel:

皆さん、こんにちは。

どのように掘ればいいのか、また、例としてコードの断片があれば教えてください :)

以下が必要です。

Expert Advisorとインジケータをチャートに表示させています。Expert Advisorでインジケータのパラメータを変更するには?

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

視覚的にインジケータの設定を 変更することはありませんが、インジケータからiCustomを通じてExpert Advisorにデータを読み込む際に、このインジケータからExpert Advisorが受け取るパラメータを設定することができます。あるいは、インジケータを教えれば、グローバル変数を使用することも可能です。
 
Vladimir Zubov:
視覚的にインジケータの設定を 変更することはありませんが、インジケータからiCustomを通じてExpert Advisorにデータを読み込む際に、このインジケータからExpert Advisorが受け取るパラメータを設定することができます。あるいは、インジケータを教えれば、グローバル変数を使用することも可能です。
全てicustomで行っているのですが、インジケーターの設定を変更した際に、インジケーターの可視化設定も変更したい、例えば、OBOSゾーンを変更した場合など。OBOSゾーンを変更することにしました。 チャートから削除して、新しい設定で追加すればいいのかもしれませんが、Expert Advisorから行わなければなりません。このような問題に遭遇した人はいないのか、毎回すべて手作業で変えている-そんなはずはないのだが...。
理由: