[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. - ページ 381

 
moskitman:

ヘルプからなのですが、NULLをシンボルとして、EAが動作している楽器だけを「ウォッチ」することは可能でしょうか?

例えばこんな感じ。

NULLは効かないようです。

しかし、Symbol() は動作します =)。

 

こんにちは。次のような疑問があります。 MQL4.communityにあるMQL4本の 「Simple MQL Programs 」に、以下の 内容のtradingexpert.mq4 の例があります(添付ファイルを ご参照ください)。外部変数extern double StopLoss =200extern double TakeProfit =39 がブロック1-2で宣言されています。ブロック8-9のNew_Stop(StopLoss)New_Stop(TakeProfit) 関数の呼び出しは、SLと TPの パラメータを計算するために使用されます。ブロック11-12に機能の説明があります。

質問New_Stop 関数の正式なパラメータは int(int Parametr)ですが、関数呼び出しで渡されるパラメータ New_Stop(StopLoss)(New_Stop(TakeProfit)) はdouble 型です。MQL4 ブック、「言語の基礎」セクション、「関数」サブセクションでは、「関数プロパティ」にこう書かれています。"関数呼び出しで渡されるパラメータの数、、順序は、関数記述で渡される正式なパラメータの数、、順序と一致しなければなりません(例外はデフォルトパラメータを持つ関数呼び出しです-「関数呼び出しと関数記述、戻り値演算子」を参照してください)。後者によると、StopLossと TakeProfitの 変数を宣言するとき、doubleではなく int 型を指定すべきでした(コンパイラはエラーを出しません) この矛盾をどう説明するのでしょうか?

フォーラムを散らかさないためにも、回答よろしくお願いします。

ファイル:
 

こんにちは、ヒントをください・・・。インターネットを半分ほど検索してみたが、情報はさまざまである

Expert Advisorの本質は、異なる商品のポジションを開くことです。"現実には、動作して現在の価格が表示されるのですが、履歴を追うことができない......。この関数はゼロを返します。

例えば、2つの通貨EURUSDとEURCHFの現在の気配値を表示したいのですが、どうすればいいですか?

この関数で現在の気配値を呼び出しています(EURUSDチャートがアクティブな時の履歴を追っています)。

MarketInfo("EURUSD",MODE_BID)---> 現在の価格を取得する。

MarketInfo("EURCHF ",MODE_BID)---> ゼロを返す。

このフォーラムで、MarketInfoは履歴では動作しない、"iClose "を使えということを知りました。

しかし、quoteを呼び出すときに

iClose("EURUSD",PERIOD_M1,0)---> 現在の価格を取得します。

iClose("EURCHF",PERIOD_M1,0)---> ゼロを返します。

ストラテジーテスターで、異なる商品の現在の相場を取得するには、他にどのような方法がありますか?ありがとうございました。

 
faton:

MT4テスターは多通貨対応ではありません。つまり、単一通貨のEAしかテストできないのです。

 
moskitman:

MT4テスターは多通貨対応ではありません。つまり、単一通貨のEAしかテストできないのです。


しゃい
 
faton:

しゃい

より正確には、1つのツールでテストすれば、他のツールで解析することができます。
 
sergeev:


お世話になりました!))
 
DhP:

という感じでしょうか。

ご感想ありがとうございます!!とても参考になりました。
 
7777877:

こんにちは。次のような疑問があります。 MQL4.communityにあるMQL4本の 「Simple MQL Programs 」に、以下の 内容のtradingexpert.mq4 の例があります(添付ファイルを ご参照ください)。外部変数extern double StopLoss =200extern double TakeProfit =39 がブロック1-2で宣言されています。ブロック8-9のNew_Stop(StopLoss)New_Stop(TakeProfit) 関数の呼び出しは、SLと TPの パラメータを計算するために使用されます。ブロック11-12には、機能の説明が記載されています。

質問New_Stop 関数の正式なパラメータはint(int Parametr)ですが、関数呼び出しで渡されるパラメータは New_Stop(StopLoss)(New_Stop(TakeProfit))double 型です。MQL4 ブック、「言語基礎」の章「関数」、サブセクション「関数プロパティ」では、次のように記載されています。"関数呼び出しで渡されるパラメータの数、、順序は、関数記述で渡される正式なパラメータの数、、順序と一致しなければなりません(例外はデフォルトパラメータを持つ関数呼び出しです-「関数呼び出しと関数記述、戻り値演算子」を参照してください)。後者によると、StopLossと TakeProfitの 変数を宣言するとき、doubleではなく int 型を宣言すべきでした(コンパイラはエラーを生成していません) この矛盾をどのように説明するのでしょうか?

フォーラムを散らかさないように、回答よろしくお願いします。

外部パラメータ(extern double StopLoss =200; extern double TakeProfit =39;)は、原則として整数型(より正確には、著者の考えによれば、ポイント単位の値)であるべきです。関数を呼び出す際には、暗黙のうちに型変換が行われます。浮動小数点型は精度を落として 整数型に変換されます。この場合、それは問題ではありません:意図されたストップと利益のサイズはピップで設定されています - それは常に整数です。

IMHOは、サンプルコードの書き方が悪い。

定数の絶対値を使うのは、ニーモニックネームで、非常に悪い、間違ったスタイルです。

         if (OrderType()>1)                     // Попался отложенный
           {
 

順序列挙の最悪の実装:これ以上「遅れた」ものは考えられません。特別に遅くなるようです:余分な計算、不必要な関数呼び出し - 時間的に最も高価な操作で、しかもループの各反復で。しかも、ループ内では注文数が変化していないにもかかわらず、です。

   for(int i=1; i<=OrdersTotal(); i++)          // Цикл перебора ордер
     {
      if (OrderSelect(i-1,SELECT_BY_POS)==true) // Если есть следующий
        {                                       // Анализ ордеров:
 
すみませんが、以前はRumuseで仕事をしていて、今はMT4を勉強中です。私はここではまだ "Dummie "なんです。11 .09 .引用を開始できない。何が問題なのか、教えてください。喜んでお手伝いさせていただきます。
理由: