初心者の方からの質問 MQL4 MT4 MetaTrader 4 - ページ 122

 
Mickey Moose: 欲しいものができたので、レビューのために送ることができる。素晴らしいことです。しかし、ここに掲載することは禁じられています。

直に...漏れが好きなんだ...。わざとやったんです。デモで1日に15回も入金額が増えたら、その時は排水し直すよ。明日には同等の結果を出したい。

 
STARIJ:
テスターでレコチョク? それは初めて聞きました...。

これがその証拠です。始まりです。


と終わりを迎える。

と終わりを迎える。




"だから、もしそうなら終了して、次のティックで継続するEAを入れましょう"コード "の中にあるものです。

 
novichok2018:

これがその証拠です。始まりです。


と終わりを迎える。

と終わりを迎える。




"だから、もしそうなら終了して、次のティックで継続するEAを入れましょう" - これはコードにあります。

さて、If(tester) if(January 25 or 26) returnと書きます。

 
STARIJ:

さて、If(tester) if(January 25 or 26) returnと書きます。

その理由がわからない。え、失敗を繰り返さないために役立つの?要はポジションがクローズするわけで、ファジーなコマンド実行の原因がテスターの不具合であれば、何も問題ないわけです。他の原因を確認するには、おそらくオープン売り(BAY)でBAY(SEL)を開くと、状況の繰り返しを待つ必要があり、どのように彼らが閉じます参照してください。

 
novichok2018:

これはまさに私が必要としているもの、いやむしろBuy and Sellにのみ 必要なものだ。私のシンプルな戦略にとって、最も重要なことは、オープンポジションが互いのクローズ条件に干渉しないことです。配列がなくても大丈夫かも?どうやって作るのか、どうやって対処するのか、私には理解できないのです。スクリーンショットを見れば、私の状況がよくわかるかもしれませんね。

すべてがシンプルでクリアなコードのように見えますが、唯一混乱するケースです。

売り注文と買い注文の会計処理を分ける必要がある場合、2つの配列とそれぞれに2つのカウンタを宣言します。

int g_nBuyOrdersCnt, g_nSellOrdersCnt;
OrderInfo  arrstBuyOrderInfo[MAX_ORDERS_CNT], arrstSellOrderInfo[MAX_ORDERS_CNT];

その結果、データ収集のサイクルは以下のようになる。

g_nBuyOrderCnt = 0;
g_nSellOrdersCnt = 0;
for (int i = OrdersTotal() - 1; i >= 0; --i)
{
   if (!OrderSelect(i, SELECT_BY_POS))
      continue;

   if (OrderSymbol() != Symbol())   // Если нужны ордера только по текущему символу, к графику которого прикреплен советник
      continue;

   if (OrderMagicNumber != i_nMagicNumber)  // Если имеется входной параметр советника i_nMagicNumber, в котором указан ID ордеров советника
      continue;

   if (OrderType() == OP_BUY)
      SaveOrderInfo(g_arrstBuyOrderInfo, g_nBuyOrdersCnt);
   if (OrderType() == OP_SELL)
      SaveOrderInfo(g_arrstSellOrderInfo, g_nSellOrdersCnt);
}

void SaveOrderInfo(OrderInfo &arrstOrderInfo[], int &nOrdersCnt)
{
   if (nOrderCnt >= MAX_ORDERS_CNT)
      return;

   arrstOrderInfo[nOrdersCnt].nTicket = OrderTicket();
   arrstOrderInfo[nOrdersCnt].nType = OrderType();
   arrstOrderInfo[nOrdersCnt].fOpenPrice = OrderOpenPrice();
   arrstOrderInfo[nOrdersCnt].fSL = OrderStopLoss();
   arrstOrderInfo[nOrdersCnt].fTP = OrderTakeProfit();

   ++nOrdersCnt;
}

あとはExpert Advisorで以下のようにして、買い注文か売り注文かを判断するだけです。

if (g_nBuyOrdersCnt > 0)
{
   // Есть ордера Buy
}
 
novichok2018:

結局、アレイはなくてもいいのか?

配列は、各タイプのオーダーが一度に1つ以上存在しないことが予想される場合にのみ、廃止することができます。そして,配列はOrderInfo構造体型の変数(またはサイズ1の配列)に縮退される。

しかし、上の図にあるように、そうではありません。一度に各タイプの注文を複数持つことができます。
 
novichok2018:

これがその証拠です。開始します。

これは、注文が閉じられたとき、それが市場価格でないことを示しています。例えば、買いはAskで決済され、売りはBidで決済される。あなたのコードを見ると、クローズ操作の前に注文タイプの チェックがないため、このようなことが起こる可能性があります。

 

またまたこんばんは。質問の全趣旨

EA(動作中)をマーケットに投入しています。 MT4プラットフォームです。1つのファイルを表示することができます。Expert Advisorのファイルです。検証をパスするはずなのですが、インジケータのないEAなのでパスできません。別々のファイルになっています。Expert Advisorは、4つの指標で動作します。これらはExpert Advisorに何らかの形で接続されている必要があります。パスを指定する、つまりExpert Advisorに書き込む必要があります。どのようなフォームで、どのように行うか教えてください。

私が理解したところでは、「リソース」.Expert Advisorに正しく登録する方法がわかりません。もしかしたら、他の解決策を知っているかもしれません。

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

バリデーションに失敗したときの内容は以下の通りです。

2016.04.01 00:00:00 ファイル「MQL4indicatorsTheiken_Ashi_Smoothed1lime.ex4」を開けない [2] 2016.04.01 00:00:00 ファイル「MQL4indicatorsTheiken_Ashi_Smoothed1lime.ex4」を開けない [2]。01 00:00:00 cannot open file 'MQL4indicators\ in Color_wAppliedPrice.ex4' [2] 2016.04.01 00:00 cannot open file 'MQL4indicators\ in Color_wAppliedPrice.ex4' [2] 2016.04.01 00:00 cannot open file 'MQL4indicators 001_HA_Smooth.Ex4' [1] 2016.04.01 00:00:00 can open file 'MQL4indicators 01_House.Ex4" in Color_wAppliedPrice.ex4.ex4' [2] 2016.04.01 00:00:00 cannot open file 'MQL4indicatorsex4' [2] 2016.04.01 00:00:05 cannot open file 'MQL4indicators ◇Heiken_Ashi_Smoothed1lime.ex4' [2] 2016.04.01 00:00:05 cannot open file 'MQL4indicators ◇Heiken_Ashi_Smoothed1lime.ex4' [2] 2016.04.01 00:00:0504.01 00:00:05 cannot open file 'MQL4indicators⇄ in Color_wAppliedPrice.ex4' [2] 2016.04.01 00:00:05 cannot open file 'MQL4indicators⇄ in Color_wAppliedPrice.ex4] 2016.04.01 00:05 cannot open file 'MQL4indicators⇄ in Color_wAppliedPrice.ex4] [2] 2016.04.0101 00:00:05 cannot open file 'MQL4indicators Filter_Smooth.ex4' [2] 2016.04.01 00:00:05 cannot open file 'MQL4indicators Filter_Smooth.ex4' [2] 2016.04.01 00:00:05 cannot open file 'MQL4indicators Filter_TrendLord.ex4' [2] 2016.04.0101 00:00:05 cannot open file 'MQL4indicators ◇TrendLord.ex4' [2] 2016.04.01 00:00:10 cannot open file 'MQL4indicators ◇Heiken_Ashi_Smoothed1lime.ex4' [2] 2016.04.01 00:00:10 cannot open file 'MQL4indicators ◇Heiken_Ashi_Smoothed1lime.EX4".ex4' [2] 2016.04.01 00:00:10 cannot open file 'MQL4indicators⇄ in Color_wAppliedPrice.ex4' [2] 2016.04.01 00:00:10 cannot open file 'MQL4indicators⇄ in Color_wAppliedPrice.ex4' [2] 2016.04.01 00:00:10 cannot open file 'MQL4indicators⇄ in Color_wAppliedPrice.ex4' [2

 
Ihor Herasko:


包括的でとてもわかりやすい回答をありがとうございました。

 
Ihor Herasko:

注文の会計を買いと売りに分ける必要がある場合、2つの配列とそれぞれに2つのカウンタを宣言します。

その結果、データ収集のサイクルは以下のようになる。

あとはExpert Advisorで以下のようにして、買い注文か売り注文かを判断するだけです。

OrderInfo arrstBuyOrderInfo[MAX_ORDERS_CNT], arrstSellOrderInfo[MAX_ORDERS_CNT];OrderInfoには なぜ括弧もなく型も指定されていないのか、そしてこれらはすべてグローバルレベルで宣言されているのでしょうか?

また、注文の可否の判断は、ポジションクローズの 機能に挿入されるのですか?また、配列でポジションを閉じる機能は、何か違うように見えるべきでしょうか?私にとってはちょっと複雑なんです。ありがとうございます。


あなたの例を使おうとしたのですが、コンパイラに悪口を言われました...。

そして、チュートリアルの例にも悪態をつく。