MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 834

 
Vladimir Pastushak:


これは間違いであり、他の例も同様です。

1.2356にストップを置き、新しいティックで再び1.2356にストップを置くと、エラー1が表示されます。

これは第1ブロックのものです。変更したが、エラーは残った。この停止条件は、EAが不必要なパスをしないようにするために実施したものです。そして新しいティックでは、EAは同じストップを再び設定しません。この条件の後、私は他の条件、例えばストップが設定したい値と等しいかどうかをチェックするからです。

 
Alexandr Sokolov:

これは第1ブロックのものです。変更したのですが、エラーが出たままです。この条件は、EAが無駄なパスをしないように、ストップで作りました。そして、新しいティックでは、EAは同じストップを再び置くことはありません - この条件がチェックされた後、他のもの、例えば、ストップが設定される値と等しい場合ので

OrderStopLoss()

オールオーダー......。() は正規化する必要があります

 
Vladimir Pastushak:

オールオーダー......。()は正規化する必要があります。

私もそうしました。でも、それも効果がありませんでした。同時に、以前のようにテスターでこのエラーが発生しないのに、MQLはなぜかこのエラーを見つけるのです

 
他の端末から読み込めるように、テキストファイルはどこに保存すればよいのでしょうか?
 
yiduwi:
テキストファイルを他の端末から読み込めるように保存するには、どのようなパスを使用すればよいですか?

enum_terminal_info_string

識別子

商品説明

物件タイプ

端末言語

端末言語

端末会社

会社名

TERMINAL_NAME

端子名

TERMINAL_PATH

端末が動作しているフォルダ

端末データパス

端末のデータが保存されているフォルダ

端末のコモンドデータパス

コンピュータにインストールされているすべてのクライアント端末の共有フォルダ


Документация по MQL5: Проверка состояния / TerminalInfoString
Документация по MQL5: Проверка состояния / TerminalInfoString
  • www.mql5.com
Проверка состояния / TerminalInfoString - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
 
Artyom Trishkin:

ありがとう ございます。

 

は、記事から1対1の例を行うhttps://www.mql5.com/ru/articles/18

記事中のコードはmt4で100%動作します、今年の1月に確認しました。

または、64ビットDLL用にコンパイルされたプロジェクトがあり、MT4ターミナルが32ビットである場合、32ビット.DLL用にプロジェクトを構成してコンパイルする必要があります。

Как за 10 минут написать DLL библиотеку для MQL5 и обмениваться данными?
Как за 10 минут написать DLL библиотеку для MQL5 и обмениваться данными?
  • www.mql5.com
Так уж сложилось, что сейчас мало кто из разработчиков помнит, как написать простую DLL библиотеку и в чем особенности связывания разнородных систем. Я постараюсь за 10 минут на примерах показать весь процесс создания простых DLL библиотек и раскрою некоторые технические детали нашей реализации связывания. Демонстрация будет на примере Visual...
 

フォーラムユーザーの皆様、こんにちは。

どのような場合にコードが正しく書かれていて、どのような場合に正しく書かれていないのか、その理由を教えてください(以下参照)。

for (z=OrdersTotal()-1; z>=0; z --)
    {
      OrderSelect (z, SELECT_BY_POS);
      if (OrderSymbol()!=Symbol()) continue;
      if (OrderMagicNumber()!=MAGIC) continue;
      if(OrderType()==OP_BUY)  CloseBUY();
    }
for(int i=OrdersTotal()-1;i>=0;i--)
            {
            if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
            {
             if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic)
             {
             if(OrderType()==OP_BUY)  CloseBUY();
             }
            }
            }

可能であれば、より詳細に。ありがとうございます。

 
novichok2018:

フォーラムユーザーの皆様、こんにちは。

どのような場合にコードが正しく書かれていて、どのような場合に正しく書かれていないのか、その理由を教えてください(以下参照)。

可能であれば、より詳細に。ありがとうございます。

最初のケースでは、コンパイラが「OrderSelectの結果を 確認する必要があります」とハイライトしてくれます;-)。

最初の1つのために変更する場合 if (!OrderSelect(...)) continue; オプションは同じです。

最初のものは視覚的に直線的なコードで、2番目のものは階段のように見えます。私は最初の方法を好みます。読みやすく、一般に、深い論理的なタブ{{{ }}の出現は、何かを変更する時期であることを示唆します:-)。