これはまさに私が必要としているもの、いやむしろBuy and Sellにのみ 必要なものだ。私のシンプルな戦略にとって、最も重要なことは、オープンポジションが互いのクローズ条件に干渉しないことです。配列がなくても大丈夫かも?どうやって作るのか、どうやって対処するのか、私には理解できないのです。スクリーンショットを見れば、私の状況がよくわかるかもしれませんね。
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;
}
直に...漏れが好きなんだ...。わざとやったんです。デモで1日に15回も入金額が増えたら、その時は排水し直すよ。明日には同等の結果を出したい。
テスターでレコチョク? それは初めて聞きました...。
これがその証拠です。始まりです。
と終わりを迎える。
と終わりを迎える。
"だから、もしそうなら終了して、次のティックで継続するEAを入れましょう。"コード "の中にあるものです。
これがその証拠です。始まりです。
と終わりを迎える。
と終わりを迎える。
"だから、もしそうなら終了して、次のティックで継続するEAを入れましょう。" - これはコードにあります。
さて、If(tester) if(January 25 or 26) returnと書きます。
さて、If(tester) if(January 25 or 26) returnと書きます。
その理由がわからない。え、失敗を繰り返さないために役立つの?要はポジションがクローズするわけで、ファジーなコマンド実行の原因がテスターの不具合であれば、何も問題ないわけです。他の原因を確認するには、おそらくオープン売り(BAY)でBAY(SEL)を開くと、状況の繰り返しを待つ必要があり、どのように彼らが閉じます参照してください。
これはまさに私が必要としているもの、いやむしろBuy and Sellにのみ 必要なものだ。私のシンプルな戦略にとって、最も重要なことは、オープンポジションが互いのクローズ条件に干渉しないことです。配列がなくても大丈夫かも?どうやって作るのか、どうやって対処するのか、私には理解できないのです。スクリーンショットを見れば、私の状況がよくわかるかもしれませんね。
すべてがシンプルでクリアなコードのように見えますが、唯一混乱するケースです。
売り注文と買い注文の会計処理を分ける必要がある場合、2つの配列とそれぞれに2つのカウンタを宣言します。
int g_nBuyOrdersCnt, g_nSellOrdersCnt; OrderInfo arrstBuyOrderInfo[MAX_ORDERS_CNT], arrstSellOrderInfo[MAX_ORDERS_CNT];その結果、データ収集のサイクルは以下のようになる。
あとはExpert Advisorで以下のようにして、買い注文か売り注文かを判断するだけです。
結局、アレイはなくてもいいのか?
配列は、各タイプのオーダーが一度に1つ以上存在しないことが予想される場合にのみ、廃止することができます。そして,配列はOrderInfo構造体型の変数(またはサイズ1の配列)に縮退される。
しかし、上の図にあるように、そうではありません。一度に各タイプの注文を複数持つことができます。これがその証拠です。開始します。
これは、注文が閉じられたとき、それが市場価格でないことを示しています。例えば、買いはAskで決済され、売りはBidで決済される。あなたのコードを見ると、クローズ操作の前に注文タイプの チェックがないため、このようなことが起こる可能性があります。
またまたこんばんは。質問の全趣旨
EA(動作中)をマーケットに投入しています。 MT4プラットフォームです。1つのファイルを表示することができます。Expert Advisorのファイルです。検証をパスするはずなのですが、インジケータのないEAなのでパスできません。別々のファイルになっています。Expert Advisorは、4つの指標で動作します。これらはExpert Advisorに何らかの形で接続されている必要があります。パスを指定する、つまりExpert Advisorに書き込む必要があります。どのようなフォームで、どのように行うか教えてください。
私が理解したところでは、「リソース」.Expert Advisorに正しく登録する方法がわかりません。もしかしたら、他の解決策を知っているかもしれません。
ありがとうございました。
バリデーションに失敗したときの内容は以下の通りです。
包括的でとてもわかりやすい回答をありがとうございました。
注文の会計を買いと売りに分ける必要がある場合、2つの配列とそれぞれに2つのカウンタを宣言します。
その結果、データ収集のサイクルは以下のようになる。
あとはExpert Advisorで以下のようにして、買い注文か売り注文かを判断するだけです。
OrderInfo arrstBuyOrderInfo[MAX_ORDERS_CNT], arrstSellOrderInfo[MAX_ORDERS_CNT];OrderInfoには なぜ括弧もなく型も指定されていないのか、そしてこれらはすべてグローバルレベルで宣言されているのでしょうか?
また、注文の可否の判断は、ポジションクローズの 機能に挿入されるのですか?また、配列でポジションを閉じる機能は、何か違うように見えるべきでしょうか?私にとってはちょっと複雑なんです。ありがとうございます。
あなたの例を使おうとしたのですが、コンパイラに悪口を言われました...。
そして、チュートリアルの例にも悪態をつく。